Matrix inverse with svd
    14 views (last 30 days)
  
       Show older comments
    
    Elie Hatem
 on 7 Jun 2021
  
    
    
    
    
    Commented: Arnab Paul
 on 27 Oct 2023
            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:
inverse with 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:
inverse with inv:
   -0.2000    0.1750   -0.0250
   -0.1000    0.0250    0.4250
    0.3000   -0.0750   -0.2750
Can someone tell me what I 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
0 Comments
Accepted Answer
  Christine Tobler
    
 on 7 Jun 2021
        Use one of
A = [ 2 4 6; 8 5 7 ; 0 3 1]
[U,S,V] = svd(A);
V*inv(S)*U'
V*(S\U')
% The formula you're using above puts the parentheses in a different place
% than you think:
V*S \ U'
(V*S) \ U'
2 Comments
More Answers (0)
See Also
Categories
				Find more on Linear Algebra 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!