线性代数 - 解线性方程组

106

概述

解线性方程组是线性代数中最重要的课题之一,今天我们就来讲解相关概念和线性方程组的解法。

什么是线性方程组?考虑下面的方程组:


$$ \left\{ \begin{array}{rl} 2x + y = 5 \\ x - y = 1 \end{array} \right. \tag{1} $$

可以发现方程组的未知数 $x$ 和 $y$ 都是一次的,而且不存在 $xy$ 这样的项。这样的方程组就是线性方程组。

为了更直观地理解什么是线性方程组,我们首先从行图和列图入手。

行图和列图

所谓行图Row Picture),就是从行的角度观察方程组,将方程组每一行所表示的直线在坐标系中画出来。下图是方程组 $(1)$ 的行图:

图1 - 二维行图

在行图中,两条直线的交点就是方程组的解。上图中很容易看出方程组 $(1)$ 的解为 $(2,1)$,即 $x = 2, y = 1$ 。

所谓列图Column Picture),就是将方程组写成向量的线性组合形式,将向量在直角坐标系中画出来。

将方程组 $(1)$ 写成向量的线性组合形式:

$$ \begin{bmatrix} 2 \\ 1 \end{bmatrix} x + \begin{bmatrix} 1 \\ -1 \end{bmatrix} y = \begin{bmatrix} 5 \\ 1 \end{bmatrix} \tag{2} $$

将方程组 $(2)$ 中的向量绘制到直接坐标系中:

图2 - 二维列图

我们的目的则是找到合适的参数 $x$ 和 $y$ 使方程组 $(2)$ 成立。这里我们已经知道方程组 $(2)$ 的解为 $x=2, y=1$(当然,与方程组 $(1)$ 的解相同)。将它画在列图中:

图3 - 二维列图(解)

这样我们就可以更直观的理解方程组 $(2)$ 右侧的向量是如何通过左侧向量的线性组合得来的了。

方程组 $(1)$ 是两个未知数两个方程的情形,那么三个未知数三个方程的方程组又如何呢?它们的原理都一样,只不过三个未知数三个方程的方程组从二维升置三维,而随着维数的上升,二维的直线变成了三维的平面(行图),二维的向量变成了三维的向量(列图)。比如有如下的方程组:

$$ \left\{ \begin{array}{rl} x-y=0 \\ y-z=0 \\ z=1 \end{array} \right. \tag{3} $$

(好吧,我承认它太简单了点,不过作为演示已经足够了 ^_^)

它的行图为:

图4 - 三维行图

容易看出(呃……,其实也不是那么容易看出)三个平面的交点为 $(1,1,1)$,这就是方程组 $(3)$ 的解,即 $x = 1$, $y = 1$, $z = 1$。

为了画出它的列图,首先将方程组$(3)$ 写成向量线性组合的形式:

$$ \begin{bmatrix} 1 \\ 0 \\ 0 \end{bmatrix} x + \begin{bmatrix} -1 \\ 1 \\ 0 \end{bmatrix} y + \begin{bmatrix} 0 \\ -1 \\ 1 \end{bmatrix} z = \begin{bmatrix} 0 \\ 0 \\ 1 \end{bmatrix} \tag{4} $$

它的列图为:

图5 - 三维列图

知道了三个未知数三个方程的方程组的行图和列图,那么 $n$ 个未知数 $n$ 个方程的情形又是怎么样的呢?呃……,这没法作图,不过相信读者到这里已经知道了 $n$ 维情况下应该是什么样子的了。

行图和列图是从不同的角度来观察方程组,让我们更清晰的了解它的结构。在方程组很简单的情况下(比如上面的两个例子),我们甚至可以通过行图和列图来对方程组求解,但这并不是可靠的方法,想象一下通过行图和列图解 $10$ 个未知数 $10$ 个方程的方程组是多么可怕的事情!下面我们隆重介绍一种解方程组的通用方法:消元法。

消元法

消元法Elimination)就将方程组进行线性组合,消去其中一个或若干个未知数的手法。啥?什么是方程组的线性组合?还记得我们在向量基础 - 向量组的线性组合中介绍的线性组合的概念吗?它不但适用于向量组,也同样适用于方程组。比如:

$$a \mathbf{u} + b \mathbf{v}$$

其中 $a$、$b$ 是常数,当 $\mathbf{u}$ 和 $\mathbf{v}$ 是向量时,这个式子就是向量组的线性组合,而当它们是方程时,这个式子就是方程组的线性组合。这么说有点抽象,举个例子吧,还是考虑方程组 $(1)$:

$$ \left\{ \begin{array}{rl} 2x + y = 5 & ① \\ x - y = 1 & ② \end{array} \right. \tag{1} $$

(我们用带圈的数字表示行,比如 $①$ 表示第一行,如无特殊说明,以后也将如此。)

什么是方程组 $(1)$ 的线性组合呢?下面的式子都是:

  • $ 2 \times ① $
  • $ 5 \times ② $
  • $ ① + ② $
  • $ 2 \times ① - 3 \times ② $

上面涉及到了方程组的数乘和加法,也许你已经知道它们是如何计算的了,不过还是稍微提一下吧。

方程的数乘就是用常数乘以方程的两边,比如 $2 \times ①$ 等于 $4x + 2y = 10$

两个方程相加就是将它们等号两边分别相加,比如 $ ① + ②$ 等于 $3x=6$

消元法的核心思想就是找到一个方程组的线性组合,将一个或者若干个“元”消去。所谓“元”,指的就是未知数。

那么什么样的一个线性组合能够消去方程组 $(1)$ 的未知数呢?$① - 2 \times ②$ 可不可以呢?我们试一下:

$$ \xrightarrow{① - 2 \times ②} \left\{ \begin{array}{rl} 2x + y = 5 & ① \\ 3y = 3 & ② \end{array} \right. $$

我们消去了 $x$ !这样我们通过 $3y = 3$ 就能解出 $y=1$,并将 $y=1$ 回代Back Substitution)到 $①$,就可以解得 $x=2$。

这就是整个消元法的过程!简单吧?

方程的矩阵表示

为了书写方便,可以将方程组用增广矩阵表示,比如方程组 $(1)$ 可表示为:

$$ \begin{bmatrix} 2 & 1 & 5 \\ 1 & -1 & 1 \end{bmatrix} $$

消元的过程,也可以使用增广矩阵来表示,为了比较,我们将方程组的消元过程也列出来:

\begin{align*} & \begin{bmatrix} 2 & 1 & 5 \\ 1 & -1 & 1 \end{bmatrix} & \left\{ \begin{array}{rl} 2x + y = 5 \\ x - y = 1 \end{array} \right. \\ \xrightarrow{① - 2 \times ②} \quad & \begin{bmatrix} 2 & 1 & 5 \\ 0 & 3 & 3 \end{bmatrix} & \left\{ \begin{array}{rl} 2x + y = 5 \\ 3y = 3 \end{array} \right. \end{align*}

可以看到用矩阵表示方程更为简单,而且矩阵相对于方程更易于分析和推导,因此今后我们用矩阵代替方程。

矩阵的初等变换

上面我们用到了矩阵行的数乘与矩阵行的加和,这叫做矩阵的初等行变换。除了加法与数乘,还有一个矩阵的初行等变换,那就是交换矩阵的两行(这相当于交换两个方程的位置,当然是一个合理且合法的操作 ^_^ )。

具体定义如下:

定义 下面三种变换称为矩阵的初等行变换:

  1. 对换两行(对换 $i$, $j$ 两行,记作 $r_i \leftrightarrow r_j$)
  2. 以数 $k \ne 0$ 乘某一行中的所有元(第 $i$ 行乘 $k$,记作 $r_i \times k$)
  3. 把某一行所有元的 $k$ 倍加到另一行对应的元上去(第 $j$ 行的 $k$ 倍加到第 $i$ 行上,记作 $r_i + kr_j$)

把上述定义中的“行”换成“列”,即得矩阵的初等列变换的定义(所用记号是把 “$r$” 换成 “$c$”)。

矩阵的初等行变换与初等列变换,统称初等变换




$ \begin{bmatrix} 2 & 1 & 5 \\ 1 & -1 & 1 \end{bmatrix} \xrightarrow{① - 2 \times ②} \begin{bmatrix} 2 & 1 & 5 \\ 0 & 3 & 3 \end{bmatrix} $ 就是初等行变换。

行等价与列等价

如果矩阵 $\mathbf{A}$ 经有限次初等行变换变成矩阵 $\mathbf{B}$,就称矩阵 $\mathbf{A}$ 与 $\mathbf{B}$ 行等价,记作 $\mathbf{A} \overset{r}{\sim} \mathbf{B}$;如果矩阵 $\mathbf{A}$ 经有限次初等列变换变成矩阵 $\mathbf{B}$,就称矩阵 $\mathbf{A}$ 与 $\mathbf{B}$ 列等价,记作 $\mathbf{A} \overset{c}{\sim} \mathbf{B}$;如果矩阵 $\mathbf{A}$ 经有限次初等变换变成矩阵 $\mathbf{B}$,就称矩阵 $\mathbf{A}$ 与 $\mathbf{B}$ 等价,记作 $\mathbf{A} \sim \mathbf{B}$。




因为 $\begin{bmatrix} 2 & 1 & 5 \\ 1 & -1 & 1 \end{bmatrix} \xrightarrow{① - 2 \times ②} \begin{bmatrix} 2 & 1 & 5 \\ 0 & 3 & 3 \end{bmatrix} $,所以这两个矩阵行等价,即:$ \begin{bmatrix} 2 & 1 & 5 \\ 1 & -1 & 1 \end{bmatrix} \overset{r}{\sim} \begin{bmatrix} 2 & 1 & 5 \\ 0 & 3 & 3 \end{bmatrix} $。

行阶梯形矩阵

下面我们用消元法来解一个三元方程组:


$$ \left\{ \begin{array}{rl} x+y+z=4 \\ 2x+y+3z=7 \\ x+2y-z=4 \end{array} \right. \tag{5} $$

求解步骤如下:

首先将方程组写成增广矩阵的形式(为了清晰起见这里将方程组也列了出来):

\begin{align*} & \begin{bmatrix} \color{red}{1} & 1 & 1 & 4 \\ 2 & 1 & 3 & 7 \\ 1 & 2 & -1 & 4 \end{bmatrix} & \left\{ \begin{array}{rl} x+y+z=4 \\ 2x+y+3z=7 \\ x+2y-z=4 \end{array} \right. \end{align*}

为了消去第二行和第三行的 $x$,我们以第一行的首非零元(或称为主元Pivot)) $\color{red}{1}$ 为基准来进行消元。

用第二行减去第一行的 $2$ 倍,用第三行减去第一行:

\begin{align*} \xrightarrow[r_3 - r_1]{r_2 - 2r_1} \quad & \begin{bmatrix} \color{red}{1} & 1 & 1 & 4 \\ 0 & \color{red}{-1} & 1 & -1 \\ 0 & 1 & -2 & 0 \end{bmatrix} & \left\{ \begin{array}{rl} x+y+z=4 \\ -y+z=-1 \\ y-2z=0 \end{array} \right. \end{align*}

接着,为了消去第三行的 $y$,我们选取第二行的首非零元 $\color{red}{-1}$ 作为基准,然后用第三行加上第二行:

\begin{align*} \xrightarrow{r_3 + r_2} \quad & \begin{bmatrix} \color{red}{1} & 1 & 1 & 4 \\ 0 & \color{red}{-1} & 1 & -1 \\ 0 & 0 & \color{red}{-1} & -1 \end{bmatrix} & \left\{ \begin{array}{rl} x+y+z=4 \\ -y+z=-1 \\ -z=-1 \end{array} \right. \end{align*}

第三行的首非零元是 $\color{red}{-1}$,因为已经是最后一行了,因此消元结束。

到这里可以看到,所有行的首非零元下面的元素都为 $0$,这就构成了一个非零元为阶梯形的矩阵,我们称它为行阶梯形矩阵Row Echelon Form)。

定义 非零矩阵若满足 ⑴ 非零行在零行的上面;⑵ 非零行的首非零元所在列在上一行(如果存在的话)的首非零元所在列的右面,则称此矩阵为行阶梯形矩阵。

行最简形矩阵

消元后就是回代过程了,这里我们仍然用矩阵的初等行变换来进行回代:

为了求解 $z$,将第三行乘以 $-1$:

\begin{align*} \xrightarrow{r_3 \times -1} \quad & \begin{bmatrix} \color{red}{1} & 1 & 1 & 4 \\ 0 & \color{red}{-1} & 1 & -1 \\ 0 & 0 & \color{red}{1} & 1 \end{bmatrix} & \left\{ \begin{array}{rl} x+y+z=4 \\ -y+z=-1 \\ z=1 \end{array} \right. \end{align*}

为了回代 $z$,用第二行减去第三行,用第一行减去第三行:

\begin{align*} \xrightarrow[r_1 - r_3]{r_2 - r_3} \quad & \begin{bmatrix} \color{red}{1} & 1 & 0 & 3 \\ 0 & \color{red}{-1} & 0 & -2 \\ 0 & 0 & \color{red}{1} & 1 \end{bmatrix} & \left\{ \begin{array}{rl} x+y=3 \\ -y=-2 \\ z=1 \end{array} \right. \end{align*}

为了求解 $y$,将第二行乘以 $-1$:

\begin{align*} \xrightarrow{r_2 \times -1} \quad & \begin{bmatrix} \color{red}{1} & 1 & 0 & 3 \\ 0 & \color{red}{1} & 0 & 2 \\ 0 & 0 & \color{red}{1} & 1 \end{bmatrix} & \left\{ \begin{array}{rl} x+y=3 \\ y=2 \\ z=1 \end{array} \right. \end{align*}

为了回代 $y$,用第一行减去第二行:

\begin{align*} \xrightarrow{r_1 - r_2} \quad & \begin{bmatrix} \color{red}{1} & 0 & 0 & 1 \\ 0 & \color{red}{1} & 0 & 2 \\ 0 & 0 & \color{red}{1} & 1 \end{bmatrix} & \left\{ \begin{array}{rl} x=1 \\ y=2 \\ z=1 \end{array} \right. \end{align*}

回代过程结束。方程组解毕。

注意上面最后的矩阵中所有行的首非零元都为 $1$,并且非零元上下的元素都为 $0$,这样的矩阵称为行最简形矩阵Reduced Row Echelon Form)或行规范形矩阵Row Canonical Form)。

定义 若 $\mathbf{A}$ 是行阶梯形矩阵,并且还满足:⑴ 非零行的首非零元为 $1$;⑵ 首非零元所在的列的其他元均为 $0$,则称 $\mathbf{A}$ 为行最简形矩阵。

矩阵的秩

行阶梯型或行最简形矩阵中主元的个数称为矩阵的Rank),$\mathbf{A}$ 的秩记作 $R(\mathbf{A})$ 。

关于矩阵的秩,有一个更严格的定义:

定义 设在矩阵 $\mathbf{A}$ 中有一个不等于 $0$ 的 $r$ 阶子式 $\mathbf{D}$,且所有 $r+1$ 阶子式(如果存在的话)全等于 $0$,那么 $D$ 称为矩阵 $\mathbf{A}$ 的最高阶非零子式,数 $r$ 称为矩阵 $A$ 的秩,记作 $R(\mathbf{A})$。并规定零矩阵的秩等于 $0$。

什么是子式呢?

定义 在 $m\times n$ 矩阵 $\mathbf{A}$ 中,任取 $k$ 行与 $k$ 列($k \leqslant m, k \leqslant n$),位于这些行列交叉处的 $k^2$ 个元素,不改变它们在 $\mathbf{A}$ 中所处的位置次序而得的 $k$ 阶行列式,称为矩阵 $\mathbf{A}$ 的 $k$ 阶子式

假设有 $m\times n$ 的矩阵 $\mathbf{A}$,如果 $R(\mathbf{A}) = m$,则称 $\mathbf{A}$ 为行满秩Full Row Rank)矩阵。如果 $R(\mathbf{A}) = m$,则称 $\mathbf{A}$ 为列满秩Full Column Rank)矩阵。

无解的情况

下面我们用消元法解一个方程组:

$$ \left\{ \begin{array}{r} x+y+z=4 \\ 2x+y+3z=7 \\ 2x+3y+z=10 \end{array} \right. $$

它的系数矩阵 $\mathbf{A}$ 和增广矩阵 $\mathbf{B}$ 分别为:

$$ \mathbf{A} = \begin{bmatrix} 1 & 1 & 1 \\ 2 & 1 & 3 \\ 2 & 3 & 1 \end{bmatrix} \quad\quad\quad \mathbf{B} = \begin{bmatrix} 1 & 1 & 1 & 4 \\ 2 & 1 & 3 & 7 \\ 2 & 3 & 1 & 10 \end{bmatrix} $$

求解过程如下:

\begin{align*} & \begin{bmatrix} 1 & 1 & 1 & 4 \\ 2 & 1 & 3 & 7 \\ 2 & 3 & 1 & 10 \end{bmatrix} & \left\{ \begin{array}{rl} x+y+z=4 \\ 2x+y+3z=7 \\ 2x+3y+z=10 \end{array} \right. \\ \xrightarrow[r_3-2r_1]{r_2-2r_1} & \begin{bmatrix} 1 & 1 & 1 & 4 \\ 0 & -1 & 1 & -1 \\ 0 & 1 & -1 & 2 \end{bmatrix} & \left\{ \begin{array}{rl} x+y+z=4 \\ -y+z=-1 \\ y-z=2 \end{array} \right. \\ \xrightarrow{r_3+r_2} & \begin{bmatrix} 1 & 1 & 1 & 4 \\ 0 & -1 & 1 & -1 \\ 0 & 0 & 0 & 1 \end{bmatrix} & \left\{ \begin{array}{rl} x+y+z=4 \\ -y+z=-1 \\ 0=1 \end{array} \right. \end{align*}

可以看到最后一行变成了 $0=1$,这是不可能的,因此方程组无解。

仔细观察这个方程组的系数矩阵 $\mathbf{A}$ 和增广矩阵 $\mathbf{B}$ 可以看到 $\mathbf{A}$ 的第三行其实是前两行的线性组合($r_3=4r_1-r_2$),而 $\mathbf{B}$ 的第三行却不是前两行的线性组合,因此把 $\mathbf{A}$ 的第三行变换为 $\mathbf{A}_{r_3} = \begin{bmatrix}0&0&0\end{bmatrix}$ 时,必定有 $\mathbf{B}_{r_3} = \begin{bmatrix}0&0&0&c\end{bmatrix}$,其中 $c$ 是不为 $0$ 的常数(这里 $c = 1$)。

综上,只有当增广阵 $\mathbf{B}$ 的非零行中存在非零主元时,方程组才有解。

用秩的语言来说,就是 $R(\mathbf{A}) < R(\mathbf{B})$ 时,方程组无解。

奇异矩阵

转换为行阶梯形矩阵后,存在都是 $0$ 的行则称该矩阵为奇异矩阵。比如上例的矩阵:

$$ \mathbf{A} = \begin{bmatrix} 1 & 1 & 1 \\ 2 & 1 & 3 \\ 2 & 3 & 1 \end{bmatrix} \overset{r}{\sim} \begin{bmatrix} 1 & 1 & 1 \\ 0 & -1 & 1 \\ 0 & 0 & 0 \end{bmatrix} $$

$A$ 就是奇异矩阵。根据行列式的性质3可知奇异矩阵就是行列式为 $0$ 的矩阵,即若 $\det\mathbf{A} = 0$,则 $\mathbf{A}$ 为奇异矩阵Singular Matrix)。

同样地,我们可以定义非奇异矩阵:若 $\det\mathbf{A} \ne 0$,则 $\mathbf{A}$ 为非奇异矩阵Nonsingular Matrix)。

初等矩阵

让我们继续考虑方程组 $(5)$:

我们用消元法解这个方程组的第一步是将第二行的 $x$ 消去,即用第一行的 $-2$ 倍加上第二行:

$$ \mathbf{B} = \begin{bmatrix} 1 & 1 & 1 & 4 \\ 2 & 1 & 3 & 7 \\ 1 & 2 & -1 & 4 \end{bmatrix} \xrightarrow{- 2 r_1 + r_2} \begin{bmatrix} 1 & 1 & 1 & 4 \\ 0 & -1 & 1 & -1 \\ 1 & 2 & -1 & 4 \end{bmatrix} = \mathbf{B}’ $$

注意上面的变换相当于我们对 $\mathbf{B}$ 的行向量组做了一个线性组合:$- 2 r_1 + r_2 $

这里我们用矩阵的初等行变换将 $\mathbf{B}$ 变换为了它的行等价矩阵 $\mathbf{B}’$。那么还有没有其他方式可以将 $\mathbf{B}$ 变换为 $\mathbf{B}’$ 呢?

矩阵基础 中我们知道用单位矩阵左乘一个矩阵仍等于这个矩阵,于是有:

\begin{align*} \mathbf{E} \mathbf{B} &= \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} 1 & 1 & 1 & 4 \\ 2 & 1 & 3 & 7 \\ 1 & 2 & -1 & 4 \end{bmatrix} \\ &= \begin{bmatrix} 1 \\ 0 \\ 0 \end{bmatrix} \begin{bmatrix} 1 & 1 & 1 & 4 \end{bmatrix} + \begin{bmatrix} 0 \\ 1 \\ 0 \end{bmatrix} \begin{bmatrix} 2 & 1 & 3 & 7 \end{bmatrix} + \begin{bmatrix} 0 \\ 0 \\ 1 \end{bmatrix} \begin{bmatrix} 1 & 2 & -1 & 4 \end{bmatrix} \\ &= \begin{bmatrix} 1 \times \begin{bmatrix} 1 & 1 & 1 & 4 \end{bmatrix} + 0 \times \begin{bmatrix} 2 & 1 & 3 & 7 \end{bmatrix} + 0 \times \begin{bmatrix} 1 & 2 & -1 & 4 \end{bmatrix} \\ 0 \times \begin{bmatrix} 1 & 1 & 1 & 4 \end{bmatrix} + 1 \times \begin{bmatrix} 2 & 1 & 3 & 7 \end{bmatrix} + 0 \times \begin{bmatrix} 1 & 2 & -1 & 4 \end{bmatrix} \\ 0 \times \begin{bmatrix} 1 & 1 & 1 & 4 \end{bmatrix} + 0 \times \begin{bmatrix} 2 & 1 & 3 & 7 \end{bmatrix} + 1 \times \begin{bmatrix} 1 & 2 & -1 & 4 \end{bmatrix} \end{bmatrix} \\ &= \begin{bmatrix} 1 \times r_1 + 0 \times r_2 + 0 \times r_3 \\ 0 \times r_1 + 1 \times r_2 + 0 \times r_3 \\ 0 \times r_1 + 0 \times r_2 + 1 \times r_3 \end{bmatrix} \quad ① \\ &= \begin{bmatrix} 1 & 1 & 1 & 4 \\ 2 & 1 & 3 & 7 \\ 1 & 2 & -1 & 4 \end{bmatrix} \\ &= \mathbf{B} \end{align*}

我们把上面的过程精简一下:

\begin{align*} \mathbf{E} \mathbf{B} &= \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} 1 & 1 & 1 & 4 \\ 2 & 1 & 3 & 7 \\ 1 & 2 & -1 & 4 \end{bmatrix} \\ &= \begin{bmatrix} 1 \times r_1 + 0 \times r_2 + 0 \times r_3 \\ 0 \times r_1 + 1 \times r_2 + 0 \times r_3 \\ 0 \times r_1 + 0 \times r_2 + 1 \times r_3 \end{bmatrix} \quad ① \\ &= \begin{bmatrix} 1 & 1 & 1 & 4 \\ 2 & 1 & 3 & 7 \\ 1 & 2 & -1 & 4 \end{bmatrix} \\ &= \mathbf{B} \end{align*}

仔细观察 $①$ 式的每一行,它们是不是 $\mathbf{B}$ 的行向量的线性组合呢?当然是!而且他们是很特殊的线性组合,我们可以看到,第 $i$ 行的线性组合正好是第 $i$ 个系数为 $1$,其他系数都为 $0$ 的线性组合,比如第二行,只有第二个系数为 $1$,其他系数都为 $0$。也正因为如此,$①$ 式才能等于 $\mathbf{B}$。

因为 $①$ 的每一行都是 $\mathbf{B}$ 的行向量的线性组合,因此对 $①$ 中任一行线性组合的系数的修改,都会对应一个或若干个 $\mathbf{B}$ 的初等行变换!

比如要将 $\mathbf{B}$ 的第一行乘以 $2$,就可以调整 $①$ 的第一行的系数为 $(2,0,0)$,调整之后,我们再将上面的运算过程逆过来,看看会得到怎样的结果:

\begin{align*} \xrightarrow{r_1 \times 2} \mathbf{B} &= \xrightarrow{r_1 \times 2} \begin{bmatrix} 1 & 1 & 1 & 4 \\ 2 & 1 & 3 & 7 \\ 1 & 2 & -1 & 4 \end{bmatrix} \\ &= \begin{bmatrix} \color{red}{2} \times r_1 + 0 \times r_2 + 0 \times r_3 \\ 0 \times r_1 + 1 \times r_2 + 0 \times r_3 \\ 0 \times r_1 + 0 \times r_2 + 1 \times r_3 \end{bmatrix} \\ &= \begin{bmatrix} \color{red}{2} & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} 1 & 1 & 1 & 4 \\ 2 & 1 & 3 & 7 \\ 1 & 2 & -1 & 4 \end{bmatrix} \\ &= \left( \xrightarrow{r_1 \times 2} \mathbf{E} \right) \mathbf{B} \end{align*}

于是我们得到:$ \xrightarrow{r_1 \times 2} \mathbf{B} = \left( \xrightarrow{r_1 \times 2} \mathbf{E} \right) \mathbf{B} $

如果要将 $\mathbf{B}$ 第一行的 $-2$ 倍与第二行相加该如何操作呢?可以调整 $①$ 的第二行的系数为 $(-2, 1, 0)$ 来达到此目的:

\begin{align*} \xrightarrow{- 2 r_1 + r_2} \mathbf{B} &= \xrightarrow{- 2 r_1 + r_2} \begin{bmatrix} 1 & 1 & 1 & 4 \\ 2 & 1 & 3 & 7 \\ 1 & 2 & -1 & 4 \end{bmatrix} \\ &= \begin{bmatrix} 1 \times r_1 + 0 \times r_2 + 0 \times r_3 \\ \color{red}{-2} \times r_1 + 1 \times r_2 + 0 \times r_3 \\ 0 \times r_1 + 0 \times r_2 + 1 \times r_3 \end{bmatrix} \\ &= \begin{bmatrix} 1 & 0 & 0 \\ \color{red}{-2} & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} 1 & 1 & 1 & 4 \\ 2 & 1 & 3 & 7 \\ 1 & 2 & -1 & 4 \end{bmatrix} \\ &= \left( \xrightarrow{- 2 r_1 + r_2} \mathbf{E} \right) \mathbf{B} \end{align*}

于是:$ \xrightarrow{- 2 r_1 + r_2} \mathbf{B} = \left( \xrightarrow{- 2 r_1 + r_2} \mathbf{E} \right) \mathbf{B} $

如何交换 $\mathbf{B}$ 的第一行与第二行呢?只需要交换 $①$ 的第一行与第二行就可以了:

\begin{align*} \xrightarrow{r_1 \leftrightarrow r_2} \mathbf{B} &= \xrightarrow{r_1 \leftrightarrow r_2} \begin{bmatrix} 1 & 1 & 1 & 4 \\ 2 & 1 & 3 & 7 \\ 1 & 2 & -1 & 4 \end{bmatrix} \\ &= \begin{bmatrix} \color{red}{0} \times r_1 + \color{red}{1} \times r_2 + 0 \times r_3 \\ \color{red}{1} \times r_1 + \color{red}{0} \times r_2 + 0 \times r_3 \\ 0 \times r_1 + 0 \times r_2 + 1 \times r_3 \end{bmatrix} \\ &= \begin{bmatrix} \color{red}{0} & \color{red}{1} & 0 \\ \color{red}{1} & \color{red}{0} & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} 1 & 1 & 1 & 4 \\ 2 & 1 & 3 & 7 \\ 1 & 2 & -1 & 4 \end{bmatrix} \\ &= \left( \xrightarrow{r_1 \leftrightarrow r_2} \mathbf{E} \right) \mathbf{B} \end{align*}

于是:$ \xrightarrow{r_1 \leftrightarrow r_2} \mathbf{B} = \left( \xrightarrow{r_1 \leftrightarrow r_2} \mathbf{E} \right) \mathbf{B} $

综上,我们得出一个重要的结论:对 $\mathbf{B}$ 做初等行变换,等价于对单位矩阵 $\mathbf{E}$ 做同样的初等行变换,再用结果乘以 $\mathbf{B}$ !

定义 我们把由单位矩阵 $\mathbf{E}$ 经过一次初等变换得到的矩阵称为初等矩阵Elementary Matrix)。

