Multiplying by inverse of a matrix
조회 수: 48 (최근 30일)
이전 댓글 표시
Hello,
I want to calculate where α is a scalar (it's for calculating the estimated variance of a parameter). Using
alpha*inv(X'X)
gives the correct results but (a) Matlab suggest not doing so (although the backward slash gives the wrong results) and (b) I've always avoided multiplying by the inverse of a matrix due to potential inaccuracy.
Is there a better way?
Thank you
댓글 수: 2
채택된 답변
James Tursa
2020년 11월 27일
편집: James Tursa
2020년 11월 27일
You are essentially "dividing" by the X'*X quantity, so that is what needs to appear on the "bottom" of the slash. E.g.,
>> alpha = 0.5;
>> X = [0.6 0.9; 0.9 0.5];
>> alpha*inv(X'*X)
ans =
2.0377 -1.9031
-1.9031 2.2491
>> (X'*X)\eye(2)*alpha
ans =
2.0377 -1.9031
-1.9031 2.2491
>> alpha*eye(2)/(X'*X)
ans =
2.0377 -1.9031
-1.9031 2.2491
Or you can think of it this way. Start with this definition:
inv(X'*X) * (X'*X) = eye(2)
and solve for the inverse:
inv(X'*X) = eye(2)/(X'*X)
Similarly, starting with this definition:
(X'*X) * inv(X'*X) = eye(2)
yields
inv(X'*X) = (X'*X)\eye(2)
Then just multiply by alpha.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Function Creation에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!