필자는 반복 계산으로 얻은 스칼라 함수를 가지고 있습니다. 행렬을 기준으로 값의 방향 미분을 구별하고 싶습니다. 이 경우 유한 차분 근사법을 어떻게 사용해야합니까? 이 경우 diff
또는 gradient
이 도움이됩니까? 숫자 파생어 만 필요합니다. I가 일하는 것이 전형적인 코드는 다음과 같습니다매트릭스에 대한 스칼라의 차별화
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_{ij}
행렬의 원소를 나타내고, X_dot
는 X
가 @Adriaan OK 편집. 그러나 이것은 단지 가상의 예일뿐입니다. 귀하의 회신에 감사드립니다. – vidyarthi