Multiplying by inverse of a matrix

48 visualizzazioni (ultimi 30 giorni)
JPF
JPF il 27 Nov 2020
Commentato: JPF il 27 Nov 2020
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 Commenti
J. Alex Lee
J. Alex Lee il 27 Nov 2020
can you give example values of alpha and X?
JPF
JPF il 27 Nov 2020
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]

Accedi per commentare.

Risposta accettata

James Tursa
James Tursa il 27 Nov 2020
Modificato: James Tursa il 27 Nov 2020
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 Commento
JPF
JPF il 27 Nov 2020
That's great, thank you. I was thrown off by Matlab's recommendation that I just used the backward slash.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Function Creation in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by