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)创建了一个函数。并且也没有运行差异化命令。
答案 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)
?