奇异值分解和特征值分解

matlab使用过程中,总会遇到这两种分解方式,而且文献里面有时候完成的目标相同,使用的分解方式确不一样,今天做个小测试,把这两种分解方式弄清楚一些。

clc;
clear all;
m=3;n=5;

P=randn(m,n);
P=P*diag(1./sqrt(diag(P'*P)));

G=P'*P;
[U1 V1]=eig(G)
[U2 S2 V2]=svd(G)


(1)分解对称矩阵

U1 =

 

   0.6927   -0.1214   -0.0361  -0.5642   -0.4310

  -0.3936   -0.6736    0.2685   0.0727   -0.5603

   0.3349   -0.1639   -0.5991   0.6672   -0.2388

   0.1786    0.5323    0.5762   0.4019   -0.4372

   0.4704   -0.4704    0.4855   0.2640    0.5021

 

 

V1 =

 

  -0.0000         0         0         0        0

        0    0.0000         0         0         0

        0         0    0.6022         0         0

        0         0         0   1.3739         0

        0         0         0         0   3.0240

SVD分解结果

U2 =

 

  -0.4310    0.5642   -0.0361   0.5807    0.3967

  -0.5603   -0.0727    0.2685   0.1886   -0.7570

  -0.2388   -0.6672   -0.5991   0.3542    0.1165

  -0.4372   -0.4019    0.5762  -0.2438    0.5058

   0.5021   -0.2640    0.4855   0.6651   -0.0083

 

 

S2 =

 

   3.0240         0         0         0         0

        0    1.3739         0         0         0

        0         0    0.6022         0         0

        0         0         0   0.0000         0

        0         0         0         0   0.0000

 

V2 =

 

  -0.4310    0.5642   -0.0361   0.6675    0.2212

  -0.5603   -0.0727    0.2685  -0.4877    0.6090

  -0.2388   -0.6672   -0.5991   0.3074    0.2110

  -0.4372   -0.4019    0.5762   0.2544   -0.5005

比较发现,

特征值分解G=U1*V1*U1’;特征值由小到大排列

奇异值分解G=U2*S2*V2;特征值由大到小排列

G的秩为3;

特征向量排序也不同

G的秩为3;

U1(:,3)=U2(:,3);U1(:,4)=U2(:,2);U1(:,5)=U2(:,1)

U2(:,1:3)=V2(:,1:3); U2(:,4)<>V2(:;4);U2(:,5)<>V2(:;5)

如果将特征值分解后的对角矩阵重新排序,那么特征向量的列向量就可以一一对应起来了。

[U11 V11]=eig(G);
[Y I]=sort(diag(V11),'descend');
U11=U11(:,I);
U11
diag(Y)

结果如下:

U11 =


   -0.4310   -0.5642   -0.0361   -0.1214    0.6927
   -0.5603    0.0727    0.2685   -0.6736   -0.3936
   -0.2388    0.6672   -0.5991   -0.1639    0.3349
   -0.4372    0.4019    0.5762    0.5323    0.1786
    0.5021    0.2640    0.4855   -0.4704    0.4704

diag(Y)


ans =


    3.0240         0         0         0         0
         0    1.3739         0         0         0
         0         0    0.6022         0         0
         0         0         0    0.0000         0
         0         0         0         0   -0.0000

这样与SVD分解就能一致起来了!

(2)非对称矩阵,特征值分解要求必须是方阵

clc;
clear all;
m=5;n=5;
P=randn(m,n);
P=P*diag(1./sqrt(diag(P'*P)));
G=P;
[U1 V1]=eig(G)
[U2 S2 V2]=svd(G)

U1 =


  -0.3073            -0.3756 + 0.3105i  -0.3756 - 0.3105i   0.3664            -0.5050          
  -0.8214             0.0800 - 0.1303i   0.0800 + 0.1303i  -0.1812            -0.0127          
   0.2831             0.3275 + 0.4124i   0.3275 - 0.4124i   0.4453            -0.3471          
  -0.1292             0.5830             0.5830             0.7849             0.2298          
  -0.3661             0.2809 + 0.2074i   0.2809 - 0.2074i  -0.1361             0.7560          




V1 =


   0.8938                  0                  0                  0                  0          
        0            -0.4582 + 0.8742i        0                  0                  0          
        0                  0            -0.4582 - 0.8742i        0                  0          
        0                  0                  0            -0.5291                  0          
        0                  0                  0                  0            -0.0545          

特征值分解,发现对角矩阵排列无序。

U2 =


   -0.4595   -0.1608    0.3474   -0.7894    0.1388
    0.1069    0.3863    0.7315    0.0852   -0.5449
    0.3297   -0.7561   -0.0367   -0.1497   -0.5439
    0.7814    0.2970   -0.0601   -0.5059    0.2042
    0.2411   -0.4063    0.5825    0.3022    0.5884




S2 =


    1.6615         0         0         0         0
         0    1.0989         0         0         0
         0         0    0.9115         0         0
         0         0         0    0.4472         0
         0         0         0         0    0.0337




V2 =


    0.4502   -0.2923    0.6150    0.3385    0.4681
   -0.2075    0.6574    0.6351   -0.3474    0.0269
    0.3158    0.6844   -0.3833    0.4304    0.3159
   -0.5539    0.0286    0.2141    0.7549   -0.2769
    0.5898    0.1148    0.1603    0.0979   -0.7770

奇异值分解,发现U2和V2的行向量和列向量关系不大,奇异值和特征值好像也没有任何关系。这样的话,重新排序意义也不大。
只有针对实对称矩阵,特征值分解,然后按照降续排列才能和奇异值建立联系,使得对角矩阵一致,使得特征向量能够一一对应起来。

你可能感兴趣的:(奇异值分解和特征值分解)