Multiplying by inverse of a matrix
48 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Réponse acceptée
James Tursa
le 27 Nov 2020
Modifié(e) : James Tursa
le 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.
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Function Creation dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!