Processing math: 100%

Linear algebra - LU分解

Linear Algebra - LU分解


LU 分解的外表看似平淡無奇,但它可以用來解線性方程,逆矩陣和計算行列式,堪稱是最具實用價值的矩陣分解式之一。

A 為一個 nn 階矩陣。LU 分解是指將 A 表示為兩個 nn 階三角矩陣的乘積

A=LU 其中 L 是下三角矩陣,U 是上三角矩陣,如下例,

[312615973]=[100210341][312011005]

高斯消去法可以通過一連串的矩陣乘法來實現。每一個基本列運算等同於左乘一個基本矩陣,而對應列取代的基本矩陣 Eij 的 (i,j) 元即為 lij

消去程序可用下列矩陣乘法表示:

E32E31E21A=U

因為基本矩陣 Eij 都是可逆的

A=E121E131E132U=LU

存在性


然而,並非任何可逆矩陣都具有 LU 分解形式,例如:A=[0213]。假若 A 可以寫為

A=LU=[10l211][u11u120u22]

則必有 u11=0U 是不可逆的,這與 為 LU=A 可逆矩陣的事實相互矛盾。矩陣 之所 A 以不存在 分解的LU 原因在於 0 占據了 (1,1) 元,但軸元必須不為零才能產生乘數。根據這項觀察,即知可逆矩陣 A 的 LU 分解存在條件是:列運算過程中,0 不得在軸元位置。萬一碰上零軸元的情況,還是有補救辦法,那就是使用列交換運算設法產生其他非零軸元,不過 LU 分解要修改成 PA=LUP 是排列矩陣。例如,

PA=[0110][0213]=[1302]=[1001][1302]=LU.

應用


最後討論 LU 分解的應用。LU 分解不僅僅只是記錄消去過程,它還有一個非常重要的實際用途:LU 分解具備快速求解線性方程 Ax=b 的良好結構。一旦得到了可逆矩陣 A 的 LU 分解 A=LU,我們大可把 A 拋棄,將 Ax=b 改為 L(Ux)=b,再令 y=Ux,原線性方程等價於兩組三角形系統:

Ly=bUx=y. 接著使用兩次迭代即可得到解。上例中,先以正向迭代解出 y

[100210341][y1y2y3]=[10227]{y1=10y2=2y1+22=2y3=3y14y27=15

再以反向迭代解出 ,

[312011005][x1x2x3]=[10215]{x1=(x22x3+10)/3=1x2=x3+2=1x3=15/5=3

對於 階矩陣 ,LU 分解耗費的乘法運算量大約是 O(13n3),與高斯消去法相同。這個數字其實不算太糟,因為兩個 n 階方陣相乘就使用了 n3 次運算。另外,正向迭代或反向迭代的運算量都只有O(12n2) ,遠比 LU 分解來的少。所以如果只要解出單一線性系統 ,直接用消去法化簡增廣矩陣 [A|b] 和 LU 分解的兩段式解法兩者之間並沒有多大差別,但如果稍後還要解多個係數矩陣相同但常數向量改變的系統 ,LU 分解便能夠派上用場。舉例來說,LU 分解可以用來計算逆矩陣 A1。將矩陣方程 看成三個線性方程:

Ax1=[100], Ax2=[010], Ax3=[001]

解出的未知向量 xii=1,2,3,就是逆矩陣 A1 行向量。LU 分解還可以用來計算 n×n 階行列式。根據矩陣乘積的行列式可乘公式

detA=det(LU)=(detL)(detU)

三角矩陣的行列式等於主對角元乘積,因此 detL=1,推論

detA=detU=ni=1uii

方陣 A 的行列式即為消去法所得到的上三角矩陣 U 主對角元之積 (關於其他行列式計算方法的介紹,請見“Chiò 演算法──另類行列式計算法”)。

參考


LU 分解| 線代啟示錄