上面的讨论中,我们将初等矩阵表示为 $\xrightarrow{} \mathbf{E}$,这很不方便书写和阅读。为此,我们将 $\xrightarrow{r_i \pm k \times r_j } \mathbf{E}$ 记为 $\mathbf{E}_{ij}$,由于它通常是用来消元的,因此在特定的上下文中我们也称它为消元矩阵Elimination Matrix)。我们将 $\xrightarrow{ r_1 \leftrightarrow r_2 } \mathbf{E}$ 记为 $\mathbf{P}_{ij}$,由于这个初等矩阵是用来交换两行的,因此在特定的上下文中我们也称它为置换矩阵Permutation Matrix)。

消元法的实质就是不断地用初等矩阵左乘增广矩阵进行初等行变换,最后变成行最简形矩阵的过程。即:

$$ \mathbf{E}_n \cdots \mathbf{E}_2 \mathbf{E}_1 \mathbf{B} = \text{行最简形矩阵} $$

可以简单地将消元法表示为:$\mathbf{E}_{X} \mathbf{B} = \text{行最简形矩阵}$,其中 $\mathbf{E}_{X}$ 是所有初等变换的乘积。为了方便描述,今后将 $\mathbf{E}_{X}$ 叫做变换矩阵。

逆矩阵

当我们用一款编辑软件写文章时,如果写错了,通常用 Crtl+Z 来回退(Undo)到上一个状态,如果我们还想再恢复到刚刚写错的状态,我们可以通过 Crtl+Y 来进行重做(Redo)操作。显然 Ctrl+ZCtrl+Y 是一对逆操作,可以互相抵消。在矩阵中,我们也可以有这样的逆操作。

