4.3 高斯消元法
4.3 高斯消元法
當可逆矩陣 P?1P^{-1}P?1 取單位下三角矩陣 LLL 時,即矩陣對角線元素均為 111 ,得矩陣的 LULULU 分解。
重要性質 矩陣 LULULU 分解 矩陣 AAA 分解為單位下三角矩陣和上三角矩陣的乘積 A=LUA=LUA=LU。
此時方程 Ax=bA\mathbf{x}=\mathbfAx=b 變為
L(Ux)=by=UxLy=bL(U\mathbf{x})=\mathbf\\ \mathbf{y}=U\mathbf{x} \\ L\mathbf{y}=\mathbf L(Ux)=by=UxLy=b
即先解單位下三角方程 Ly=bL\mathbf{y}=\mathbfLy=b 得到 y\mathbf{y}y ,再解上三角方程 y=Ux\mathbf{y}=U\mathbf{x}y=Ux 得到 x\mathbf{x}x ,原方程等價于解兩個簡單的三角方程。公式表示為 x=U?1L?1b\mathbf{x} = U^{-1}L^{-1}\mathbfx=U?1L?1b ,由于三角矩陣很容易計算逆矩陣,故只要得到矩陣的 LULULU 分解,就可快速求得解。三角方程解存在且唯一的條件是三角陣對角線元素均不等于 000 ,則矩陣 AAA 可逆條件是矩陣 UUU 的對角線元素均不等于 000 ,且 A?1=U?1L?1A^{-1}=U^{-1}L^{-1}A?1=U?1L?1 。
如何得到矩陣的 LULULU 分解呢?根據矩陣乘法第 444 種計算方式,采用待定系數法可計算兩個三角矩陣的元素。先計算上三角矩陣第 111 行元素,然后是單位下三角矩陣第 111 列元素;接著計算上三角矩陣第 222 行元素,然后是單位下三角矩陣第 222 列元素;依次類推即可。這個計算方法是計算機友好的,方便程序實現,效率也更高,但不是人類友好的,不直觀。本書不打算推導該公式,讀者可自行推導或查找網絡資料。
我們介紹更直觀的高斯消元法進行矩陣 LULULU 分解,以 333 元一次方程為例介紹。例如方程為
2x+4y?2z=2?14x+9y?3z=8?2?2x?3y+7z=10?32x + 4y - 2z = 2 \cdots 1 \\ 4x + 9y - 3z = 8 \cdots 2 \\ -2x - 3y + 7z = 10 \cdots 3 2x+4y?2z=2?14x+9y?3z=8?2?2x?3y+7z=10?3
A=[24?249?3?2?37]b=[2810]A=\left[ \begin{matrix} 2 & 4 & -2\\ 4 & 9 & -3\\ -2 & -3 & 7 \end{matrix} \right] \mathbf=\left[ \begin{matrix} 2 \\ 8 \\ 10 \end{matrix} \right] A=???24?2?49?3??2?37????b=???2810????
我們目的是解不變的前提下,矩陣 AAA 變換成上三角陣。理論基礎是:任意方程乘以不為零的數,加到任意方程后,解不變。通過合理選擇數值,每次使矩陣左下角某個元素變為 000 。具體為,方程 111 乘以 ?2-2?2 加到方程 222 ,方程 222 變為 $(2*(-2)+4)x + (4*(-2)+9)y + (-2*(-2)+(-3))z = 2*(-2)+8, 0x + y + z = 4 $ 。方程 111 乘以 111 加到方程 333 ,方程 333 變為 $(2*(1)+(-2))x + (4*(1)+(-3))y + (-2*(1)+7)z = 2*(1)+10, 0x + y + 5z = 12 $ 。方程變為,
2x+4y?2z=2?10x+y+z=4?20x+y+5z=12?32x + 4y - 2z = 2 \cdots 1 \\ 0x + y + z = 4 \cdots 2 \\ 0x + y + 5z = 12 \cdots 3 2x+4y?2z=2?10x+y+z=4?20x+y+5z=12?3
方程系數第一列下面均為 000 。
方程 222 乘以 ?1-1?1 加到方程 333 ,方程 333 變為 (1?(?1)+1)y+(1?(?)+5z=4?(?1)+12,0x+0y+4z=8(1*(-1)+1)y + (1*(-)+5z = 4*(-1)+12, 0x + 0y + 4z = 8(1?(?1)+1)y+(1?(?)+5z=4?(?1)+12,0x+0y+4z=8 。方程變為,
2x+4y?2z=2?10x+y+z=4?20x+0y+4z=8?32x + 4y - 2z = 2 \cdots 1 \\ 0x + y + z = 4 \cdots 2 \\ 0x + 0y + 4z = 8 \cdots 3 2x+4y?2z=2?10x+y+z=4?20x+0y+4z=8?3
U=[24?2011004]U=\left[ \begin{matrix} 2 & 4 & -2\\ 0 & 1 & 1\\ 0 & 0 & 4 \end{matrix} \right] U=???200?410??214????
解為 x=?1,y=2,z=2x=-1,y=2,z=2x=?1,y=2,z=2 。
上面操作過程中,變量 x,y,zx,y,zx,y,z 實際上并沒有參與運算,故為了簡潔,可以省略。向量 b\mathbfb 和矩陣 AAA 列向量進行相同的操作,故可把兩者合并為一個矩陣,稱為增廣矩陣。
定義 增廣矩陣 方程 Ax=bA\mathbf{x}=\mathbfAx=b 的矩陣 AAA 列向量組和向量 b\mathbfb 合并成的矩陣 [A,b][A ,b][A,b] 。
上面方程的增廣矩陣為
[A,b]=[24?2249?38?2?3710][A, b] = \left[ \begin{matrix} 2 & 4 & -2 & 2\\ 4 & 9 & -3 & 8\\ -2 & -3 & 7 & 10 \end{matrix} \right] [A,b]=???24?2?49?3??2?37?2810????
消元操作可直接在增廣矩陣上進行,更簡潔方便。
對于 nnn 階矩陣,第一階段:第一次操作,方程 111 乘以 ?a21/a11-a_{21}/a_{11}?a21?/a11? ,加到方程 222 ,使 a21a_{21}a21? 為 000 ;第二次操作,方程 111 乘以 ?a31/a11-a_{31}/a_{11}?a31?/a11? ,加到方程 333 ,使 a31a_{31}a31? 為 000 ;依次類推,第 i?1i-1i?1 次操作,方程 111 乘以 ?ai1/a11-a_{i1}/a_{11}?ai1?/a11? ,加到方程 iii ,使 ai1a_{i1}ai1? 為 000 ,直到 n?1n-1n?1 次操作,使矩陣第一列對角線下方均為 000 。
第二階段:第一次操作,方程 222 乘以 ?a32/a22-a_{32}/a_{22}?a32?/a22? ,加到方程 333 ,使 a32a_{32}a32? 為 000 ;第二次操作,方程 222 乘以 ?a42/a22-a_{42}/a_{22}?a42?/a22? ,加到方程 444 ,使 a42a_{42}a42? 為 000 ;依次類推,第 i?2i-2i?2 次操作,方程 222 乘以 ?ai2/a22-a_{i2}/a_{22}?ai2?/a22? ,加到方程 iii ,使 ai2a_{i2}ai2? 為 000 ,直到 n?2n-2n?2 次操作,使矩陣第 222 列對角線下方元素均為 000 。注意,此時 aija_{ij}aij? 的值不是原始值,是第一階段操作后矩陣的值。
以此類推,第 jjj 階段:第一次操作,方程 jjj 乘以 ?aj+1,j/ajj-a_{j+1,j}/a_{jj}?aj+1,j?/ajj? ,加到方程 j+1j+1j+1 ,使 aj+1,ja_{j+1,j}aj+1,j? 為 000 ;第二次操作,方程 jjj 乘以 ?aj+2,j/ajj-a_{j+2,j}/a_{jj}?aj+2,j?/ajj? ,加到方程 j+2j+2j+2 ,使 aj+2,ja_{j+2,j}aj+2,j? 為 000 ;依次類推,直到 n?jn-jn?j 次操作,使矩陣第 jjj 列對角線下方元素均為 000 。
一直進行到第 n?1n-1n?1 階段,則矩陣 AAA 變換為上三角陣。
總結
- 上一篇: 4.2 矩阵分解概念
- 下一篇: 4.4 高斯消元法的矩阵表示