矩阵消元 elimination

矩阵消元 elimination

​ 我们考虑一个方程组:

\[\left\{\begin{matrix} x&+2y&+z&=&2 \\ 3x&+8y&+z&=&12 \\ &4y&+z&=&2 \end{matrix}\right. \]

同之前一样,考虑\(\mathbf A\symbfit x =\mathbf b\)形式,得到:

\[\mathbf A=\begin{bmatrix} 1 & 2 & 1\\ 3 & 8 & 1 \\ 0 & 4 & 1 \end{bmatrix} \]

在中学阶段,我们求解方程组一般用消元法,那么下面我们尝试利用消元法求解线性方程组,并看看矩阵是如何变化的。

​ 首先,我们考虑消掉第二行第一列的元素“\(3\)”,记为\((2,1)\)。这将用到\((1,1)\),称它为第一个主元(1st. pivot)。可以做这样的处理:对第二行做第二行减去\(3\)倍第一行(简记为\(row2 - 3\times row1\)),其他行不变。系数矩阵将变为:

\[\begin{bmatrix} 1 & 2 & 1\\ 0 & 2 & -2 \\ 0 & 4 & 1 \end{bmatrix} \]

​ 然后,再以\((2,2)\)为主元(2nd. pivot),对\(row3\)\(row3 - 2\times row2\)的处理,其他行不变。系数矩阵将变为:

\[\begin{bmatrix} \boxed 1 & 2 & 1\\ 0 & \boxed 2 & -2 \\ 0 & 0 & \boxed 5 \end{bmatrix} \]

图中画框的即为主元。注意:主元不能为0!。我们试想一下,倘若主元为\(0\),那么我们是不是就无法求得相应未知数的值了?因为它将无法用给出的方程组的方程的线性组合得到它和其他未知数或常数的关系,或者说,此时它可以取任意值。


​ 那么,倘若我们用消元法的过程中发现主元为\(0\)了的话,有没有什么“救济措施”?答案是有的,我们可以试着交换行。例如下面的矩阵:

\[\begin{bmatrix} 1 & 2 & 1\\ 0 & 0 & 1 \\ 0 & 4 & 1 \end{bmatrix} \]

这时,它的第二个主元为\(0\)了,我们可以将\(row2\)\(row3\)交换:

\[\begin{bmatrix} 1 & 2 & 1\\ 0 & 4 & 1 \\ 0 & 0 & 1 \end{bmatrix} \]

便可以进行后面的操作了。

​ 但是,我们不得不还要考虑另一个问题,假如后一行相应的元素也为\(0\)呢?如:

\[\begin{bmatrix} 1 & 2 & 1\\ 0 & 0 & 1 \\ 0 & 0 & 0 \end{bmatrix} \]

这时,我们无论怎样处理,都不会得到未知数\(y\)的确切值了。这时消元法失效了,这种矩阵称为不可逆的(在后面会详细讲)。


​ 回到正题,下面我们还是考虑消元法可以使用的情况。既然我们得到了消元之后的矩阵,但是这都是没有考虑到\(\mathbf b\)的情况,事实上,我们对方程组的方程线性操作(矩阵的行的处理)的时候,等式右边的数也会相应地改变。

​ 下面我们考虑回代(back substitution)。还是对应上个例子,我们将\(\mathbf A\)\(\mathbf b\)写在一块:

\[\left[\begin{array}{ccc|c} 1 & 2 & 1 & 2\\ 3 & 8 & 1 & 12\\ 0 & 4 & 1 & 2 \end{array} \right] \]

其中竖线左边的是\(\mathbf A\),右边的是\(\mathbf b\)。称这种矩阵为增广矩阵(augmented matrix)。它最终会变成如下矩阵:

\[\begin{bmatrix} 1 & 2 & 1 & 2\\ 0 & 2 & -2 & 6\\ 0 & 0 & 5 & -10 \end{bmatrix} \]

左边的\(\mathbf A\)变换之后记为\(\mathbf U\),右边的\(\mathbf b\)变换之后记为\(\mathbf c\)。现在将该矩阵对应的线性方程组写出来:

\[\left\{\begin{matrix} 2x&-y&+z&=&2 \\ &2y&-2z&=&6 \\ &&5z&=&-10 \end{matrix}\right. \]

从下到上依次求解,不难解出\(x=2,y=1,z=-2\)

​ 下面我们考虑如何用矩阵语言诠释这整个消元过程。


​ 不过在那之前,我们补充一下矩阵乘法。在上一篇文章的最后,我们提到了矩阵右乘列向量的计算方法。下面我们说一下矩阵左乘行向量的计算。

​ 在之前,我们说矩阵右乘列向量是矩阵各列的线性组合,如:

\[\begin{bmatrix} 2 & 5\\ 1 & 3 \end{bmatrix} \begin{bmatrix} 1\\ 2 \end{bmatrix} = 1\begin{bmatrix} 2\\ 1 \end{bmatrix} + 2\begin{bmatrix} 5\\ 3 \end{bmatrix} =\begin{bmatrix} 12\\ 7 \end{bmatrix} \]

这是上一节举的例子。实际上,矩阵左乘行向量与之类似,我们也可以理解为矩阵各行的线性组合。如:

\[\begin{bmatrix} 1 & 2 & 7 \end{bmatrix} \begin{bmatrix} 1 & 2 & 1 \\ 3 & 8 & 1 \\ 0 & 4 & 1 \\ \end{bmatrix} = 1\begin{bmatrix} 1 & 2 & 1 \end{bmatrix} + 2\begin{bmatrix} 3 & 8 & 1 \end{bmatrix} +7\begin{bmatrix} 0 & 4 & 1 \end{bmatrix} = \begin{bmatrix} 7 & 46 & 10 \end{bmatrix} \]


​ 说明完之后,回归正题,考虑如何用矩阵语言诠释这整个消元过程。

​ 首先对于矩阵\(\begin{bmatrix} 1 & 2 & 1\\ 3 & 8 & 1 \\ 0 & 4 & 1 \end{bmatrix}\),我们的第一步是需要实现\(row2-3\times row1\),其他行不变,需要什么矩阵去实现?也就是说:(由于是行的组合,暂且把“?”放在矩阵左边)

\[?\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} \]

考虑一下刚才说的,我们可以尝试一下:既然要第一行不变,那我们是不是就可以理解为矩阵各行的线性组合,其中 \(row1\)系数为\(1\),其他行系数为\(0\),那么需要的行向量是不是就是\(\begin{bmatrix}1&0&0\end{bmatrix}\)?同理,第三行需要的行向量即为\(\begin{bmatrix}0&0&1\end{bmatrix}\),而第二行比较特殊,是原矩阵\(row2 - 3\times row1\),那么行向量应该写为\(\begin{bmatrix}-3&1&0\end{bmatrix}\)。把这些行向量按行的顺序拼起来,得到

\[\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} \]

