匿名函数的导数,而不在Matlab中定义符号变量

Msh*_*Msh 2 matlab anonymous-function derivative function-handle

请考虑以下代码:

f = @(x) x.^2; 
Run Code Online (Sandbox Code Playgroud)

是否有可能将函数句柄的导数f作为另一个函数句柄,而不定义符号变量?

Cri*_*ngo 6

不,要获得衍生函数,您需要使用符号工具箱.

但您可以通过创建如下函数来获得近似值(有限差分近似):

f = @(x) x.^2;
d = 1e-6;
df = @(x) (f(x+d)-f(x))/d;
Run Code Online (Sandbox Code Playgroud)

d这里确定近似的精度.如果你太小,你将最终进入浮点舍入错误域,所以要小心!

测试:

x = -2:0.01:2;
max(abs(df(x) - 2*x))  % returns 1.0006e-06
Run Code Online (Sandbox Code Playgroud)

  • 或者甚至更好,使用更高阶的方案,或者至少使用中心差异`@(x)(f(x + d)-f(xd))/(2*d)` - 允许你提高相同的准确度D'.这是正确的方法 (3认同)