Skip to content

Latest commit

 

History

History
190 lines (147 loc) · 12.4 KB

2.3SolvingSystemsOfLinearEquations.md

File metadata and controls

190 lines (147 loc) · 12.4 KB

2.3 求解线性方程组

在(2.3)中,我们介绍了方程组的一般形式,即

$$ \begin{array}{clr} a_{11}x_1 + \cdots + a_{1n}x_n & = b_1 \\ & \vdots \\ a_{m1}x_1 + \cdots + a_{mn}x_n & = b_m \tag{2.37} \end{array} $$

其中 $ a_{ij} \in \mathbb{R} $ 和 $ b_i \in \mathbb{R} $ 是已知常数, $ x_j $ 是未知数, $ i = 1,...,m, \ j = 1,...,n $。到目前为止,我们看到矩阵可以用来精确表达线性方程组的紧凑形式,以便我们可以写出 $ \boldsymbol {Ax} = \boldsymbol b $ ,参见(2.10)。 此外,我们定义了基本的矩阵运算,例如矩阵的加法和乘法。 在下文中,我们将专注于求解线性方程组并提供一种求矩阵逆的算法。

2.3.1 特解和通解

在讨论如何对线性方程组进行一般求解之前,让我们先看一个例子。 考虑方程组

$$ \begin{bmatrix} 1 & 0 & 8 & -4 \ 0 & 1 & 2 & 12 \end{bmatrix} \begin{bmatrix} x_1 \ x_2 \ x_3 \ x_4 \end{bmatrix} = \begin{bmatrix} 42 \ 8 \end{bmatrix} \tag{2.38} $$

该系统有两个方程和四个未知数。 因此,通常我们会期望有无穷多个解。 这个方程组的形式特别简单,其中前两列由 $ 1 $ 和 $ 0 $ 组成。请记住,我们要找到标量 $ x_1,...,x_4 $ ,使得 $\sum^{4}_{i=1}{x_i \boldsymbol c_i} = \boldsymbol b $,其中我们将 $ \boldsymbol c_i $ 定义为矩阵的第 $ i $ 列,将 $ \boldsymbol b $ 定义为(2.38)的右侧。我们对第一列乘42,第二列乘8,便可以立即找到 (2.38) 中问题的解

$$ \boldsymbol b = \begin{bmatrix} 42 \ 8 \end{bmatrix} = 42 \begin{bmatrix} 1 \ 0 \end{bmatrix} + 8 \begin{bmatrix} 0 \ 1 \end{bmatrix} \tag{2.39} $$

因此,一个解是 $ [42,8,0,0]^{\top} $ 。 这种解称为 特解(particular solution/special solution)。然而,这并不是这个线性方程组的唯一解。 为了捕获所有其他解,我们需要创造性地使用矩阵的列以一种有意义的方式生成 $ \boldsymbol 0 $:将 $ \boldsymbol 0 $ 添加到我们的特解中并不会改变特解。 为此,我们使用前两列(这种非常简单的形式)表示第三列

$$ \begin{bmatrix} 8 \ 2 \end{bmatrix} = 8 \begin{bmatrix} 1 \ 0 \end{bmatrix} + 2 \begin{bmatrix} 0 \ 1 \end{bmatrix} \tag{2.40} $$

所以 $ \boldsymbol 0 = 8 \boldsymbol c_1 + 2 \boldsymbol c_2 - 1 \boldsymbol c_3 + 0 \boldsymbol c_4 $ 且 $ (x_1,x_2,x_3,x_4) = (8,2,-1,0) $。事实上,这个解的任何 $ \lambda{_1} \in \mathbb{R} $ 缩放都会产生 $ \boldsymbol 0 $ 向量,即,

$$ \begin{bmatrix} 1 & 0 & 8 & -4 \ 0 & 1 & 2 & 12 \end{bmatrix} \left( \lambda{_1} \begin{bmatrix} 8 \ 2 \ -1 \ 0 \end{bmatrix} \right) = \lambda{_1} (8 \boldsymbol c_1 + 2 \boldsymbol c_2 - \boldsymbol c_3) = \boldsymbol 0 \tag{2.41} $$

按照相同的推理思路,我们使用前两列表达(2.38)中矩阵的第四列,并为任何 $ \lambda{_3} \in \mathbb{R} $ 生成另一组有意义的 $ \boldsymbol 0 $

$$ \begin{bmatrix} 1 & 0 & 8 & -4 \ 0 & 1 & 2 & 12 \end{bmatrix} \left( \lambda{_2} \begin{bmatrix} -4 \ 12 \ 0 \ -1 \end{bmatrix} \right) = \lambda{_3} (-4 \boldsymbol c_1 + 12 \boldsymbol c_2 - \boldsymbol c_4) = \boldsymbol 0 \tag{2.42} $$

综上所述,我们得到式(2.38)中方程组的所有解,称为 通解(general solution),集合为

$$ \left{ \boldsymbol x \in \mathbb{R}^4 : \boldsymbol x = \begin{bmatrix} 42 \ 8 \ 0 \ 0 \end{bmatrix} + \lambda{_1} \begin{bmatrix} 8 \ 2 \ -1 \ 0 \end{bmatrix} + \lambda{_2} \begin{bmatrix} -4 \ 12 \ 0 \ -1 \end{bmatrix}, \ \lambda{_1},\lambda{_2} \in \mathbb{R} \right} \tag{2.43} $$

备注。 我们遵循的一般方法包括以下三个步骤:

  1. 求 $ \boldsymbol {Ax} = \boldsymbol b $ 的特解。
  2. 求 $ \boldsymbol {Ax} = \boldsymbol 0 $ 的所有解。
  3. 结合步骤1和2的解决方案成为通解。

通解和特解都不是唯一的。

前面例子中的线性方程组很容易求解,因为(2.38)中的矩阵具有这种特别方便的形式,这使我们可以通过检查找到特解和通解。 然而,一般方程系统不是这种简单的形式。 幸运的是,存在一种将任何线性方程组转换为这种特别简单的形式的构造算法:高斯消元法(Gaussian elimination)。 高斯消元的关键是线性方程组的初等变换,将方程组转化为简单的形式。 然后,我们可以将这三个步骤应用到这种简单形式上,正是我们刚刚在 (2.38) 示例上下文中讨论的方法。

2.3.2 初等变换

求解线性方程组的关键是保持解集不变的 初等变换( elementary transformations),同时将方程组转换为更简单的形式:

  • 交换两个方程(矩阵中的行代表方程组)
  • 方程(行)乘以一个常数 $ \lambda \in \mathbb{R} \backslash {0} $
  • 两个方程相加(行)

