線性代數中的一個核心思想就是矩陣分解,既將一個復雜的矩陣分解為更簡單的矩陣的乘積。常見的有如下分解:
LU分解:A=LU,A是m×n矩陣,L是m×m下三角矩陣,U是m×n階梯形矩陣
QR分解:
秩分解:A=CD , A是m×n矩陣,C是m×4矩陣,D是4×n矩陣。
奇異值分解:A=UDVT
譜分解:
在求解線性方程組中,一個核心的問題就是矩陣的LU分解,我們將一個矩陣A分解為兩個更加簡單的矩陣的復合LU,其中L是下三角矩陣,U是階梯形矩陣。下三角矩陣和上三角矩陣具有非常良好的性質:Lx=y 或者Ux=y 很容易求解。
問題1.對於任意的矩陣A,是否存在LU分解?
定理:如果A行等價於階梯形矩陣U,那么(EnEn-1......E1)A=U,其中的Ei,i=1,2,.....,n是高斯消去矩陣,他們都是下三角矩陣,並且都可逆。
這個定理告訴我們三件事:
1.並不是所有的矩陣都有LU分解的。
2.A=LU=(EnEn-1......E1)-1U=(E1-1E2-1.....En-1)U。
3.這個定理還給出了求解矩陣A-1的一種方法。
數值算法1.Gauss消去
用Gauss消去法將矩陣A行變換為U:
用Gauss消去矩陣將A行變換為U:
數值算法2.Gauss-jardon
過程和Gauss-jardon基本一致,之不多在選擇完最大元之后,將其化為1,這樣就可以通過乘以一個倍數來消去其他行了。
選擇主元
當對某一列進行Gauss消去時,一般都是選擇這一列中絕對值最大的一個元素作為主元,當然這會進行行交換。其好處有一下幾點:
1.在Gauss會代的過程中,不會出現除數為0的情況。
2.減少誤差傳播,這主要是因為乘數小於等於1.
(為何乘數小於等於1,如果選擇這一列中絕對值最大的一個元素作為主元,我們假設這個元素是a,那么乘數等於-b/a,此時|b/a|<=1)。
為什么不用絕對值最小的元素做主元?易知此時乘數的絕對值大於等於1,會增加誤差的傳播累計。
為什么應該避免用接近於0的數做主元?此時乘數可能非常大,參加如下例子: