線性代數導論 - #4 矩陣分解之LU分解的意義、步驟和成立條件
目前我們用於解線性方程組的方法依然是Gauss消元法。在Gauss消元法中,我們將右側向量b與A寫在一起作為一個增廣矩陣進行同步的操作,這就默認了對A與b的操作數是相等的且每換一個b就要重復一遍對A的操作。
然而,在實際情況中,右側向量b經常發生變化。而且,研究發現,Gauss消元法中,對n階矩陣A的消元操作數正比於n3,而對右側向量b的回代操作(包括行變換和恢復成代數方程的形式)數僅僅正比於n2。(操作次數上的相對大小可以根據A與b元素數量的差距進行猜想)
在b不變時,兩種算法上的復雜度差距不明顯,選擇同步操作更為方便直觀。但是,當b變化時,如果我們將對A和對b的操作進行分隔的話,只需對A完成一次完整的消元操作,再對b進行回代操作。這樣可以大大減少操作的次數。
所以,在b變化時,我們先對A單獨進行分解操作。其中的一種分解方法是LU分解。這種方法的優勢在於分解結果中L(上三角矩陣)和U(下三角矩陣)都是三角形矩陣,后續運算比較簡便。而且二者恰好相配,使用計算機進行運算時可以存儲在一個數組中,節約存儲空間。
利用A的LU分解解線性方程組的過程為將Ax=b等價變形成(LU)x=b,根據結合律有L(Ux)=b,再解Ly=b中的y,最后解Ux=y得到線性方程組的解。
LU分解的步驟如下:
1.求U留E:沿用Gauss消元法,將A化為U,不同的是,變換過程中左邊乘上的每一個E都要記錄下來;
2.逆E為L:將用到的E各自求逆(取含變換操作的元素的相反數)再逆序相乘(將消元乘數按照原來的位置寫到一起,再補齊左上-右下對角線上的1和對角線上方的0),乘積即為L:
E求逆的簡便方法和乘積求逆的運算法則在#3中已經提到。
逆序相乘等價於歸置消元乘數於下三角矩陣中是一個常用結論,記憶使用可以簡化運算。
乘積為L的依據是:假設E為所有E的乘積,EA=U可變形為E-1EA=E-1U=IA=A=LU,其中L=E-1。
什么樣的矩陣才能進行LU分解?
具體判定方法沒有給出。不過根據分解的過程,我們可以推定消元過程中不進行行交換的矩陣才能進行LU分解,即默認主元位(k行k列)上的元素均非0。
如果必須進行行交換怎么辦?
Prof. Strang引入了置換的概念,針對n階矩陣,其置換矩陣群含有n!個置換矩陣P也即可能的置換操作。這個矩陣群具有許多特殊的性質,比如P-1=PT,P之間的乘積仍屬於該矩陣群。
置換將在#5中進行詳細介紹。