例2.6 对于 $ a \in \mathbb{R} $,我们寻求以下方程组的所有解: $$ \begin{array}{clr} -2x_1 & + & 4x_2 & - & 2x_3 & - & x_4 & + & 4x_5 & = & -3 \ 4x_1 & - & 8x_2 & + & 3x_3 & - & 3x_4 & + & x_5 & = & 2 \ x_1 & - & 2x_2 & + & x_3 & - & x_4 & + & x_5 & = & 0 \ x_1 & - & 2x_2 & & & - & 3x_4 & + & 4x_5 & = & a \tag{2.44} \end{array} $$ 我们首先将这个方程组转换为紧凑矩阵形式 $ \boldsymbol {Ax} = \boldsymbol b $。 我们不再明确提及变量 $ \boldsymbol x $ 并构建 增广矩阵(augmented matrix)(形式为 $ \begin{bmatrix} \boldsymbol A \ | \ \boldsymbol b \end{bmatrix} $)$$ \left[ \begin{array}{ccccc|c} -2 & 4 & -2 & -1 & 4 & -3 \ 4 & -8 & 3 & -3 & 1 & 2 \ 1 & -2 & 1 & -1 & 1 & 0 \ 1 & -2 & 0 & -3 & 4 & a \end{array} \right] \begin{matrix} 与R_3交换 \ \ 与R_1交换\ \ \end{matrix} $$ 在 (2.44) 中,我们使用垂直线将左侧和右侧分开。 我们用 $ \leadsto $ 来表示增广矩阵的初等变换。 交换第1行和第3行结果为 $$ \left[ \begin{array}{ccccc|c} 1 & -2 & 1 & -1 & 1 & 0 \ 4 & -8 & 3 & -3 & 1 & 2 \ -2 & 4 & -2 & -1 & 4 & -3 \ 1 & -2 & 0 & -3 & 4 & a \end{array} \right] \begin{matrix} \ -4R_1 \ +2R_1 \ -R_1 \ \end{matrix} $$ 当我们现在应用指定的转换时(例如,从 Row 2 中减去 Row 1 四次),我们得到 $$ \left[ \begin{array}{ccccc|c} 1 & -2 & 1 & -1 & 1 & 0 \ 0 & 0 & -1 & 1 & -3 & 2 \ 0 & 0 & 0 & -3 & 6 & -3 \ 0 & 0 & -1 & -2 & 3 & a \end{array} \right] \begin{matrix} \ \ \ -R_2 - R_3 \ \end{matrix} $$ $$ \leadsto \left[ \begin{array}{ccccc|c} 1 & -2 & 1 & -1 & 1 & 0 \ 0 & 0 & -1 & 1 & -3 & 2 \ 0 & 0 & 0 & -3 & 6 & -3 \ 0 & 0 & 0 & 0 & 0 & a + 1 \end{array} \right] \begin{matrix} \ · (-1) \ · (-\frac{1}{3}) \ \ \end{matrix} $$ $$ \leadsto \left[ \begin{array}{ccccc|c} 1 & -2 & 1 & -1 & 1 & 0 \ 0 & 0 & 1 & -1 & 3 & -2 \ 0 & 0 & 0 & 1 & -2 & 1 \ 0 & 0 & 0 & 0 & 0 & a + 1 \end{array} \right] $$ 这个(增广)矩阵是一个方便的形式,行阶梯形矩阵(REF)(row-echelon form)。将这个紧凑的表示法还原为显式表示法,并使用我们所寻找的变量,我们得到: $$ \begin{array}{clr} x_1 & - & 2x_2 & + & x_3 & - & x_4 & + & x_5 & = & 0 \ & & & & x_3 & - & x_4 & + & 3x_5 & = & -2 \ & & & & & & x_4 & - & 2x_5 & = & 1 \ & & & & & & & & 0 & = & a + 1 \tag{2.45} \end{array} $$ 只有当 $ a= –1 $ 时,才能解出这个方程组。特解(particular solution) 是: $$ \begin{bmatrix} x_1 \ x_2 \ x_3 \ x_4 \ x_5 \end{bmatrix} = \begin{bmatrix} 2 \ 0 \ -1 \ 1 \ 0 \end{bmatrix} \tag{2.46} $$ 通解(general solution),也就是所有可能解的集合,是: $$ \left{ \boldsymbol x \in \mathbb{R}^5: \boldsymbol x = \begin{bmatrix} 2 \ 0 \ -1 \ 1 \ 0 \end{bmatrix} + \lambda{1}\begin{bmatrix} 2 \ 1 \ 0 \ 0 \ 0 \end{bmatrix} + \lambda{2}\begin{bmatrix} 2 \ 0 \ -1 \ 2 \ 1 \end{bmatrix}, \ \lambda_{1}\lambda_{1} \in \mathbb{R} \right} \tag{2.47} $$

下面,我们将详细介绍一种构造方法来获得线性方程组的特解和通解。

备注(主元和阶梯结构)。 行的首项系数(leading coefficient,从左侧开始的第一个非零数)称为 主元(pivot),并且始终严格位于其上一行的主元的右侧。 因此,任何行阶梯形式的方程组都具有“阶梯”结构。

定义2.6(行阶梯形矩阵)。 一个矩阵是行阶梯形矩阵,如果满足:

  • 所有只包含0的行都在矩阵的底部;相应地,所有包含至少一个非零元素的行都位于只包含零的行之上。

  • 只看非零行,从左起的第一个非零数(也称为 主元(pivot)领先系数(leading coefficient) )总是严格地在它上面一行的主元的右边。

在其他文档资料中,有时需要主元为1。

备注(基本变量和自由变量)。 行梯队形式的主元对应的变量称为 基本变量(basic variables),其他变量为 自由变量( free variables)。 例如,在(2.45)中,$ x_1, x_3, x_4 $ 是基本变量,而 $ x_2, x_5 $ 是自由变量。

