你如何对功能句柄进行符号区分?

Leb*_*mes 10 matlab

假如我定义以下内容:

g = @(x) x/sqrt(x^2+1)
Run Code Online (Sandbox Code Playgroud)

如何获得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)
Run Code Online (Sandbox Code Playgroud)

但是,我无法弄清楚如何将其转换为函数句柄/在不同点评估.但是,我更喜欢在function_handle上进行区分.

非常感谢你!

贾森

jmb*_*mbr 10

您可以使用matlabFunction将符号方程转换为函数.例如:

syms x1 x2;
f1 = x1^2+x2^2;
Df1 = jacobian(f1, [x1 x2]);
Df1 = matlabFunction(Df1);
Run Code Online (Sandbox Code Playgroud)

然后Df1(0,0)按预期返回[0 0].

matlabFunction函数是Symbolic Math Toolbox的5.2版(R2009a)引入的.

  • @jmbr:由于我们的答案非常相似,我只是删除了我的并将其内容添加到你的. (2认同)