不使用 Symbolic Math Toolbox 来微分函数

Differentiate function without Symbolic Math Toolbox

如果我想区分一个函数,我会这样做:

syms x
f(x) = sin(x^2);
df = diff(f)

,但这需要使用符号数学工具箱(对于 syms 函数)。 在不使用 Symbolic Toolbox 的情况下,是否有此方法的解决方法(替代方法)?

如果您有一个 数值向量 并且想要微分它,那么 gradient 函数是您的朋友。

如果你想区分一个符号表达式那么符号数学工具箱是进入Matlab的唯一途径。如果纸笔和 wolframalpha.com 不能为您服务,则无法购买工具箱或使用 Wolframs Mathematica、Maple、Maxima、Sympy、Sage 等替代品。

https://www.mathworks.com/matlabcentral/fileexchange/59438-symbolic-derivatives

在上面的 link 中,您会发现一个函数需要字符串 'sin(x^2)' 作为输入,并为您提供类似 'cos(x^2)*2*x' 的内容(即也是一个字符串)。然后,您可以使用标准 Matlab 的 eval() 在任何 x 点对导数进行数值计算。