1. 程式人生 > 其它 >奇異值分解的一道題

奇異值分解的一道題

技術標籤:研矩陣+高代+代基

A = U Σ V T A=U\Sigma V^T A=UΣVT

  • 我先用
A=[36    -6     6;2    13    22;22    38   -13; 4    26    44]
[X,B] =eig(A'*A)
  • 算出了 V V V的每一列!
    • 隱藏在X變數的每一列
>> [X,B] =eig(A'*A)

X =

   -0.6667   -0.6667    0.3333
    0.6667   -0.3333    0.6667
   -0.3333    0.6667    0.6667


B =

   1.0e+03 *
1.1250 0 0 0 2.0250 0 0 0 3.6000

  • 然後求出了U的三列!
  • 必須用這種方法去求!
  • 記得標準化哦!
>> A*X(:,1)

ans =

  -30.0000
   -0.0000
   15.0000
   -0.0000

>> A*X(:,2)

ans =

  -18.0000
    9.0000
  -36.0000
   18.0000

>> A*X(:,3)

ans =

   12.0000
   24.0000
   24.0000
   48.0000

  • 最後求得U的0對應的特徵向量!
[X,B] =
eig(A*A') A = 36 -6 6 2 13 22 22 38 -13 4 26 44 X = -0.0000 0.8944 0.4000 -0.2000 -0.8944 -0.0000 -0.2000 -0.4000 -0.0000 -0.4472 0.8000 -0.4000 0.4472 0 -0.4000 -0.8000 B = 1.0e+03 * -0.0000 0 0 0 0 1.1250 0 0 0
0 2.0250 0 0 0 0 3.6000

檢測做的對不對!

    U=[1/5 -2/5    -2/sqrt(5)    0; 
       2/5  1/5      0        2/sqrt(5); 
       2/5  -4/5    1/sqrt(5)    0; 
       4/5   2/5       0    -1/sqrt(5)]

  
   V =[1/3 -2/3  -2/3; 
       2/3 -1/3  2/3; 
       2/3 2/3   -1/3]
    sigma = [60 0 0 ;0 45 0  ; 0 0 sqrt(1125) ; 0 0 0 ]
    
    U*sigma*V'