matlab 用句柄传入的函数如何应用diff函数对其求导数?或者有无替代方法把一个函数传进来并且求导。

2025-04-05 13:36:57
推荐回答(3个)
回答1:

可通过syms将函数句柄转换为符号函数
用diff求导后
再通过matlabFunction转换为函数句柄    

clc;clear
f = @(x) x.^2 + 2.* x + 1    % 通过函数句柄建立匿名函数
syms x                       % 通过符号变量将匿名函数转换为符号函数
y = f(x)
g = matlabFunction(diff(y))  % 通过matlabFunction将符号函数转换为匿名函数

回答2:

确实没有办法直接对函数句柄求导,除非用符号函数。
我的建议是,直接给牛顿法函数传入导函数的句柄。接口如下:
function Lab_4_2(f, df, x0)

% f: 原函数句柄,例如@sin
% df: 导函数句柄,例如@cos
% x0: 初始解,例如0.1
...

回答3:

事实上不需要传递函数进去,只需要传递一个式子进去就行(不是function),然后在Newton函数里面syms x 正常求导,需要其导数值的时候调用eval函数就行。