可以拿右边的矩阵任意一个元素检验一下,是没有问题的。实际上这很合理,因为所谓的矩阵,其本质还是线性方程组的系数,将得到的行向量按顺序结合起来不正是将变换完(消元之后)的线性方程按顺序结合在一起吗?

​ 记刚才组合出的矩阵为初等矩阵(elementary matrix),记为\(\symbfit E\),对于上式中的初等矩阵,记为\(\mathbf E_{2,1}\)。若该初等矩阵为\(\begin{bmatrix} 1 & 0 & 0\\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix}\),则称为单位矩阵(identity matrix),将它右乘任一行为\(3\)的矩阵,则结果还是那个矩阵(这里单位矩阵是以\(3\)行为例),各行的系数均不变,还是那个原来的矩阵。

​ 第二步,\(row3-2\times row2\),其他行不变。与刚才类似,我们可以得到

\[\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} \]

其中\(\mathbf E_{32}=\begin{bmatrix}1 & 0 & 0\\ 0 & 1 & 0 \\ 0 & -2 & 1 \end{bmatrix}\)

​ 然后,考虑将这两步整合,也就是说,尝试用一个矩阵实现上述两个步骤。结果是显然的,我们注意到刚才的运算可以写为这种形式:

\[\mathbf E_{32}\left({\mathbf E_{21}\mathbf A}\right)=\mathbf U \]

我们想找到一个矩阵,实现\(?\mathbf A=\mathbf U\),那么显然,这个“?”即为\(\left(\mathbf E_{32}\mathbf E_{21}\right)\)。把括号的位置做了交换,这就是结合律(associative law)。


​ 下面说一下置换矩阵(permutation matrix),是另一种初等矩阵。

​ 我们首先看一下对矩阵的行交换。对于一个矩阵\(\begin{bmatrix}a & b\\c & d\end{bmatrix}\),想要将它的上下两行做交换,那么实际上可以让它左乘一个矩阵:

\[\begin{bmatrix}0 & 1\\1 & 0\end{bmatrix} \begin{bmatrix}a & b\\c & d\end{bmatrix} = \begin{bmatrix}c & d\\a & b\end{bmatrix} \]

这种矩阵称为置换矩阵,记为\(\symbfit P\)。实际上,单位矩阵做行变换即得到该置换矩阵。

​ 那么如果是列变换呢?我们可以让原矩阵右乘一个矩阵,以实现效果:

\[\begin{bmatrix}a & b\\c & d\end{bmatrix} \begin{bmatrix}0 & 1\\1 & 0\end{bmatrix} = \begin{bmatrix}b & a\\d & c\end{bmatrix} \]

该置换矩阵的第一列可以理解为\(0\times col1 + 1\times col2\),第二列是\(1\times col1+0\times col2\)

​ 我们可以得出这样一个规律,作列变换时矩阵右乘,作行变换时矩阵左乘。而且也可以得出,\(\symbfit A\symbfit B\neq \symbfit B\symbfit A\),即矩阵的乘法顺序是不能变的,即矩阵乘法不满足交换律。[1]

​ 最后再考虑这么一件事,我们如何从\(\symbfit U\)得到\(\symbfit A\)?这实际上就是矩阵的逆变换(inverses)。比如,如果做了这样的操作:\(row2-3row1\),那么将该运算逆过来,即:\(row2 + 3row1\)。即

\[\begin{bmatrix} 1 & 0 & 0\\ 3 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} 1 & 0 & 0\\ -3 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} = \begin{bmatrix} 1 & 0 & 0\\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} \]

关于逆变换的具体内容,下一篇文章将进行详细说明。


  1. 关于这些结论的严格推导请参阅相关资料,我这里只是为了直观理解矩阵运算的本质。 ↩︎

posted @ 2024-11-24 14:53  海豹熘鱼片  阅读(98)  评论(0)    收藏  举报