第二节-矩阵消元

消元法

消元法是高斯首次提出用来求解n元n次方程组的方法,这是一个很自然有效的方法,它可以求解方程组的解也可以判断无解的情况。主要包括消元和回代两个步骤即可求出方程组的解。例如以下方程组
{ x + 2 y + z = 2 3 x + 8 y + z = 12 0 x + 4 y + z = 2 \begin{cases} x+2y+z=2\\ 3x+8y+z=12\\ 0x+4y+z =2 \end{cases} x+2y+z=23x+8y+z=120x+4y+z=2
根据上一节对应的矩阵形式Ax = b 为
[ 1 2 1 3 8 1 0 4 1 ] [ x y z ] = [ 2 12 2 ] \left[ \begin{array} {ccc} 1&2&1\\ 3&8&1\\ 0&4&1 \end{array} \right] \left[ \begin{array} {ccc} x\\ y\\ z \end{array} \right]= \left[ \begin{array} {ccc} 2\\ 12\\ 2 \end{array} \right] 130284111xyz=2122
按照我们以前做消元法的思路,我们对系数矩阵A进行变换如下(当然向量b也会做对应的变化,这里我们先考虑A)。
[ [1] 2 1 3 8 1 0 4 1 ] (row2-3row1) ⟶ [ [1] 2 1 0 [2] − 2 0 4 1 ] (row3-2row2) ⟶ [ [1] 2 1 0 [2] − 2 0 0 [5] ] \left[ \begin{array} {ccc} \text{[1]} &2&1\\ 3&8&1\\ 0&4&1 \end{array} \right] \text{(row2-3row1)} \longrightarrow \left[ \begin{array} {ccc} \text{[1]} &2&1\\ 0&\text{[2]}&-2\\ 0&4&1 \end{array} \right] \text{(row3-2row2)} \longrightarrow \left[ \begin{array} {ccc} \text{[1]}&2&1\\ 0&\text{[2]}&-2\\ 0&0&\text{[5]} \end{array} \right] [1]30284111(row2-3row1)[1]002[2]4121(row3-2row2)[1]002[2]012[5]

  1. 第一步,在第一个方程以下得所有方程中消去x项,在矩阵A中就需要将主元一以下得所有x项变为0。因此我们将主元行一乘以3可以消去第二行得x,第三行x得位置已经是0,所以不需做任何操作。
  2. 第二步,在第二个方程以下所有方程中消去y项目,选定主元二,将第二行以下所有y项变为0。因此我们进一步消元操作可以得到最终得矩阵:
    U = [ [1] 2 1 0 [2] − 2 0 0 [5] ] U = \left[ \begin{array} {ccc} \text{[1]}&2&1\\ 0&\text{[2]}&-2\\ 0&0&\text{[5]} \end{array} \right] U=[1]002[2]012[5]
    注意到第三行消元过后仅剩一个非零元素,所以它就成为第三个主元。做到这里就算消元完成了。
    再来讨论一下消元失效的情形:首先,主元不能为零;其次,如果在消元时遇到主元位置为零,则需要交换行,使主元不为零;如果换行也无法解决问题,则可以得出方程无解,或者矩阵不可逆(下一节)。
  3. 回代,以上得矩阵变换只处理了系数矩阵A,要得到最终解需要对结果向量b也进行相应得处理,这时我们在A矩阵后面加上bb向量写成增广矩阵(augmented matrix)的形式:
    [ A ∣ b ] = [ 1 2 1 2 3 8 1 12 0 4 1 2 ] ⟶ [ 1 2 1 2 0 2 − 2 6 0 4 1 2 ] ⟶ [ 1 2 1 2 0 2 − 2 6 0 0 5 − 10 ] = [ U ∣ c ] \left[ A|b \right] = \left[ \begin{array}{ccc|c} 1&2&1&2\\ 3&8&1&12\\ 0&4&1&2 \end{array} \right] \longrightarrow \left[ \begin{array} {ccc|c} 1&2&1&2\\ 0&2&-2&6\\ 0&4&1&2 \end{array} \right] \longrightarrow \left[ \begin{array} {ccc|c} 1&2&1&2\\ 0&2&-2&6\\ 0&0&5&-10 \end{array} \right] = \left[ U|c \right] [Ab]=13028411121221002241212621002201252610=[Uc]

最终的矩阵即为【U|c】,对应的方程组为
{ x + 2 y + z = 2 2 y − 2 z = 6 5 z = − 10 \begin{cases} x+2y+z=2\\ 2y-2z=6\\ 5z =-10 \end{cases} x+2y+z=22y2z=65z=10
可求得解为 z=-2,y=1,x=2。

矩阵消元

矩阵乘法

上面我们通过消元的方式得到了最终的系数矩阵,那么如何通过矩阵的计算得到我们要的结果呢?这要用到矩阵的乘法,上一节我们讨论了矩阵乘以向量可以看成是矩阵列的线性组合,即:
[ c o l 1 c o l 2 c o l 3 ] × [ a b c ] = a × c o l 1 + b × c o l 2 + c × c o l 3 \left[ \begin{array} {ccc} col_1&col_2&col_3\\ \end{array} \right] × \left[ \begin{array} {ccc} a\\ b\\ c \end{array} \right] = a×col_1 + b×col_2 + c×col_3 [col1col2col3]×abc=a×col1+b×col2+c×col3
考虑到消元法中讲的都是行变换,我们需要矩阵乘法中按行的情况。即一个行向量乘以矩阵可以看成是矩阵行的线性组合,即
[ a b c ] × [ r o w 1 r o w 2 r o w 3 ] = a × r o w 1 + b × r o w 2 + c × r o w 3 \left[ \begin{array} {ccc} a&b&c\\ \end{array} \right] × \left[ \begin{array} {ccc} row_1\\ row_2\\ row_3 \end{array} \right] = a×row_1 + b×row_2 + c×row_3 [abc]×row1row2row3=a×row1+b×row2+c×row3

消元的矩阵解释

回到消元矩阵的步骤,第一步们将矩阵A的第二行减去三倍行一,其他行保持不变。即:
[ ? ? ? ? ? ? ? ? ? ] × [ 1 2 1 3 8 1 0 4 1 ] = [ 1 2 1 0 2 − 2 0 4 1 ] \left[ \begin{array} {ccc} ?&?&?\\ ?&?&?\\ ?&?&?\\ \end{array} \right] × \left[ \begin{array} {ccc} 1&2&1\\ 3&8&1\\ 0&4&1 \end{array} \right] = \left[ \begin{array} {ccc} 1&2&1\\ 0&2&-2\\ 0&4&1 \end{array} \right] ?????????×130284111=100224121
我们把所求矩阵称为初等矩阵 E 2 1 E_21 E21,因为我们用它来将位置(2,1)变为0,设结果矩阵为 A ′ A' A,利用上面行向量乘法, A ′ A' A的每一行都是矩阵X对应行针对矩阵 A A A行向量的线性组合,要得到 A ′ A' A,即 E 21 × A = A ′ E_{21}×A=A' E21×A=A,则有:
{ E 2 1 r o w 1 × A = A r o w 1 ′ E 2 1 r o w 2 × A = A r o w 2 ′ E 2 1 r o w 3 × A = A r o w 3 ′ \begin{cases} E_{21_{row1}}×A=A'_{row1}\\ E_{21_{row2}}×A=A'_{row2}\\ E_{21_{row3}}×A=A'_{row3}\\ \end{cases} E21row1×A=Arow1E21row2×A=Arow2E21row3×A=Arow3
由此可以得到:
[ 1 0 0 − 3 1 0 0 0 1 ] × [ 1 2 1 3 8 1 0 4 1 ] = [ 1 2 1 0 2 − 2 0 4 1 ] \left[ \begin{array} {ccc} 1&0&0\\ -3&1&0\\ 0&0&1\\ \end{array} \right] × \left[ \begin{array} {ccc} 1&2&1\\ 3&8&1\\ 0&4&1 \end{array} \right] = \left[ \begin{array} {ccc} 1&2&1\\ 0&2&-2\\ 0&4&1 \end{array} \right] 130010001×130284111=100224121
(这里补充一下,根据上面等式,不难看出如果 X = [ 1 0 0 0 1 0 0 0 1 ] X= \left[\begin{array}{ccc}1&0&0\\0&1&0\\0&0&1\\\end{array}\right] X=100010001 则有 X × A = A X×A=A X×A=A,这时我们把 X X X称为单位矩阵 I I I)。
同理,第二步我们有初等矩阵 E 32 E_{32} E32,即将第三行第二个元素变为零,将第三行减去两倍的行二,即 E 32 × A ′ = U E_{32}×A'=U E32×A=U,即
{ E 3 2 r o w 1 × A ′ = U r o w 1 E 3 2 r o w 2 × A ′ = U r o w 2 E 3 2 r o w 3 × A ′ = U r o w 3 \begin{cases} E_{32_{row1}}×A'=U_{row1}\\ E_{32_{row2}}×A'=U_{row2}\\ E_{32_{row3}}×A'=U_{row3}\\ \end{cases} E32row1×A=Urow1E32row2×A=Urow2E32row3×A=Urow3
由此可以得到:
[ 1 0 0 0 1 0 0 − 2 1 ] × [ 1 2 1 0 2 − 2 0 4 1 ] = [ 1 2 1 0 2 − 2 0 0 5 ] \left[ \begin{array} {ccc} 1&0&0\\ 0&1&0\\ 0&-2&1\\ \end{array} \right] × \left[ \begin{array} {ccc} 1&2&1\\ 0&2&-2\\ 0&4&1 \end{array} \right] = \left[ \begin{array} {ccc} 1&2&1\\ 0&2&-2\\ 0&0&5 \end{array} \right] 100012001×100224121=100220125
矩阵消元至此结束,每一步用到一个初等矩阵,回顾一下这两个步骤我们是如何从矩阵 A A A得到矩阵 U U U的呢。通过公式描述以上过程如下:
E 32 × ( E 21 × A ) = U E_{32}×(E_{21}×A) = U E32×(E21×A)=U矩阵乘法虽然不能随意变动相乘次序,但是可以变动括号位置,也就是满足结合律(associative law),因此如下等式成立:
( E 32 × E 21 ) × A = U (E_{32}×E_{21})×A = U (E32×E21)×A=U
这样我们就可以通过一个矩阵解决所有消元操作,设 E = E 32 × E 21 E=E_{32}×E_{21} E=E32×E21,下一节我们将讨论如何得到 E E E

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值