还是以方程组 $(5)$ 为例:

它的增广矩阵为:

$$ \mathbf{B} = \begin{bmatrix} 1 & 1 & 1 & 4 \\ 2 & 1 & 3 & 7 \\ 1 & 2 & -1 & 4 \end{bmatrix} $$

交换 $\mathbf{B}$ 的第一行和第二行,再交换 $\mathbf{B}$ 的第二行和第一行,可以想象这是一对逆操作,具体运算过程如下:

\begin{align*} \xrightarrow[r_2 \leftrightarrow r_1]{r_1 \leftrightarrow r_2} \mathbf{B} &= \mathbf{P}_{21} \left(\mathbf{P}_{12} \mathbf{B} \right) = \mathbf{P}_{21} \mathbf{P}_{12} \mathbf{B} \\ &= \begin{bmatrix} 0&1&0 \\ 1&0&0 \\ 0&0&1 \end{bmatrix} \begin{bmatrix} 0&1&0 \\ 1&0&0 \\ 0&0&1 \end{bmatrix} \begin{bmatrix} 1 & 1 & 1 & 4 \\ 2 & 1 & 3 & 7 \\ 1 & 2 & -1 & 4 \end{bmatrix} \\ &= \begin{bmatrix} 1&0&0 \\ 0&1&0 \\ 0&0&1 \end{bmatrix} \begin{bmatrix} 1 & 1 & 1 & 4 \\ 2 & 1 & 3 & 7 \\ 1 & 2 & -1 & 4 \end{bmatrix} \\ &= \mathbf{E} \mathbf{B} = \mathbf{B} \end{align*}

