Multiplying by inverse of a matrix

40 ビュー (過去 30 日間)
JPF
JPF 2020 年 11 月 27 日
コメント済み: JPF 2020 年 11 月 27 日
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 件のコメント
J. Alex Lee
J. Alex Lee 2020 年 11 月 27 日
can you give example values of alpha and X?
JPF
JPF 2020 年 11 月 27 日
For example,
alpha = 0.5;
X = [0.6 0.9; 0.9 0.5];
For this I obtain
alpha\(X'*X) = [2.34 2; 2 2.2]
alpha*inv(X'*X) = [2.04 -1.9; -1.9 2.2]

サインインしてコメントする。

採用された回答

James Tursa
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.
  1 件のコメント
JPF
JPF 2020 年 11 月 27 日
That's great, thank you. I was thrown off by Matlab's recommendation that I just used the backward slash.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeFunction Creation についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by