在matlab中创建函数句柄

时间:2015-06-04 22:11:14

标签: matlab

N= input('nodes');
e5= ones(N,1);
e4= ones((N-1),1);
A = -2*diag(e5)+diag(e4,1)+diag(e4,-1)
k = sym('k',[N 1])
s = A*k;
f = (A*k)-(sign(k).*((k).^2))
g = diff(f,k)
  

问题是上面看到的代码用一组输入参数(k1,k2)而不是(k)创建了一个函数。并且也没有运行差异化命令。

1 个答案:

答案 0 :(得分:2)

使用f=@(k)

f = @(k)A*k-sign(k).*k.^2
f([3; 2])

要区分,请先使用sym(f)。将k视为标量:

diff(sym(f))

,在这种情况下给出

[ - 2*k*sign(k) - 2*k^2*dirac(k) - 2,   1 - 2*k^2*dirac(k) - 2*k*sign(k)]
[   1 - 2*k^2*dirac(k) - 2*k*sign(k), - 2*k*sign(k) - 2*k^2*dirac(k) - 2]

但我认为这不是你想要的。也许您正在寻找diff(sym(f([k1;k2])),k1)diff(sym(f([k1;k2])),k2)