矩阵消元法

1、概述

消元法(elimination)也是计算机程序解方程的方法,消元法如果奏效了,方程就解出来了。
讨论消元法奏效失效的情况。后半部分还介绍了 消元矩阵,即我们的消元运算在矩阵乘法中所表现的形式。并从消元矩阵引入,介绍了一些 逆矩阵 的基础知识。

2、使用 消元法 求解方程

2.1、消元法介绍

能够使用消元法分为以下 2 种情况:

  • 成功: 矩阵的主元不包含 0, 也就是说,可逆矩阵。
  • 失败: 矩阵的主元有至少一个 0,也就是说,不可逆矩阵。

对于一些 “好” 的系数矩阵(可逆矩阵) A来说,我们可以使用消元法来求解方程Ax=b ,我们还是从一个例子谈起。

\begin{cases} x+2y+z=2\\ 3x+8y+z=12\\ 4y+z=2 \end{cases}

我们仍然使用矩阵计算,将方程写为矩阵形式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}

所谓矩阵的消元法,其实与我们在初等数学中学习的解二元一次方程组的消元法同理,都是通过将不同行的方程进行消元运算来简化方程,最后能得到简化的方程组。只不过这里我们把系数单独抽出来进行运算,寻找一种 U矩阵 (U upper triangular 上三角矩阵).

消元针对对象是系数矩阵AAA

\begin{bmatrix} 1&2&1\\ 3&8&1\\ 0&4&1\\ \end{bmatrix}

首先注意,左上角的1是消元法的关键,我们称之为主元(pivot),接下来我们通过将第一行乘以倍数加到另一行,将第一列除了主元之外的元素全变为0。

\begin{bmatrix} 1&2&1\\ 3&8&1\\ 0&4&1\\ \end{bmatrix} \stackrel{(2,1)}\rightarrow \begin{bmatrix} 1&2&1\\ 0&2&-2\\ 0&4&1\\ \end{bmatrix}

注:

并不是所有的 A 矩阵都可消元处理,需要注意在我们消元过程中,
如果主元位置(左上角)为 0,那么意味着这个主元不可取,需要进行 “换行” 处理:

首先看它的下一行对应位置是不是 0,如果不是,就将这两行位置互换,将非零数视为主元。
如果是,就再看下下行,以此类推。若其下面每一行都看到了,仍然没有非零数的话,那就意味着这个矩阵不可逆,
消元法求出的解不唯一。

下面是 3 个例子:

\begin{bmatrix} \color{red}0&2&1\\ 0&\color{red}-2&1\\ 0&0&\color{red}5\\ \end{bmatrix} , \begin{bmatrix} \color{red}1&2&1\\ 0&\color{red}0&-2\\ 0&0&\color{red}5\\ \end{bmatrix} , \begin{bmatrix} \color{red}1&2&1\\ 0&\color{red}-2&-2\\ 0&0&\color{red}0\\ \end{bmatrix}

2.2、回带求解

其实回带求解应该和消元法同时进行,只不过在我们讲解的时候以及在一些软件工作原理中它们是先后进行的,所以我们这里分开讨论,下面我们首先介绍—— 增广矩阵

仍然是上面例一中我们给出的方程,

\begin{cases} x+2y+z=2\\ 3x+8y+z=12\\ 4y+z=2 \end{cases}

,我们接下来首先给出 增广矩阵 形式:

\begin{bmatrix} 1&2&1&\color{blue}2\\ 3&8&1&\color{blue}12\\ 0&4&1&\color{blue}2\\ \end{bmatrix}

可以一下就看出来,增广矩阵 就是把 系数矩阵 A 和 向量 b 拼接成一个矩阵就行了。

然后像我们之前的消元法,但这次要带着增广矩阵部分一起进行:

\begin{bmatrix} 1&2&1& \color{blue}2\\ 3&8&1& \color{blue}12\\ 0&4&1& \color{blue}2\\ \end{bmatrix} \stackrel{(2,1)}\rightarrow \begin{bmatrix} 1&2&1& \color{blue}2\\ 0&2&-2& \color{blue}6\\ 0&4&1& \color{blue}2\\ \end{bmatrix} \stackrel{(3,2)}\rightarrow \begin{bmatrix} 1&2&1& \color{blue}2\\ 0&2&-2& \color{blue}6\\ 0&0&5& \color{blue}-10\\ \end{bmatrix}

再将上面的式子带回方程Ax=b

\begin{cases} x+2y+z=\color{blue}2\\ 2y-2z=\color{blue}6\\ 5z=\color{blue}-10 \end{cases}

从上向下开始求解,很容易求出 x, y, z 的值了。

3、消元矩阵

3.1、行向量与矩阵乘法

上面的消元法是从简单的变换角度介绍了消元的具体操作,接下来我们需要用矩阵来表示变换的步骤,这也十分有必要,因为这是一种 “系统地” 变换矩阵的方法。

矩阵与列向量的乘法,例如:

