Matrix inverse with svd

33 次查看(过去 30 天)
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

采纳的回答

Christine Tobler
Christine Tobler 2021-6-7
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
  2 个评论
Arnab Paul
Arnab Paul 2023-10-27
What happens to non-square matrix?
is it same as pinv(A)?

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

产品


版本

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by