同样地,将 $\mathbf{B}$ 的第一行乘以 $2$,再将 $\mathbf{B}$ 的第一行乘以 $\dfrac{1}{2}$,也是一对逆操作:

\begin{align*} \xrightarrow[r_1 \times \frac{1}{2}]{r_1 \times 2} \mathbf{B} &= \mathbf{E}_{\frac{1}{2}r_1} \left(\mathbf{E}_{2r_1} \mathbf{B} \right) = \mathbf{E}_{\frac{1}{2}r_1} \mathbf{E}_{2r_1} \mathbf{B} \\ &= \begin{bmatrix} \frac{1}{2}&0&0 \\ 0&1&0 \\ 0&0&1 \end{bmatrix} \begin{bmatrix} 2&0&0 \\ 0&1&0 \\ 0&0&1 \end{bmatrix} \begin{bmatrix} 1 & 1 & 1 & 4 \\ 2 & 1 & 3 & 7 \\ 1 & 2 & -1 & 4 \end{bmatrix} \\ &= \begin{bmatrix} 1&0&0 \\ 0&1&0 \\ 0&0&1 \end{bmatrix} \begin{bmatrix} 1 & 1 & 1 & 4 \\ 2 & 1 & 3 & 7 \\ 1 & 2 & -1 & 4 \end{bmatrix} \\ &= \mathbf{E} \mathbf{B} = \mathbf{B} \end{align*}

