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)的函數。也沒有運行分化指令。
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)的函數。也沒有運行分化指令。
使用[email protected](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)
?
確定創建函數,但不區分它。 –
如果你給出你想要的答案,我會嘗試讓Matlab得到它。如果你想把'k'作爲一個向量,你可能想要考慮組件,不是嗎? – Ramashalanka
diff(f)中的問題也 –