Matrix inverse with svd

64 views (last 30 days)
Elie Hatem
Elie Hatem on 7 Jun 2021
Commented: Elie Hatemon 7 Jun 2021
Hello,
I am trying to invert a matrix using svd and \ and comparing the result with inv().
For this matrix:
A = [ 2 4 6; 8 5 7 ; 0 3 1]
I did the svd decomposition as follows:
[U,S,V] = svd(A);
And, I believe the inverse of A can be expressed as :
So, I tried it by writing the code below:
disp('inverse with svd:')
disp(V*S\U')
And, I got this answer:
inversewith svd:
0.0236 0.0440 -0.0528
0.1765 0.1361 0.1922
0.4277 -0.3787 -0.1247
Then, I tried to invert A using inv() as follows:
disp('inverse with inv:')
disp(inv(A))
However, I got a different answer as seen below:
inversewith inv:
-0.2000 0.1750 -0.0250
-0.1000 0.0250 0.4250
0.3000 -0.0750 -0.2750
有人能告诉我吗am doing wrong?
My main goal is that I want to use svd to invert large matrices that may be close to becoming singular.
Thank you

Accepted Answer

Christine Tobler
Christine Tobler on 7 Jun 2021
Use one of
A = [ 2 4 6; 8 5 7 ; 0 3 1]
A = 3×3
2 4 6 8 5 7 0 3 1
[U,S,V] = svd(A);
V*inv(S)*U'
ans = 3×3
-0.2000 0.1750 -0.0250 -0.1000 0.0250 0.4250 0.3000 -0.0750 -0.2750
V*(S\U')
ans = 3×3
-0.2000 0.1750 -0.0250 -0.1000 0.0250 0.4250 0.3000 -0.0750 -0.2750
% The formula you're using above puts the parentheses in a different place
% than you think:
V*S \ U'
ans = 3×3
0.0236 0.0440 -0.0528 0.1765 0.1361 0.1922 0.4277 -0.3787 -0.1247
(V*S) \ U'
ans = 3×3
0.0236 0.0440 -0.0528 0.1765 0.1361 0.1922 0.4277 -0.3787 -0.1247
1 Comment
Elie Hatem
Elie Hatem on 7 Jun 2021
Thank you so much!

Sign in to comment.

More Answers (0)

下载188bet金宝搏


Release

R2020a

Community Treasure Hunt

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

Start Hunting!