4.3 高斯消元法

4.3 高斯消元法

当可逆矩阵 P − 1 P^{-1} P1 取单位下三角矩阵 L L L 时,即矩阵对角线元素均为 1 1 1 ,得矩阵的 L U LU LU 分解。

重要性质 矩阵 L U LU LU 分解 矩阵 A A A 分解为单位下三角矩阵和上三角矩阵的乘积 A = L U A=LU A=LU

此时方程 A x = b A\mathbf{x}=\mathbf{b} Ax=b 变为

L ( U x ) = b y = U x L y = b L(U\mathbf{x})=\mathbf{b}\\ \mathbf{y}=U\mathbf{x} \\ L\mathbf{y}=\mathbf{b} L(Ux)=byUxLy=b
即先解单位下三角方程 L y = b L\mathbf{y}=\mathbf{b} Ly=b 得到 y \mathbf{y} y ,再解上三角方程 y = U x \mathbf{y}=U\mathbf{x} yUx 得到 x \mathbf{x} x ,原方程等价于解两个简单的三角方程。公式表示为 x = U − 1 L − 1 b \mathbf{x} = U^{-1}L^{-1}\mathbf{b} x=U1L1b ,由于三角矩阵很容易计算逆矩阵,故只要得到矩阵的 L U LU LU 分解,就可快速求得解。三角方程解存在且唯一的条件是三角阵对角线元素均不等于 0 0 0 ,则矩阵 A A A 可逆条件是矩阵 U U U 的对角线元素均不等于 0 0 0 ,且 A − 1 = U − 1 L − 1 A^{-1}=U^{-1}L^{-1} A1=U1L1

如何得到矩阵的 L U LU LU 分解呢?根据矩阵乘法第 4 4 4 种计算方式,采用待定系数法可计算两个三角矩阵的元素。先计算上三角矩阵第 1 1 1 行元素,然后是单位下三角矩阵第 1 1 1 列元素;接着计算上三角矩阵第 2 2 2 行元素,然后是单位下三角矩阵第 2 2 2 列元素;依次类推即可。这个计算方法是计算机友好的,方便程序实现,效率也更高,但不是人类友好的,不直观。本书不打算推导该公式,读者可自行推导或查找网络资料。

我们介绍更直观的高斯消元法进行矩阵 L U LU LU 分解,以 3 3 3 元一次方程为例介绍。例如方程为
2 x + 4 y − 2 z = 2 ⋯ 1 4 x + 9 y − 3 z = 8 ⋯ 2 − 2 x − 3 y + 7 z = 10 ⋯ 3 2x + 4y - 2z = 2 \cdots 1 \\ 4x + 9y - 3z = 8 \cdots 2 \\ -2x - 3y + 7z = 10 \cdots 3 2x+4y2z=214x+9y3z=822x3y+7z=103

A = [ 2 4 − 2 4 9 − 3 − 2 − 3 7 ] b = [ 2 8 10 ] A=\left[ \begin{matrix} 2 & 4 & -2\\ 4 & 9 & -3\\ -2 & -3 & 7 \end{matrix} \right] \mathbf{b}=\left[ \begin{matrix} 2 \\ 8 \\ 10 \end{matrix} \right] A=242493237b=2810

我们目的是解不变的前提下,矩阵 A A A 变换成上三角阵。理论基础是:任意方程乘以不为零的数,加到任意方程后,解不变。通过合理选择数值,每次使矩阵左下角某个元素变为 0 0 0 。具体为,方程 1 1 1 乘以 − 2 -2 2 加到方程 2 2 2 ,方程 2 2 2 变为 $(2*(-2)+4)x + (4*(-2)+9)y + (-2*(-2)+(-3))z = 2*(-2)+8, 0x + y + z = 4 $ 。方程 1 1 1 乘以 1 1 1 加到方程 3 3 3 ,方程 3 3 3 变为 $(2*(1)+(-2))x + (4*(1)+(-3))y + (-2*(1)+7)z = 2*(1)+10, 0x + y + 5z = 12 $ 。方程变为,
2 x + 4 y − 2 z = 2 ⋯ 1 0 x + y + z = 4 ⋯ 2 0 x + y + 5 z = 12 ⋯ 3 2x + 4y - 2z = 2 \cdots 1 \\ 0x + y + z = 4 \cdots 2 \\ 0x + y + 5z = 12 \cdots 3 2x+4y2z=210x+y+z=420x+y+5z=123
方程系数第一列下面均为 0 0 0