最后,将 $\mathbf{B}$ 的第二行加上第一行的 $2$ 倍,再将 $\mathbf{B}$ 的第二行减去第一行的 $2$ 倍,也是一对逆操作:

\begin{align*} \xrightarrow[r_2 - 2 r_1]{r_2 + 2 r_1} \mathbf{B} &= \mathbf{E}_{r_2 - 2 r_1} \left(\mathbf{E}_{r_2 + 2 r_1} \mathbf{B} \right) = \mathbf{E}_{r_2 - 2 r_1} \mathbf{E}_{r_2 + 2 r_1} \mathbf{B} \\ &= \begin{bmatrix} 1&0&0 \\ -2&1&0 \\ 0&0&1 \end{bmatrix} \begin{bmatrix} 1&0&0 \\ 2&1&0 \\ 0&0&1 \end{bmatrix} \begin{bmatrix} 1 & 1 & 1 & 4 \\ 2 & 1 & 3 & 7 \\ 1 & 2 & -1 & 4 \end{bmatrix} \\ &= \begin{bmatrix} 1&0&0 \\ 0&1&0 \\ 0&0&1 \end{bmatrix} \begin{bmatrix} 1 & 1 & 1 & 4 \\ 2 & 1 & 3 & 7 \\ 1 & 2 & -1 & 4 \end{bmatrix} \\ &= \mathbf{E} \mathbf{B} = \mathbf{B} \end{align*}

通过上面的演算,我们得到:$\mathbf{P}_{21} \mathbf{P}_{12} = \mathbf{E}$,$\mathbf{E}_{\frac{1}{2}r_1} \mathbf{E}_{2r_1} = \mathbf{E}$,$\mathbf{E}_{r_2 - 2 r_1} \mathbf{E}_{r_2 + 2 r_1} = \mathbf{E}$,即逆操作的乘积为单位矩阵 $E$

于是我们有了逆矩阵的定义。

定义 对于 $n$ 阶矩阵 $\mathbf{A}$,如果有一个 $n$ 阶矩阵 $\mathbf{B}$,使

$$ \mathbf{A} \mathbf{B} = \mathbf{B} \mathbf{A} = \mathbf{E} $$

