矩阵的分解——LU分解
LU分解
LU分解是矩陣分解的一種,將一個(gè)矩陣分解為一個(gè)下三角矩陣和一個(gè)上三角矩陣的乘積,有時(shí)需要再乘上一個(gè)置換矩陣。
LU分解可以被視為高斯消元法的矩陣形式。在數(shù)值計(jì)算上,LU分解經(jīng)常被用來(lái)解線性方程組、且在求逆矩陣和計(jì)算行列式中都是一個(gè)關(guān)鍵的步驟。
一、定義
對(duì)于方陣 AAA,AAA 的LU分解是將它分解成一個(gè)下三角矩陣 L 與上三角矩陣 U 的乘積,也就是 A=LUA=LUA=LU。
舉例來(lái)說(shuō)一個(gè)3×3{\displaystyle 3\times 3}3×3的矩陣 AAA ,其 LU 分解會(huì)寫(xiě)成下面的形式:
A=[a11a12a13a21a22a23a31a32a33]=[l1100l21l220l31l32l33][u11u12u130u22u2300u33]{\displaystyle A={\begin{bmatrix}a_{11}&a_{12}&a_{13}\\a_{21}&a_{22}&a_{23}\\a_{31}&a_{32}&a_{33}\\\end{bmatrix}}={\begin{bmatrix}l_{11}&0&0\\l_{21}&l_{22}&0\\l_{31}&l_{32}&l_{33}\\\end{bmatrix}}{\begin{bmatrix}u_{11}&u_{12}&u_{13}\\0&u_{22}&u_{23}\\0&0&u_{33}\\\end{bmatrix}}}A=???a11?a21?a31??a12?a22?a32??a13?a23?a33?????=???l11?l21?l31??0l22?l32??00l33????????u11?00?u12?u22?0?u13?u23?u33?????
LDU 分解
方陣 A 的LDU分解是是將它分解成一個(gè)單位下三角矩陣 L、對(duì)角矩陣 D 與單位上三角矩陣 U 的乘積,即A=LDU{\displaystyle A=LDU}A=LDU
其中單位上、下三角矩陣是指對(duì)角線上全是 1 的上、下三角矩陣。事實(shí)上,LDU 分解可以推廣到 A 是一般的矩陣,而非方陣。
存在性和唯一性
二、算法
LU分解在本質(zhì)上是高斯消元法的一種表達(dá)形式。實(shí)質(zhì)上是將A通過(guò)初等行變換變成一個(gè)上三角矩陣,其變換矩陣就是一個(gè)單位下三角矩陣。這正是所謂的杜爾里特算法(Doolittle algorithm),從下至上地對(duì)矩陣A做初等行變換,將對(duì)角線左下方的元素變成零,然后再證明這些行變換的效果等同于左乘一系列單位下三角矩陣,這一系列單位下三角矩陣的乘積的逆就是L矩陣,它也是一個(gè)單位下三角矩陣。
杜爾里特算法
對(duì)給定的N × N矩陣A=(an,n){\displaystyle A=(a_{n,n})}A=(an,n?)有A(0):=AA^{{(0)}}:=AA(0):=A
然后定義對(duì)于 n=1,...,N?1n = 1,...,N-1n=1,...,N?1 的情況如下:
在第n步,消去矩陣A(n?1)A^{(n-1)}A(n?1)的第n列主對(duì)角線下的元素:將A(n?1)A^{(n-1)}A(n?1)的第n行乘以li,n=?ai,n(n?1)an,n(n?1){\displaystyle l_{i,n}=-{\frac {a_{i,n}^{(n-1)}}{a_{n,n}^{(n-1)}}}}li,n?=?an,n(n?1)?ai,n(n?1)??之后加到第iii行上去。其中i=n+1,…,N{\displaystyle i=n+1,\ldots ,N}i=n+1,…,N。這相當(dāng)于在A(n?1)A^{(n-1)}A(n?1)的左邊乘上一個(gè)單位下三角矩陣:
Ln=[10?1ln+1,n???0lN,n1]{\displaystyle L_{n}={\begin{bmatrix}1&&&&&0\\&\ddots &&&&\\&&1&&&\\&&l_{n+1,n}&\ddots &&\\&&\vdots &&\ddots &\\0&&l_{N,n}&&&1\\\end{bmatrix}}}Ln?=??????????10???1ln+1,n??lN,n??????01???????????
于是,設(shè)A(n)=LnA(n?1){\displaystyle A^{(n)}=L_{n}A^{(n-1)}}A(n)=Ln?A(n?1)經(jīng)過(guò)N-1輪操作后,所有在主對(duì)角線下的系數(shù)都為0了,于是我們得到了一個(gè)上三角矩陣A(N-1),這時(shí)就有:
A=L1?1L1A(0)=L1?1A(1)=L1?1L2?1L2A(1)=L1?1L2?1A(2)=…=L1?1…LN?1?1A(N?1){\displaystyle A=L_{1}^{-1}L_{1}A^{(0)}=L_{1}^{-1}A^{(1)}=L_{1}^{-1}L_{2}^{-1}L_{2}A^{(1)}=L_{1}^{-1}L_{2}^{-1}A^{(2)}=\ldots =L_{1}^{-1}\ldots L_{N-1}^{-1}A^{(N-1)}}A=L1?1?L1?A(0)=L1?1?A(1)=L1?1?L2?1?L2?A(1)=L1?1?L2?1?A(2)=…=L1?1?…LN?1?1?A(N?1)
這時(shí),矩陣A(N?1)A^{(N-1)}A(N?1) 就是U,L=L1?1…LN?1?1{\displaystyle L=L_{1}^{-1}\ldots L_{N-1}^{-1}}L=L1?1?…LN?1?1?。 下三角矩陣Lk{\displaystyle L_{k}}Lk?的逆依然是下三角矩陣,而且下三角矩陣的乘積仍是下三角矩陣,所以L{\displaystyle L}L是下三角矩陣。 于是我們得到分解:A=LU{\displaystyle A=LU}A=LU。
顯然,要是算法成立,在每步操作時(shí)必須有an,n(n?1)≠0{\displaystyle a_{n,n}^{(n-1)}\neq 0}an,n(n?1)??=0。如果這一條件不成立,就要將第n行和另一行交換,由此就會(huì)出現(xiàn)一個(gè)置換矩陣P。這就是為什么一般來(lái)說(shuō)LU分解里會(huì)帶有一個(gè)置換矩陣的原因。
例子:
將一個(gè)簡(jiǎn)單的3×3矩陣A進(jìn)行LU分解:
A=[123257353]{\displaystyle A={\begin{bmatrix}1&2&3\\2&5&7\\3&5&3\\\end{bmatrix}}}A=???123?255?373????
先將矩陣第一列元素中a11a_{11}a11?以下的所有元素變?yōu)?,即
L1A=[100?210?301]×[123257353]=[1230110?1?6]{\displaystyle L_{1}A={\begin{bmatrix}1&0&0\\-2&1&0\\-3&0&1\\\end{bmatrix}}\times {\begin{bmatrix}1&2&3\\2&5&7\\3&5&3\\\end{bmatrix}}={\begin{bmatrix}1&2&3\\0&1&1\\0&-1&-6\\\end{bmatrix}}}L1?A=???1?2?3?010?001????×???123?255?373????=???100?21?1?31?6????
再將矩陣第二列元素中a22a_{22}a22?以下的所有元素變?yōu)?,即
L2(L1A)=[100010011]×[1230110?1?6]=[12301100?5]=U{\displaystyle L_{2}(L_{1}A)={\begin{bmatrix}1&0&0\\0&1&0\\0&1&1\\\end{bmatrix}}\times {\begin{bmatrix}1&2&3\\0&1&1\\0&-1&-6\\\end{bmatrix}}={\begin{bmatrix}1&2&3\\0&1&1\\0&0&-5\\\end{bmatrix}}=U}L2?(L1?A)=???100?011?001????×???100?21?1?31?6????=???100?210?31?5????=U
L=L1?1L2?1=[100210301]×[1000100?11]=[1002103?11]{\displaystyle L=L_{1}^{-1}L_{2}^{-1}={\begin{bmatrix}1&0&0\\2&1&0\\3&0&1\\\end{bmatrix}}\times {\begin{bmatrix}1&0&0\\0&1&0\\0&-1&1\\\end{bmatrix}}={\begin{bmatrix}1&0&0\\2&1&0\\3&-1&1\\\end{bmatrix}}}L=L1?1?L2?1?=???123?010?001????×???100?01?1?001????=???123?01?1?001????
總結(jié)
以上是生活随笔為你收集整理的矩阵的分解——LU分解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 接口报文的构成
- 下一篇: Scheme 语言概要上