方程 2 2 2 乘以 − 1 -1 1 加到方程 3 3 3 ,方程 3 3 3 变为 ( 1 ∗ ( − 1 ) + 1 ) y + ( 1 ∗ ( − ) + 5 z = 4 ∗ ( − 1 ) + 12 , 0 x + 0 y + 4 z = 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 。方程变为,
2 x + 4 y − 2 z = 2 ⋯ 1 0 x + y + z = 4 ⋯ 2 0 x + 0 y + 4 z = 8 ⋯ 3 2x + 4y - 2z = 2 \cdots 1 \\ 0x + y + z = 4 \cdots 2 \\ 0x + 0y + 4z = 8 \cdots 3 2x+4y2z=210x+y+z=420x+0y+4z=83
U = [ 2 4 − 2 0 1 1 0 0 4 ] U=\left[ \begin{matrix} 2 & 4 & -2\\ 0 & 1 & 1\\ 0 & 0 & 4 \end{matrix} \right] U=200410214

解为 x = − 1 , y = 2 , z = 2 x=-1,y=2,z=2 x=1,y=2,z=2

上面操作过程中,变量 x , y , z x,y,z x,y,z 实际上并没有参与运算,故为了简洁,可以省略。向量 b \mathbf{b} b 和矩阵 A A A 列向量进行相同的操作,故可把两者合并为一个矩阵,称为增广矩阵。
定义 增广矩阵 方程 A x = b A\mathbf{x}=\mathbf{b} Ax=b 的矩阵 A A A 列向量组和向量 b \mathbf{b} b 合并成的矩阵 [ A , b ] [A ,b] [A,b]

上面方程的增广矩阵为
[ A , b ] = [ 2 4 − 2 2 4 9 − 3 8 − 2 − 3 7 10 ] [A, b] = \left[ \begin{matrix} 2 & 4 & -2 & 2\\ 4 & 9 & -3 & 8\\ -2 & -3 & 7 & 10 \end{matrix} \right] [A,b]=2424932372810
消元操作可直接在增广矩阵上进行,更简洁方便。

对于 n n n 阶矩阵,第一阶段:第一次操作,方程 1 1 1 乘以 − a 21 / a 11 -a_{21}/a_{11} a21/a11 ,加到方程 2 2 2 ,使 a 21 a_{21} a21 0 0 0 ;第二次操作,方程 1 1 1 乘以 − a 31 / a 11 -a_{31}/a_{11} a31/a11 ,加到方程 3 3 3 ,使 a 31 a_{31} a31 0 0 0 ;依次类推,第 i − 1 i-1 i1 次操作,方程 1 1 1 乘以 − a i 1 / a 11 -a_{i1}/a_{11} ai1/a11 ,加到方程 i i i ,使 a i 1 a_{i1} ai1 0 0 0 ,直到 n − 1 n-1 n1 次操作,使矩阵第一列对角线下方均为 0 0 0

第二阶段:第一次操作,方程 2 2 2 乘以 − a 32 / a 22 -a_{32}/a_{22} a32/a22 ,加到方程 3 3 3 ,使 a 32 a_{32} a32 0 0 0 ;第二次操作,方程 2 2 2 乘以 − a 42 / a 22 -a_{42}/a_{22} a42/a22 ,加到方程 4 4 4 ,使 a 42 a_{42} a42 0 0 0 ;依次类推,第 i − 2 i-2 i2 次操作,方程 2 2 2 乘以 − a i 2 / a 22 -a_{i2}/a_{22} ai2/a22 ,加到方程 i i i ,使 a i 2 a_{i2} ai2 0 0 0 ,直到 n − 2 n-2 n2 次操作,使矩阵第 2 2 2 列对角线下方元素均为 0 0 0 。注意,此时 a i j a_{ij} aij 的值不是原始值,是第一阶段操作后矩阵的值。

以此类推,第 j j j 阶段:第一次操作,方程 j j j 乘以 − a j + 1 , j / a j j -a_{j+1,j}/a_{jj} aj+1,j/ajj ,加到方程 j + 1 j+1 j+1 ,使 a j + 1 , j a_{j+1,j} aj+1,j 0 0 0 ;第二次操作,方程 j j j 乘以 − a j + 2 , j / a j j -a_{j+2,j}/a_{jj} aj+2,j/ajj ,加到方程 j + 2 j+2 j+2 ,使 a j + 2 , j a_{j+2,j} aj+2,j 0 0 0 ;依次类推,直到 n − j n-j nj 次操作,使矩阵第 j j j 列对角线下方元素均为 0 0 0

一直进行到第 n − 1 n-1 n1 阶段,则矩阵 A A A 变换为上三角阵。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值