备注(求特解)。行梯队形式使我们在求特解时变的更容易。为了做到这一点,我们用主元列表示方程组的右边列,使得 $ \boldsymbol b = \sum_{i=1}^{P}{{\lambda}_i \boldsymbol p_i}, i = 1,...,P $, 其中 $ \boldsymbol p_i $ 为主元列。如果我们从最右边的主元列开始并向左计算,则很容易确定 $ {\lambda}_i $ 。

在前面的例子中,我们会尝试找到 $ {\lambda}_1, {\lambda}_2, {\lambda}_3 $ 以便

$$ {\lambda}_1\begin{bmatrix} 1 \ 0 \ 0 \ 0 \end{bmatrix} + {\lambda}_2\begin{bmatrix} 1 \ 1 \ 0 \ 0 \end{bmatrix} + {\lambda}_3\begin{bmatrix} -1 \ -1 \ 1 \ 0 \end{bmatrix} = \begin{bmatrix} 0 \ -2 \ 1 \ 0 \end{bmatrix} \tag{2.48} $$

从这里,我们相对直接地发现 $ {\lambda}_3 = 1, {\lambda}_2 = -1, {\lambda}_1 = 2 $。当我们把所有东西放在一起时,我们一定不要忘记我们将系数隐式设置为0的非主元列。因此,我们得到特解 $ x = [2, 0, −1, 1, 0]^{\top} $。

备注(简化行阶梯形)如果一个方程组是简化行阶梯形(也叫做行简化阶梯形或行正则形):

  • 它采用行梯队形式。
  • 每个主元都是 1。
  • 主元是其列中唯一的非零元素。

简化行阶梯形将在2.3.3节后面发挥重要作用,因为它允许我们以一种直接的方式确定线性方程组的通解。

备注(高斯消元法)。 高斯消元(Gaussian Elimination) 是一种算法,可以通过执行初等变换将线性方程组变为简化行阶梯形。

例2.7(简化行阶梯形) 验证以下矩阵是否采用简化行阶梯形(主元以粗体显示): $$ \boldsymbol A = \begin{bmatrix} \boldsymbol 1 & 3 & 0 & 0 & 3\ 0 & 0 & \boldsymbol 1 & 0 & 9 \ 0 & 0 & 0 & \boldsymbol 1 & 4 \end{bmatrix} \tag{2.49} $$ 求 $ \boldsymbol {Ax = 0} $ 的解的关键是查看非主元列,我们需要将其表示为主元列的(线性)组合。简化行阶梯形使得这相对简单一些,我们根据其左侧的主元列的总和和倍数来表示非主元列:第二列是第一列的 3 倍(我们可以忽略第二列的右侧的主元列)。因此,为了得到 $ \boldsymbol 0 $ ,我们需要从第一列的三倍中减去第二列。 现在,我们看第五列,这是我们的第二个非主元列。 第五列可以表示为第一个主元列的 3 倍、第二个主元列的 9 倍和第三个主元列的 -4 倍。 我们需要跟踪主元列的索引并将其转换为第一列的 3 倍,第二列(非主元列)的 0 倍,第三列(我们的第二个主元列)的 9 倍 ,第四列的 -4 倍(即第三个主元列)。 然后我们需要减去第五列得到 $ \boldsymbol 0 $ 。最终,我们仍然在求解一个齐次方程组。 总而言之,$ \boldsymbol {Ax = 0}, x \in \mathbb{R}^5 $ 的所有解由下式给出 $$ \left{ \boldsymbol x \in \mathbb{R}^5: \boldsymbol x = \lambda{1}\begin{bmatrix} 3 \ -1 \ 0 \ 0 \ 0 \end{bmatrix} + \lambda{2}\begin{bmatrix} 3 \ 0 \ 9 \ -4 \ -1 \end{bmatrix}, \ \lambda_{1}\lambda_{1} \in \mathbb{R} \right} \tag{2.50} $$

2.3.3 减1技巧

下面,我们介绍一个实用的技巧,来读出一个齐次线性方程组 $ \boldsymbol {Ax = 0} $ 的解x,其中 $ \boldsymbol A \in \mathbb{R}^{k \times n},\boldsymbol x \in \mathbb{R}^n $。

2.3.4 求解线性方程组的算法