SVD算法的全面介绍
是一个超椭球面,它的n个半轴长正好是A的n个奇异值 1 2 ... n 0,这些轴所在的直线正好是A的左奇异向量所在的直线,它们分别是对应的右奇异向量所在直线的象。
(对于m n的情况,我们可以先对A转置,然后进行一般地我们假设m n,
奇异值分解,最后对所求得的SVD分解式进行转置就可以得到原式SVD分解式),此时我们对(1.1)进行化简将U表示为:
U (U1,U2),…(1.2)
则可以得到更加细腻的SVD分解式[2,3]: A U1 VT…(1.3) 其中U1具有n列m维正交向量, V和(1.1)式中的定义相同; diag( 1, 2,..., n),并且 1 2 ... n 0为矩阵A的奇异值。
二、 SVD应用
在现代科学计算中SVD具有广泛的应用,在已经比较成熟的软件包LINPACK中列举的应用有以下几点[3]:
(1) 确定矩阵的秩(rank)
假设矩阵A的秩为r,那么A的奇异值满足如下式子 1 ... r r 1 ... n 0;
反之,如果 r 0,且 r 1 ... n 0,那么矩阵A的秩为r,这样奇异值分解就可以被用来确定矩阵的秩了。 事实的计算中我们几乎不可能计算得到奇异值正好等于0,所以我们还要确定什么时候计算得到的奇异值足够接近于0,以致可以忽略而近似为0。关于这个问题,不同的算法有不同的判断标准,将在给出各种算法的时候详细说明。
(2) 确定投影算子
假设矩阵A的秩为r,那么我们可以将(1.3)式中的U1划分为以下的形式
(1)
U1 U1(1),U2
其中U1(1)为m r的矩阵,并且U1(1)的列向量构成了矩阵A的列空间的正交向
量基。
容易得到PA U1(1)U1(1)T为投影到矩阵A的列空间上的正交投影算子;而
(1)(1)
PA (U2,U2)(U2,U2)T则是到矩阵A列空间的正交补空间上的投影。
同理如果将V划分为以下的形式 V V1,V2
其中V1为n r的矩阵,则V1的列向量构成矩阵A的行空间的正交向量
T T
基。且RA VV11为投影到矩阵A的行空间上的正交投影算子;而RA V2V2则是到矩阵A行空间的正交补空间上的投影。 (3) 最小二乘法问题(LS 问题)