Skip to content

第二讲:矩阵消元

这个方法最早由高斯提出,我们以前解方程组的时候都会使用,现在来看如何使用矩阵实现消元法。

消元法

有三元方程组{x+2y+z=23x+8y+z=124y+z=2,对应的矩阵形式Ax=b[121381041][xyz]=[2122]

按照我们以前做消元法的思路:

  • 第一步,我们希望在第二个方程中消去x项,来操作系数矩阵A=[121381041],下划线的元素为第一步的主元(pivot):[121381041]row23row1[121022041]

    这里我们先不管b向量,等做完A的消元可以再做b的消元。(这是MATLAB等工具经常使用的算法。)

  • 第二步,我们希望在第三个方程中消去y项,现在第二行第一个非零元素成为了第二个主元:[121022041]row32row2[121022005]

    注意到第三行消元过后仅剩一个非零元素,所以它就成为第三个主元。做到这里就算消元完成了。

再来讨论一下消元失效的情形:首先,主元不能为零;其次,如果在消元时遇到主元位置为零,则需要交换行,使主元不为零;最后提一下,如果我们把第三个方程z前的系数改成4,会导致第二步消元时最后一行全部为零,则第三个主元就不存在了,至此消元不能继续进行了,这就是下一讲中涉及的不可逆情况。

  • 接下来就该回代(back substitution)了,这时我们在A矩阵后面加上b向量写成增广矩阵(augmented matrix)的形式:[Ab]=[1212381120412][121202260412][1212022600510]

    不难看出,z的解已经出现了,此时方程组变为{x+2y+z=22y2z=65z=10,从第三个方程求出z=2,代入第二个方程求出y=1,再代入第一个方程求出x=2

消元矩阵

上一讲我们学习了矩阵乘以向量的方法,有三个列向量的矩阵乘以另一个向量,按列的线性组合可以写作[v1 v2 v3][345]=3v1+4v2+5v3

但现在我们希望用矩阵乘法表示行操作,则有[127][row1row2row3]=1row1+2row2+7row3。易看出这里是一个行向量从左边乘以矩阵,这个行向量按行操作矩阵的行向量,并将其合成为一个矩阵行向量的线性组合。

介绍到这里,我们就可以将消元法所做的行操作写成向量乘以矩阵的形式了。

  • 消元法第一步操作为将第二行改成row23row1,其余两行不变,则有[100310001][121381041]=[121022041](另外,如果三行都不变,消元矩阵就是单位矩阵I=[100010001]I之于矩阵运算相当于1之于四则运算。)这个消元矩阵我们记作E21,即将第二行第一个元素变为零。

  • 接下来就是求E32消元矩阵了,即将第三行第二个元素变为零,则[100010021][121022041]=[121022005]。这就是消元所用的两个初等矩阵(elementary matrix)。

  • 最后,我们将这两步综合起来,即E32(E21A)=U,也就是说如果我们想从A矩阵直接得到U矩阵的话,只需要(E32E21)A即可。注意,矩阵乘法虽然不能随意变动相乘次序,但是可以变动括号位置,也就是满足结合律(associative law),而结合律在矩阵运算中非常重要,很多定理的证明都需要巧妙的使用结合律。

既然提到了消元用的初等矩阵,那我们再介绍一种用于置换两行的矩阵:置换矩阵(permutation matrix):例如[0110][abcd]=[cdab],置换矩阵将原矩阵的两行做了互换。顺便提一下,如果我们希望交换两列,则有[abcd][0110]=[badc]

我们现在能够将A通过行变换写成U,那么如何从U再变回A,也就是求消元的逆运算。对某些“坏”矩阵,并没有逆,而本讲的例子都是“好”矩阵。

现在,我们以E21为例,[?][100310001]=[100010001],什么矩阵可以取消这次行变换?这次变换是从第二行中减去三倍的第一行,那么其逆变换就是给第二行加上三倍的第一行,所以逆矩阵就是[100310001]

我们把矩阵E的逆记作E1,所以有E1E=I

本站没有备案,因为不需要备案