SVD算法的全面介绍
促进人们研究SVD并且应用SVD比较早的应该是最小二乘法问题了,在前一份关于QR分解的报告已经对LS问题进行了一些介绍,这里继续讨论SVD在LS问题中的应用。
LS问题即相当于,设A Rm n(m n),b Rm,求x Rn使得 Ax b2 min{Av b2:v Rn}.……(2.1) 假设已知矩阵A有式子(1.1)得到的SVD分解式为U VT,U和V分别为m,n阶正交方阵,而 为和A具有相同维数的对角矩阵,那么我们可以得到[4]:
Ax b U VTx b
U( VTx) U(UTb)......(2.2)
U( y c)
其中y VTx,c UTb。
因为U是一正交矩阵,所以Ax b2 ( y c)2 y c2,从而把原
最小二乘法问题化为求使 y c2最小的y这一最小二乘法问题,因为 为对角矩阵,所以使得新的这一最小二乘法问题简单的多,接着将对此仔细分析[4]。
假设矩阵A的秩为r,则有:
1y1 c1 1y1
ryr cr ryr
y 0 , y c cr 1
cr 2 0
c 0
m m2
可知yi ci/ i,(i 1,2,...,r)使得 y c达到它的最小长度 ci ,并且可
i r 1
见当r m时,上面的这一长度为0,也就是当矩阵A的列张成 m空间时最小二乘法问题可以无误差地求解。而当r n时,yk 1,...,yn可以任意取,而
1/2
不影响 y c的长度。 我们将对 转置并且对非零的对角元素求逆所得到的矩阵定义为 ,那么y c的前r个元素将等于ci/ i,(i 1,2,...,r),并且其余的元素为0。并且由y VTx,c UTb,容易得到: x V UTb......(2.3)
由此得到的是LS问题的最小范数解。 而文献[3]中还给出了一般通解的形式如下: x V UTb V2w......(2.4)
其中V2如前定义,而w是任意的n r维向量。