Difference between Singular Value Decomposition and Smith Decomposition
9 ビュー (過去 30 日間)
古いコメントを表示
Siddhanth Sunil Shah
2022 年 1 月 8 日
コメント済み: Christine Tobler
2022 年 1 月 12 日
Is there any difference between Singular Value Decomposition and Smith Decomposition?
Is there any relation between the two or they are one and the same thing?
I know Smith decomposition can be applied to only square matrices (in Matlab) and SVD is applicable to any matrix.
However if we take any mxn matrix and derive the SVD and Smith forms, then would they be the same or different?
6 件のコメント
Christine Tobler
2022 年 1 月 12 日
Thank you both for the explanations, I have passed this information on to colleagues in the Symbolic Toolbox.
採用された回答
John D'Errico
2022 年 1 月 8 日
編集済み: John D'Errico
2022 年 1 月 8 日
How does this apply to MATLAB? This really is a question purely about linear algebra.
Are they the same? No, they are not. Yes, they look somewhat alike in what they return, ALMOST.
The smithForm applies ONLY to square matrices. But also, it applies ONLY to integer valued matrices. READ THE HELP!
help smithForm
Next, try it out. Don't know if they are different? TRY IT.
A = magic(3)
[U,S,V] = svd(A)
[U2,S2,V2] = smithForm(A)
They don't look the same to me. But then I do need a new set of glasses.
Finally, if you try using smithform even on a square matrix that has non-integer elements, it will fail.
A = randn(2)
svd(A)
smithForm(A)
The Smith normal form is designed to solve a totally different set of problems compared to when one would use the svd. They are different tools, with different properties, different purposes, and different results.
2 件のコメント
Paul
2022 年 1 月 8 日
編集済み: Paul
2022 年 1 月 8 日
As stated in the Help, the function smithForm() also applies to symbolic, polynmomial matrices, not just integer valued matrices.
While true that the smithForm() function is limited to square matrices, it's worth pointing out that that is a limitation of Matlab's implementation and not of the Smith form in general, as shown in the wikipedia link.
As shown in the Help, this line should be
%[U2,S2,V2] = smithForm(A)
[U2,V2,S2] = smithForm(A)
which, of course, wouldn't change the conclusion that Smith and SVD are different.
As an aside, I'm not too surprised that smithForm() accepts a double as input, but I am surprised it returns double (not sym) as output.
John D'Errico
2022 年 1 月 8 日
Agreed, as part of the symbolic TB, it would make sense for it to return a symbolic result.
I do wish they had chosen different names for the return variables. While it is completely irrelevant what they call the variables, people will see U,S,V, and get confused, thinking the two are the same.
その他の回答 (1 件)
参考
カテゴリ
Help Center および File Exchange で Linear Algebra についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!