则说矩阵 $\mathbf{A}$ 是可逆的Invertible),并把矩阵 $\mathbf{B}$ 称为 $\mathbf{A}$ 的逆矩阵Inverse Matrix),简称逆阵

$\mathbf{A}$ 的逆矩阵记作 $\mathbf{A}^{-1}$。即若 $\mathbf{A} \mathbf{B} = \mathbf{B} \mathbf{A} = \mathbf{E}$,则 $\mathbf{B}=\mathbf{A}^{-1}$。

注意互逆的两个矩阵是满足交换律的,即 $\mathbf{A}\mathbf{B} = \mathbf{B}\mathbf{A}$,结合上面的演算,这是很好理解的,比如先交换第一行和第二行再交换第二行和第一行,与先交换第二行和第一样再交换第二行和第一行,结果是一样的。再比如第一行先乘以 $2$ 再乘以 $\frac{1}{2}$,与第一行先乘以 $\frac{1}{2}$ 再乘以 $2$,结果是一样的。(如果读者不相信,请互换上面演算中两个初等矩阵的位置进行演算和验证。)

现在我们可以用逆矩阵来描述一个方程组了,假设有方程组 $\mathbf{A}\mathbf{x}=\mathbf{b}$,这可以理解为 $\mathbf{x}$ 经过若干次初等行变换 $\mathbf{A}$ 变为了 $\mathbf{b}$,那么如何将 $\mathbf{b}$ 变换回 $\mathbf{x}$ 呢?当然是左乘 $\mathbf{A}$ 的逆运算 $\mathbf{A}^{-1}$,即:$ \mathbf{A}^{-1} \mathbf{b} = \mathbf{x} $,这正是方程组的解。由此我们得出结论,只要计算出 $\mathbf{A}^{-1}$,就解得了方程。

下面就要介绍计算 $\mathbf{A}^{-1}$ 的方法了吗?No!我们要首先问自己,$\mathbf{A}^{-1}$ 一定存在吗?

不一定。考虑下面的矩阵:

$$ \mathbf{A} = \begin{bmatrix} 1&2&3 \\ 4&5&6 \\ 0&0&0 \end{bmatrix} $$

会存在 $\mathbf{B}$ 使得 $\mathbf{A} \mathbf{B} = \mathbf{B} \mathbf{A} = \mathbf{E}$ 吗?肯定不存在,因为 $\mathbf{A}$ 有一个零行,因此 $\mathbf{A} \mathbf{B}$ 一定会得到一个零行,显然这不可能等于单位矩阵 $\mathbf{E}$。

根据奇异矩阵和非奇异矩阵的定义,我们有奇异矩阵不可逆,非奇异矩阵可逆

高斯-若尔当消元法

高斯-若尔当消元法Gauss-Jordan Elimination)是计算逆矩阵的一种方法。

如何将 $\mathbf{A}$ 变换为单位矩阵 $\mathbf{E}$ ?当然是用变换矩阵 $\mathbf{A}^{-1}$ 左乘 $\mathbf{A}$!如何将 $\mathbf{E}$ 变为 $\mathbf{A}^{-1}$?当然是用变换矩阵 $\mathbf{A}^{-1}$ 左乘 $\mathbf{E}$!变换矩阵 $\mathbf{A}^{-1}$ 是什么?当然是若干个初等矩阵的乘积!初等矩阵是什么?初等矩阵当然就是初等变换!

基于上面的思考,如果我们能够对 $\mathbf{A}$ 作一系列初等行变换变为 $\mathbf{E}$,那么我们对 $\mathbf{E}$ 作同样的初等行变换就能得到 $\mathbf{A}^{-1}$,即:

$$ \mathbf{A}^{-1} \mathbf{A} = \mathbf{E} \quad \quad \mathbf{A}^{-1} \mathbf{E} = \mathbf{A}^{-1} $$

注意上式的矩阵相乘并不表示真的矩阵相乘,而是表示经过若干次初等行变换

如何保证应用于 $\mathbf{A}$ 的初等行变换也能同样地应用于 $\mathbf{E}$ 呢?将他们并排放在一行就行了!

于是我们“重新发明”了高斯-若尔当消元法:

1、首先将 $\mathbf{A}$ 与 $\mathbf{E}$ 放在一起,得:$\begin{bmatrix} \mathbf{A} & \mathbf{E} \end{bmatrix}$。
2、然后利用若干初等行变换将 $\mathbf{A}$ 变换为 $\mathbf{E}$,此时 $\mathbf{E}$ 就变成了 $\mathbf{A}^{-1}$,即 $\begin{bmatrix} \mathbf{A} & \mathbf{E} \end{bmatrix} \xrightarrow{若干初等行变换} \begin{bmatrix} \mathbf{E} & \mathbf{A}^{-1} \end{bmatrix} $

矩阵分解

在利用消元法解方程组时,我们用消元矩阵左乘系数矩阵,得到行阶梯型矩阵。比如方程组 (5):

它的系数矩阵为:

$$ \mathbf{A} = \begin{bmatrix} 1 & 1 & 1 \\ 2 & 1 & 3 \\ 1 & 2 & -1 \end{bmatrix} $$

在利用消元法解方程组时,$\mathbf{A}$ 的变化如下:

\begin{align*} \mathbf{A} & \xrightarrow[r_3+r_2]{\begin{array}{l} r_2-2r_1 \\ r_3 - r_1 \end{array}} \begin{bmatrix} 1 & 1 & 1 \\ 2 & 1 & 3 \\ 1 & 2 & -1 \end{bmatrix} \\ & = \begin{bmatrix} 1&0&0 \\ 0&1&0 \\ 0&1&1 \end{bmatrix} \begin{bmatrix} 1&0&0 \\ 0&1&0 \\ -1&0&1 \end{bmatrix} \begin{bmatrix} 1&0&0 \\ -2&1&0 \\ 0&0&1 \end{bmatrix} \begin{bmatrix} 1 & 1 & 1 \\ 2 & 1 & 3 \\ 1 & 2 & -1 \end{bmatrix} \\ &= \begin{bmatrix} 1&0&0 \\ -2&1&0 \\ -3&1&1 \end{bmatrix} \begin{bmatrix} 1 & 1 & 1 \\ 2 & 1 & 3 \\ 1 & 2 & -1 \end{bmatrix} \\ &= \begin{bmatrix} 1 & 1 & 1 \\ 0 & -1 & 1 \\ 0 & 0 & -1 \end{bmatrix} \end{align*}

