首先,求导属于符号运算,对于一般的数值型的变量是不能进行求导的。
其次,用@ 定义的匿名函数只是一个函数句柄,必需对其进行调用才能真正使得函数生效。
其实,也并非用@ 定义的函数就不能求导,重要的是满足上面的两点:要调用函数,而且得到的结果是符号表达式,
例如:
syms x y
f=@(x)2*x^2+3;
diff(f(x))
ans =
4*x
或者:
可通过syms将函数句柄转换为符号函数
用diff求导后
再通过matlabFunction转换为函数句柄
clc;clear
f = @(x) 2*x^2+3 % 通过函数句柄建立匿名函数
syms x % 通过符号变量将匿名函数转换为符号函数
y = f(x)
g = matlabFunction(diff(y)) % 通过matlabFunction将符号函数转换为匿名函数(function_handle)