私はスカラー関数を持っていますが、これは反復計算によって得られます。私は行列の要素に対して、値の微分(方向性の導関数の発見)を望みます。この場合、どのように有限差分近似を採用すればよいですか?この場合、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
がx_{ij}
は行列の要素を示し、X_dot
がマトリックスの勾配X
@Adriaan OK、編集。しかし、これは単なる仮説的な例です。返信いただきありがとうございます。 – vidyarthi