如何在指定点评估向量值函数、梯度向量及原函数?求适用命令
在指定点评估向量值函数(梯度)与原函数的MATLAB操作
我来帮你一步步搞定这两个操作,其实用MATLAB的subs函数就能轻松处理,不管是标量函数还是向量值函数都适用:
1. 评估梯度向量grd_f在(x=1, y=2)处的值
首先得先定义好符号变量和梯度向量,然后用subs同时替换多个变量即可:
% 定义符号变量x和y syms x y % 定义梯度向量(这里用分号实现列向量,或者用转置符号'也可以) grd_f = [2*x; 2*y]; % 在指定点替换变量:把{x,y}分别替换成{1,2} grd_f_eval = subs(grd_f, {x, y}, {1, 2});
执行后,grd_f_eval会得到结果[2; 4],就是梯度在(1,2)处的取值。
2. 评估原函数f(x,y)在(x=1, y=2)处的值
操作逻辑和梯度完全一致,同样用subs函数替换变量:
% 定义原函数 f = x^2 + y^2; % 替换变量并计算 f_eval = subs(f, {x, y}, {1, 2});
执行后f_eval会得到结果5(也就是1²+2²=5)。
额外小技巧
如果你之后需要反复评估不同点,也可以把函数转换成匿名函数,调用起来更快捷:
% 把符号函数转成匿名函数 f_anon = matlabFunction(f); grd_f_anon = matlabFunction(grd_f); % 直接调用匿名函数 f_eval = f_anon(1,2); % 输出5 grd_f_eval = grd_f_anon(1,2); % 输出[2;4]
内容的提问来源于stack exchange,提问作者BAYMAX
相关产品推荐
相关产品推荐

