Matlab-Moore-Penrose广义逆矩阵

>> clear
A=[16 2 3 13;
5 11 10 8;
9 7 6 12;
4 14 15 1]
A =
    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1
>> [U,S,V]=svd(A)
U =
   -0.5000    0.6708    0.5000   -0.2236
   -0.5000   -0.2236   -0.5000   -0.6708
   -0.5000    0.2236   -0.5000    0.6708
   -0.5000   -0.6708    0.5000    0.2236
S =
   34.0000         0         0         0
         0   17.8885         0         0
         0         0    4.4721         0
         0         0         0    0.0000
V =
   -0.5000    0.5000    0.6708   -0.2236
   -0.5000   -0.5000   -0.2236   -0.6708
   -0.5000   -0.5000    0.2236    0.6708
   -0.5000    0.5000   -0.6708    0.2236
>> for i=1:3
S(i,i)=1/S(i,i);
end
>> S
S =
    0.0294         0         0         0
         0    0.0559         0         0
         0         0    0.2236         0
         0         0         0    0.0000
>> pinv(A)
ans =
    0.1011   -0.0739   -0.0614    0.0636
   -0.0364    0.0386    0.0261    0.0011
    0.0136   -0.0114   -0.0239    0.0511
   -0.0489    0.0761    0.0886   -0.0864
>> V*S*U'
ans =
    0.1011   -0.0739   -0.0614    0.0636
   -0.0364    0.0386    0.0261    0.0011
    0.0136   -0.0114   -0.0239    0.0511
   -0.0489    0.0761    0.0886   -0.0864
>> 

伪逆和奇异值之间有关系的,S,V,D刚好反过来的就可得到广义逆

A=V*S*D';

pinv(A)=D*s*V';

其中s是S的倒数(其中S的非零项取倒数,零项保持不变,得到小s

你可能感兴趣的:(Math)