假如我定义以下内容:
g = @(x) x/sqrt(x^2+1)
我如何得到g的导数函数,然后我可以用它来评估不同的点?
我尝试了符号数学工具包,并尝试了以下内容:
>> syms x
>> f = x/sqrt(x^2+1)
f =
x/(x^2 + 1)^(1/2)
>> diff(f)
ans =
1/(x^2 + 1)^(1/2) - x^2/(x^2 + 1)^(3/2)
然而,我无法弄清楚如何将其转换为函数句柄/在不同点评估。但是,我更喜欢在function_handle上进行区分。
非常感谢!
杰森
答案 0 :(得分:10)
您可以使用matlabFunction将符号等式转换为函数。例如:
syms x1 x2;
f1 = x1^2+x2^2;
Df1 = jacobian(f1, [x1 x2]);
Df1 = matlabFunction(Df1);
然后Df1(0,0)按预期返回[0 0]。
matlabFunction函数introduced in version 5.2 (R2009a)是Symbolic Math Toolbox的{{3}}。