SVD解線性方程組(非齊次)
阿新 • • 發佈:2019-02-17
對於任一給定的矩陣A(m * n),都存在這樣的分解:
其中, U是一個m * m的酉矩陣,S是一個m * n的矩陣,除了主對角線上的元素以外全為0,主對角線上的每個元素都稱為奇異值, V是一個n * n的酉矩陣。
求解解線性方程組
Ax=b
svd(A) = USV',令X=V'x,B=U'b,則有SX=B,由於S是對角陣,可輕易求出X,又由於V是正交陣,則x=VX,故而方程組得以解出。
Ax= b
[U,S,V]=svd(A)
B = U'b
此時令SX=B,X易求出為X[i]=B[i]/S[i,i]
則x=VX
最終可以驗證,x是Ax=b的解
SVD的一些性質
對於奇異值,它跟我們特徵分解中的特徵值類似,在奇異值矩陣中也是按照從大到小排列,而且奇異值的減少特別的快,在很多情況下,前10%甚至1%的奇異值的和就佔了全部的奇異值之和的99%以上的比例。也就是說,我們也可以用最大的k個的奇異值和對應的左右奇異向量來近似描述矩陣。也就是說:
其中k要比n小很多,V是n*k維,其轉置為k*n維。
還以上例為例,上例中S以是按大到小排列,故此處直接取U的前兩列,即U1(4,2),S取左上角,即S1(2,2),取V的前兩列,即V1(3,2),否則要按對應關係取
B1 = U1' * b
此時令S1*X1=B1,由於S1是對角陣,故而X1易求出為X1[i]=B1[i]/S1[i,i]
則x = V1 * X1
最終可以驗證,x是Ax=b的近似解