我有一個通過迭代計算獲得的標量函數。我希望區分(找到方向導數)的值相對於矩陣元素。在這種情況下,我應該如何使用有限差分近似。在這種情況下,diff
或gradient
有幫助。請注意,我只需要數值導數。 典型的代碼,我會努力的是:微分矩陣的標量
n=4;
for i=1:n
for x(i)=-2:0.04:4;
for y(i)=-2:0.04:4;
A(:,:,i)=[sin(x(i)), cos(y(i));2sin(x(i)),sin(x(i)+y(i)).^2];
B(:,:,i)=[sin(x(i)), cos(x(i));3sin(y(i)),cos(x(i))];
R(:,:,i)=horzcat(A(:,:,i),B(:,:,i));
L(i)=det(B(:,:,i)'*A(:,:,i)B)(:,:,i));
%how to find gradient of L with respect to x(i), y(i)
grad_L=tr((diff(L)/diff(R)')*(gradient(R))
endfor;
endfor;
endfor;
我知道,grad_L
最後一部分將語法錯誤說法的尺寸不匹配。我該如何着手解決這個問題。注意矩陣變量X
給出的標量函數的f
該梯度或方向導數由nabla(f)=trace((partial f/patial(x_{ij})*X_dot
其中x_{ij}
表示矩陣的元素和X_dot
表示矩陣的梯度X
@Adriaan確定,編輯。但是,這只是一個假設的例子。 – vidyarthi