线性代数笔记(二)——矩阵消元

高斯消元法是如今小学生都耳熟能详的解决齐次线性方程组的方法,课程第二讲主要讲授了高斯消元法应用在矩阵上的视觉效果与解读。

矩阵消元

非矩阵视角的消元

有三元方程组: \(\begin{cases} x&+2y&+z&=2 \\ 3x&+8y&+z&=12 \\ &4y&+z&=2 \end{cases}\)

如果我们想通过消元法来解决,那么一般是考虑选中其中的一行,乘以某个系数对另外两行进行加法(系数为负就是减法)操作,以消除掉\(x\)未知数,如此,后两个方程组就变成了二元一次方程组求解问题,而方法也是以此类推,用其中的一个消掉另一个的\(y\),最终剩下的那一行就只有\(z\)了。在解出\(z\)以后,再将\(z\)回代到方程组,进而再解另外两个未知数\(x,y\)。这种方法我们在小学的时候就已经掌握了。

矩阵视角的消元

方程组对应的矩阵形式\(Ax=b\)为: \(\begin{bmatrix} 1&2&1 \\ 3&8&1 \\ 0&4&1 \end{bmatrix}\begin{bmatrix} x \\ y \\ z \end{bmatrix}=\begin{bmatrix} 2 \\ 12 \\ 2\end{bmatrix}\)

实际上如果将消元的手法应用到矩阵上,本质上也并没有什么不同,从矩阵的视角来看,消元的第一步是选定第一行的第一个元素作为主元(对应\(x\)系数),分别乘以不同的系数对第二、三行进行加法操作,进而消除掉第二、三行的首个元素。由于第三行原本首个元素就是0,故这里只需要对第二行操作: \(\begin{bmatrix} \underline{1}&2&1 \\ 3&8&1 \\ 0&4&1\end{bmatrix}\xrightarrow{row_2-3row_1}\begin{bmatrix} \underline{1}&2&1 \\ 0&2&-2 \\ 0&4&1\end{bmatrix}\)

这里暂时先不管对\(b\)的影响(实际上也要跟着变化),矩阵\(A\)经过消元变成了这个样子。

接下来,我们如法炮制,选择第二行的第二个元素(对应\(y\)系数)作为主元,对第三行进行消元动作: \(\begin{bmatrix} \underline{1}&2&1 \\ 0&\underline{2}&-2 \\ 0&4&1\end{bmatrix}\xrightarrow{row_3-2row_2}\begin{bmatrix}\underline{1}&2&1 \\ 0&\underline{2}&-2 \\ 0&0&\underline{5}\end{bmatrix}\)

到此,消元动作结束,最后一行仅剩\(z\)的系数,即第三个元素5。

上例的矩阵是精心设计的,实际上消元过程中可能会遇到一些失效的情形:首先主元不能为0,为0的主元无论乘上什么样的系数都无法消除其他行的对应列。其次,如果消元过程中遇到主元位置为0,则需要交换行,使主元不为0。

消元结束后,我们就可以进行回代,由于方程组在矩阵消元时发生了变化,我们需要对\(b\)也进行相同的操作以同步这些变化,如此我们写成下面的增广矩阵形式: \[ \left[\begin{array}{c|c}A&b\end{array}\right]= \left[\begin{array}{ccc|c} 1&2&1&2 \\ 3&8&1&12 \\ 0&4&1&2 \end{array} \right]\to\left[\begin{array}{ccc|c} 1&2&1&2 \\ 0&2&-2&6 \\ 0&4&1&2 \end{array} \right]\to\left[\begin{array}{ccc|c} 1&2&1&2 \\ 0&2&-2&6 \\ 0&0&5&-10 \end{array}\right] \]

此时方程组变为:\(\begin{cases}x&+2y&+z&=2\\ &2y&-2z&=6\\ &&5z&=-10\end{cases}\),最后一行可以得出\(z=-2\),回代到\(2y-2z=6\)得到\(y=1\),再进一步得到\(x=2\)

可以用这里的方程组和我们小学时学到的消元法得到的方程组作对比,本质上完全一样。

矩阵消元的本质

通过第一节课我们知道,对于矩阵乘法\(AB\)可以看成是对矩阵\(B\)中行按\(A\)中系数的线性组合,如果\(B\)想要维持不变,那么\(A\)就得是个单位矩阵\(I\): \(\begin{bmatrix} 1&0&0 \\ 0&1&0 \\ 0&0&1\end{bmatrix}\) 这个单位矩阵就相当于我们实数运算中的1,只不过在矩阵的世界,它长这个样子。

单位阵的三行彼此换一换,就能得到一个置换矩阵群,这个东西很有意思,以后会讲到。

于是我们还原一下消元的第一步操作:\(row_2-3row_1\) \(\begin{bmatrix} 1&0&0 \\ -3&1&0 \\ 0&0&1\end{bmatrix}\begin{bmatrix} 1&2&1 \\ 3&8&1 \\ 0&4&1\end{bmatrix}=\begin{bmatrix} 1&2&1 \\ 0&2&-2 \\ 0&4&1\end{bmatrix}\)

这个消元矩阵我们记作\(E_{21}\),即将第二行第一个元素变为0。

同理,我们找到\(E_{32}\),将第三行第二个元素变为0: \(\begin{bmatrix} 1&0&0 \\ 0&1&0 \\ 0&-2&1 \end{bmatrix}\begin{bmatrix} 1&2&1 \\ 0&2&-2 \\ 0&4&1\end{bmatrix}=\begin{bmatrix} 1&2&1 \\ 0&2&-2 \\ 0&0&5\end{bmatrix}\)

\(E_{21}\)\(E_{32}\)就是消元过程中用到的两个初等矩阵。

最后,我们将两步综合起来,即\(E_{32}(E_{21}A)=U\)。矩阵的乘法是满足结合律的,所以这里的括号可以移动一下,即\((E_{32}E_{21})A=U\),这里的\(U\)表示upper,即上三角矩阵(对角线下面的元素全都是0)。

如此,我们可以通过对\(A\)做行变换得到\(U\),那么显然,如果要从\(U\)变回\(A\)我们只需要再反向操作一波即可,比如\(E_{21}\)是从第二行减去三倍的第一行,那么它的反向操作就应该是第二行加上3倍的第一行,所以其逆矩阵就应该是\(\begin{bmatrix}1&0&0\\ 3&1&0\\ 0&0&1\end{bmatrix}\)

我们把矩阵\(E\)的逆记作\(E^{-1}\),显然有\(E^{-1}E=I\),从行变换意义上来看,单位阵\(I\)乘以\(A\)相当于什么都没有改变,也就是二者抵消后的结果。

附录

视频

参考链接


线性代数笔记(二)——矩阵消元
https://r00tk1ts.github.io/2022/05/02/线性代数笔记(二)——矩阵消元/
作者
r00tk1t
发布于
2022年5月2日
许可协议