\begin{bmatrix} a&b&c\\ d&e&f\\ g&h&i\\ \end{bmatrix} \begin{bmatrix} x\\ y\\ z\\ \end{bmatrix} = x\begin{bmatrix} a\\ d\\ g\\ \end{bmatrix}+ y\begin{bmatrix} b\\ e\\ h\\ \end{bmatrix}+ z\begin{bmatrix} c\\ f\\ i\\ \end{bmatrix} = \begin{bmatrix} ax+by+cz\\ dx+ey+fz\\ gx+hy+iz\\ \end{bmatrix}

矩阵消元法_第1张图片

矩阵消元法_第2张图片

这并不能解决我们现在的问题,这是矩阵的线性组合,因为消元法用到的是变换,那么行向量和矩阵相乘呢?

\begin{bmatrix} x&y&z\\ \end{bmatrix} \begin{bmatrix} a&b&c\\ d&e&f\\ g&h&i\\ \end{bmatrix}= \begin{bmatrix} ax+dy+gz&bx+ey+hz&cx+fy+iz\\ \end{bmatrix}

矩阵消元法_第3张图片

3.2、消元矩阵介绍

学会了行向量与矩阵之间的乘法,我们就可以使用行向量对矩阵的行做操作了。所谓消元矩阵,就是将消元过程中的行变换转化为矩阵之间的乘法形式

首先

\begin{bmatrix} 1&0&0\\ \end{bmatrix} \begin{bmatrix} a&b&c\\ d&e&f\\ g&h&i\\ \end{bmatrix}= \begin{bmatrix} a&b&c \end{bmatrix}

\begin{bmatrix} 0&1&0\\ \end{bmatrix} \begin{bmatrix} a&b&c\\ d&e&f\\ g&h&i\\ \end{bmatrix}= \begin{bmatrix} d&e&f \end{bmatrix}

\begin{bmatrix} 0&0&1\\ \end{bmatrix} \begin{bmatrix} a&b&c\\ d&e&f\\ g&h&i\\ \end{bmatrix}= \begin{bmatrix} g&h&i \end{bmatrix}

\begin{bmatrix} 1&0&0\\ \end{bmatrix}, \begin{bmatrix} 0&1&0\\ \end{bmatrix}, \begin{bmatrix} 0&0&1 \end{bmatrix}构成一个矩阵\begin{bmatrix} 1&0&0\\ 0&1&0\\ 0&0&1\\ \end{bmatrix}我们很容易验证这样的矩阵与其他的矩阵相乘不改变矩阵。消元矩阵就是它的变形形式,以上例矩阵说明:

\begin{bmatrix} ?&?&?\\ ?&?&?\\ ?&?&?\\ \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}

如果:

\begin{bmatrix} 1&0&0\\ 0&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\\ 3&8&1\\ 0&4&1\\ \end{bmatrix}

我们消元过程是将第一行乘以-3加到第二行,这是对第二行的操作,那就从单位矩阵的第二行着手:

\begin{bmatrix} 1&0&0\\ 0&1&0\\ 0&0&1\\ \end{bmatrix} \stackrel{row1 \times -3 + row2}\rightarrow \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}

记作E_{21},就是将矩阵A的第2行第1列(2,1)的位置变为0的消元矩阵。

同样

\begin{bmatrix} 1&0&0\\ 0&1&0\\ 0&0&1\\ \end{bmatrix} \stackrel{row 2 \times -2+row 3}\rightarrow \begin{bmatrix} 1&0&0\\ 0&1&0\\ 0&-2&1\\ \end{bmatrix}

记作E_{32}那么E_{21}E_{32}A = U (U_{ upper triangular })上三角矩阵

E_{21}E_{32}E,那么E就是整个消元过程的消元矩阵

核心:求消元矩阵就是从单位阵I入手,按照A每次变换的消元步骤操作I矩阵,能分别得到E某行某列​,最后累积得到E即可。

3.3.1、行变换和列变换

受上面的消元矩阵的启发,交换2\times2矩阵中两行:

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

而交换2\times2矩阵中两列:

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

所以,左乘行交换,右乘列交换

3.3.2、逆矩阵初探

可以说学会了消元矩阵,就相当于可以用矩阵乘法对一个矩阵进行任何变化了,那么考虑一个反过程,即把一个消元结束的 矩阵 U 如何变为 未经消元的 矩阵 A 呢?

答案就是 乘上一个逆矩阵

上题中的E_{21}是第一行\times(-3)加到第二行,即E_{21}=\begin{bmatrix}1&0&0\\-3&1&0\\0&0&1\end{bmatrix}那么与之相反,我们在第二行上加上第一行\times3就可以复原这一运算过程,即:

\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}=I

此时的\begin{bmatrix}1&0&0\\3&1&0\\0&0&1\end{bmatrix}称为E_{21}^{-1},E_{21}^{-1}E_{21}=I,E_{21}^{-1}就是E_{21}的逆矩阵。

4、小结

这一个章节,我们从矩阵消元的角度,介绍解方程的通用做法,并介绍了消元矩阵,使我们从矩阵乘法层面理解了消元的过程,并延伸了消元矩阵的应用: 就是基于单位阵I的变化,对矩阵A进行行列变换的过程。

你可能感兴趣的:(矩阵,线性代数,算法)