可以看到最后的结果是一个主对角线下方都是 $0$ 的矩阵,我们把这种矩阵叫做上三角矩阵Upper Triangular Matrix),用 $\mathbf{U}$ 表示。

如果用 $\mathbf{E}$ 表示对 $\mathbf{A}$ 做的所有变换,则:

$$ \mathbf{E} \mathbf{A} = \mathbf{U} $$

两边左乘 $\mathbf{E}^{-1}$,有:

\begin{align*} \mathbf{A} &= \mathbf{E}^{-1} \mathbf{U} \\ &= \begin{bmatrix} 1 & 0 & 0 \\ 2 & 1 & 0 \\ 1 & -1 & 1 \end{bmatrix} \mathbf{U} \end{align*}

($\mathbf{E}$ 及 $\mathbf{E}^{-1}$ 的计算)


我们先来看变换过程(这里用 $r^{(i)}$ 表示第 $r$ 行的第 $i$ 次变换):

$r_2^{(1)} = r_2 - 2r_1 \quad r_3^{(1)} = r_3 - r_1 \quad r_3^{(2)} = r_3^{(1)} + r_2^{(1)}$

可以把它简化为两次变换:

$r_2^{(1)} = r_2 - 2r_1 \quad r_3^{(1)} = r_3 - r_1 + r_2^{(1)} = r_3 - 3r_1 + r_2$

这样我们就得到了:

$\mathbf{E} = \begin{bmatrix} 1&0&0 \\ -2&1&0 \\ -3&1&1 \end{bmatrix} $

而 $\mathbf{E}^{-1}$ 就是将变换过程反过来:

$r_2^{(1)} = r_2+2r_1 \quad r_3^{(1)} = r_3 + 3r_1 - r_2^{(1)} = r_3 + 3r_1 - r_2 - 2r_1 = r_3 + r_1 - r_2$

于是:

$\mathbf{E}^{-1} = \begin{bmatrix} 1 & 0 & 0 \\ 2 & 1 & 0 \\ 1 & -1 & 1 \end{bmatrix} $

可以看到 $\mathbf{E}^{-1}$ 是一个主对角线上方都是 $0$ 的矩阵,我们把这种矩阵叫做 下三角矩阵Lower Triangular Matrix),用 $\mathbf{L}$ 表示。

于是,我们的 $\mathbf{A}$ 就被分解为一个下三角矩阵与一个上三角矩阵的乘积:

$$ \mathbf{A} = \mathbf{L} \mathbf{U} $$

这就是矩阵分解Matrix Factorization)。

再来看上面的例子,我们已经把 $\mathbf{A}$ 分解为下三角阵 $\mathbf{L}$ 和上三角阵 $\mathbf{U}$:

$$ \mathbf{A} = \mathbf{L} \mathbf{U} = \begin{bmatrix} 1 & 0 & 0 \\ 2 & 1 & 0 \\ 1 & -1 & 1 \end{bmatrix} \begin{bmatrix} 1 & 1 & 1 \\ 0 & -1 & 1 \\ 0 & 0 & -1 \end{bmatrix} $$

注意 $\mathbf{L}$ 的主对角线上的元都为 $1$,而 $\mathbf{U}$ 的主对角线却不是如此,为了看起来更美观一些,我们可以把 $U$ 拆分成对角阵与上三角阵的积:

$$ \mathbf{A} = \mathbf{L} \mathbf{U} = \begin{bmatrix} 1 & 0 & 0 \\ 2 & 1 & 0 \\ 1 & -1 & 1 \end{bmatrix} \begin{bmatrix} 1 & 0 & 0 \\ 0 & -1 & 0 \\ 0 & 0 & -1 \end{bmatrix} \begin{bmatrix} 1 & 1 & 1 \\ 0 & 1 & -1 \\ 0 & 0 & 1 \end{bmatrix} $$

如果用 $D$ 表示对角阵,那么 $\mathbf{A}$ 就可以写成:

$$ \mathbf{A} = \mathbf{L} \mathbf{D} \mathbf{U} $$

这是矩阵分解的终极形态。

有了矩阵分解的知识,就可以通过矩阵分解来解方程组了,现在引入 $\mathbf{x}$ 和 $\mathbf{b}$,有:

$$ \mathbf{LUx} = \mathbf{b} $$

这样我们就可以分两步来解方程组:通过 $\mathbf{Lc} = \mathbf{b}$ 解出 $\mathbf{c}$,再通过 $\mathbf{Ux} = \mathbf{c}$ 解出 $x$。

代入上面的例子,有:

\begin{align*} \mathbf{Lc} &= \mathbf{b} \\ \begin{bmatrix} 1 & 0 & 0 \\ 2 & 1 & 0 \\ 1 & -1 & 1 \end{bmatrix} \mathbf{c} &= \begin{bmatrix} 4 \\ 7 \\ 4 \end{bmatrix} \end{align*}

解出:

$$ \mathbf{c} = \begin{bmatrix} 4 \\ -1 \\ -1 \end{bmatrix} $$

再解出 $x$:

\begin{align*} \mathbf{Ux} &= \mathbf{c} \\ \begin{bmatrix} 1 & 1 & 1 \\ 0 & -1 & 1 \\ 0 & 0 & -1 \end{bmatrix} \mathbf{x} &= \begin{bmatrix} 4 \\ -1 \\ -1 \end{bmatrix} \end{align*}

解得:

$$ \mathbf{x} = \begin{bmatrix} 1\\2\\1 \end{bmatrix} $$


以上就是解线性方程组的全部内容,如果有任何疑问或建议,请在留言区留言!

版权声明:本文为原创文章,转载请注明出处。http://cynhard.com/2018/10/15/LA-Solving-Linear-Equations/

推荐文章