對角陣的SVD分解結果U一定等於V嗎?

到這個博客爲止,我一直認爲如果K是一個對稱陣,那麼K的svd分解:

[U,S,V]=svd(K)

U和V是肯定相同的。例如:

K=

    0.1590    0.2108    0.3175
    0.2108    1.1254    1.1389
    0.3175    1.1389    1.5209

其svd分解爲:

>> [U,S,V]=svd(K)

U =

   -0.1572    0.4260   -0.8910
   -0.6336   -0.7355   -0.2399
   -0.7575    0.5268    0.3855


S =

    2.5393         0         0
         0    0.1876         0
         0         0    0.0783


V =

   -0.1572    0.4260   -0.8910
   -0.6336   -0.7355   -0.2399
   -0.7575    0.5268    0.3855

可以看出U和V完全相同。但是現在我發現這個常識不對,也就是說對稱陣的SVD分解後U和V不一定相同,例如:

K =

         0         0    0.3175
         0         0    1.1389
    0.3175    1.1389         0
 

其svd分解爲:

[U,S,V]=svd(K)

U =

         0    0.2686   -0.9633
         0    0.9633    0.2686
   -1.0000         0         0


S =

    1.1823         0         0
         0    1.1823         0
         0         0         0


V =

   -0.2686         0   -0.9633
   -0.9633         0    0.2686
         0    1.0000         0

可以看出U和V不同。爲什麼這樣,這個要去查書才知道,這裏我發現有一種方法可緩解這個問題,就是讓對角元素不是0,而是一個非常接近0的數。例如

置K(1,1)=0.0000000001。

K =

    0.0000         0    0.3175
         0         0    1.1389
    0.3175    1.1389         0

>> [U,S,V]=svd(K)

U =

   -0.1899   -0.1899   -0.9633
   -0.6811   -0.6811    0.2686
   -0.7071    0.7071    0.0000


S =

    1.1823         0         0
         0    1.1823         0
         0         0    0.0000


V =

   -0.1899    0.1899   -0.9633
   -0.6811    0.6811    0.2686
   -0.7071   -0.7071    0.0000

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章