Multiplying by inverse of a matrix

40 views (last 30 days)
JPF
JPF on 27 Nov 2020
Commented: JPF on 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 Comments
J. Alex Lee
J. Alex Lee on 27 Nov 2020
can you give example values of alpha and X?
JPF
JPF on 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]

Sign in to comment.

Accepted Answer

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

Sign in to comment.

More Answers (0)

Categories

Find more on Function Creation in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!