【机器学习的数学基础】(一)线性代数(Linear Algebra)(上+)
【机器学习的数学基础】(一)线性代数(Linear Algebra)(上+)
学习资料(Advertisement):
传送门
【机器学习的数学基础】(一)线性代数(Linear Algebra)(上)
2 线性代数(Linear Algebra)(上+)
2.3 线性方程组的求解
前面我们介绍了方程组的一般形式,即:
a
11
x
1
+
⋯
+
a
1
n
x
n
=
b
1
⋮
a
m
1
x
1
+
⋯
+
a
m
n
x
n
=
b
m
\begin{aligned}a_{11} x_{1}+\cdots+a_{1 n} x_{n} &=b_{1} \\& \vdots \\a_{m 1} x_{1}+\cdots+a_{m n} x_{n} &=b_{m}\end{aligned}
a11x1+⋯+a1nxnam1x1+⋯+amnxn=b1⋮=bm
其中 a i j ∈ R a_{i j} \in \mathbb{R} aij∈R, b i ∈ R b_{i} \in \mathbb{R} bi∈R为已知常数, x j x_j xj为未知量, i = 1 , … , m , j = 1 , … , n i=1, \ldots, m, j=1, \ldots, n i=1,…,m,j=1,…,n。到目前为止,我们看到矩阵可以作为一种简洁的方法来表达线性方程组,这样我们可以将线性方程组写成 A x = b \boldsymbol{A}\boldsymbol{x}=\boldsymbol{b} Ax=b。此外,我们还定义了基本的矩阵运算,如矩阵的加法和乘法。下面,我们将重点讨论线性方程组的求解,并提供一种求矩阵逆的算法。
2.3.1 特解和通解
在讨论如何求解线性方程组之前,让我们先看一个例子。考虑方程组
[ 1 0 8 − 4 0 1 2 12 ] [ x 1 x 2 x 3 x 4 ] = [ 42 8 ] ( 2.38 ) \left[\begin{array}{cccc}1 & 0 & 8 & -4 \\0 & 1 & 2 & 12\end{array}\right]\left[\begin{array}{l}x_{1} \\x_{2} \\x_{3} \\x_{4}\end{array}\right]=\left[\begin{array}{c}42 \\8\end{array}\right]\qquad (2.38) [100182−412] x1x2x3x4 =[428](2.38)
这个方程组有两个方程和四个未知数。因此,一般来说,我们可以得到无穷多个解。这个方程组的形式为极简形式,前两列都由一个0和一个1组成。
我们目标是找到标量 x 1 , … , x 4 x_{1}, \ldots, x_{4} x1,…,x4,使得 ∑ i = 1 4 x i c i = b \sum_{i=1}^{4} x_{i} \boldsymbol{c}_{i}=\boldsymbol{b} ∑i=14xici=b,其中 c i \boldsymbol{c}_i ci为矩阵的第 i i i列, b b b为方程组的(2.38)的右侧。对于该方程组,可通过取第一列的42倍和第二列的8倍得到解:
b = [ 42 8 ] = 42 [ 1 0 ] + 8 [ 0 1 ] \boldsymbol{b}=\left[\begin{array}{c}42 \\8\end{array}\right]=42\left[\begin{array}{l}1 \\0\end{array}\right]+8\left[\begin{array}{l}0 \\1\end{array}\right] b=[428]=42[10]+8[01]
因此,方程组的一个解为 [ 42 , 8 , 0 , 0 ] ⊤ [42,8,0,0]^{\top} [42,8,0,0]⊤,这个解叫做特解(particular solution or special solution)。
然而,这并不是这个线性方程组的唯一解。要得到其他解,我们需要创造性地使用矩阵的列以非平凡( non-trivial)的方式生成向量 0 \mathbf{0} 0:特解与方程组的矩阵相乘,然后等式两边同时加上 0 \mathbf{0} 0不会影响该等式。
我们使用前两列(它们的形式非常简单)表示第三列
[
8
2
]
=
8
[
1
0
]
+
2
[
0
1
]
\left[\begin{array}{l}8 \\2\end{array}\right]=8\left[\begin{array}{l}1 \\0\end{array}\right]+2\left[\begin{array}{l}0 \\1\end{array}\right]
[82]=8[10]+2[01]
则有
0
=
8
c
1
+
2
c
2
−
1
c
3
+
0
c
4
\mathbf{0}=8 \boldsymbol{c}_{1}+2 \boldsymbol{c}_{2}-1 \boldsymbol{c}_{3}+0 \boldsymbol{c}_{4}
0=8c1+2c2−1c3+0c4,得到解:
(
x
1
,
x
2
,
x
3
,
x
4
)
=
(
8
,
2
,
−
1
,
0
)
\left(x_{1}, x_{2}, x_{3}, x_{4}\right)=(8,2,-1,0)
(x1,x2,x3,x4)=(8,2,−1,0)。事实上,这个解按任意
λ
1
∈
R
\lambda_{1} \in \mathbb{R}
λ1∈R的缩放都会产生
0
\mathbf{0}
0向量,即:
[
1
0
8
−
4
0
1
2
12
]
(
λ
1
[
8
2
−
1
0
]
)
=
λ
1
(
8
c
1
+
2
c
2
−
c
3
)
=
0
\left[\begin{array}{llll}1 & 0 & 8 & -4 \\0 & 1 & 2 & 12\end{array}\right]\left(\lambda_{1}\left[\begin{array}{c}8 \\2 \\-1 \\0\end{array}\right]\right)=\lambda_{1}\left(8 c_{1}+2 c_{2}-c_{3}\right)=\mathbf{0}
[100182−412]
λ1
82−10
=λ1(8c1+2c2−c3)=0
同样地,我们使用前两列表示方程组中矩阵的第四列,对于任意
λ
2
∈
R
\lambda_{2} \in \mathbb{R}
λ2∈R生成另一组
0
\mathbf{0}
0的非平凡版本
[
1
0
8
−
4
0
1
2
12
]
(
λ
2
[
−
4
12
0
−
1
]
)
=
λ
2
(
−
4
c
1
+
12
c
2
−
c
4
)
=
0
\left[\begin{array}{llll}1 & 0 & 8 & -4 \\0 & 1 & 2 & 12\end{array}\right]\left(\lambda_{2}\left[\begin{array}{c}-4 \\12 \\0 \\-1\end{array}\right]\right)=\lambda_{2}\left(-4 \boldsymbol{c}_{1}+12 \boldsymbol{c}_{2}-\boldsymbol{c}_{4}\right)=\mathbf{0}
[100182−412]
λ2
−4120−1
=λ2(−4c1+12c2−c4)=0
把所有的解放在一起,得到方程组的所有解,称为通解(general solution),以集合形式表示为:
{
x
∈
R
4
:
x
=
[
42
8
0
0
]
+
λ
1
[
8
2
−
1
0
]
+
λ
2
[
−
4
12
0
−
1
]
,
λ
1
,
λ
2
∈
R
}
\left\{x \in \mathbb{R}^{4}: x=\left[\begin{array}{c}42 \\8 \\0 \\0\end{array}\right]+\lambda_{1}\left[\begin{array}{c}8 \\2 \\-1 \\0\end{array}\right]+\lambda_{2}\left[\begin{array}{c}-4 \\12 \\0 \\-1\end{array}\right], \lambda_{1}, \lambda_{2} \in \mathbb{R}\right\}
⎩
⎨
⎧x∈R4:x=
42800
+λ1
82−10
+λ2
−4120−1
,λ1,λ2∈R⎭
⎬
⎫
备注:
线性方程组的一般求解包括以下三个步骤:
- (1) 找到 A x = b Ax=b Ax=b的特解。
- (2) 找到 A x = 0 Ax=0 Ax=0的所有解。
- (3) 结合步骤(1)和(2)中的解得到通解。
- 注意通解和特解都不是唯一的。
上例中的线性方程组很容易求解,因为方程组中的矩阵有特别简便的形式,这使我们能够通过代值检验得到特解和通解。然而,一般方程组不会是这种简单的形式。
幸运的是,有一种构造性的算法可以将任何线性方程组转换成这种特别简单的形式:高斯消元法( Gaussian elimination)。高斯消元法的关键是对线性方程组进行初等变换,将方程组转换成简单形式。然后,我们可以用以上三个步骤求解线性方程组。
2.3.2 初等变换
求解线性方程组的关键是初等变换(elementary transformations),它能在解集保持不变的前提下,将方程组变换为更简单的形式:
- (1)两个方程(表示方程组的矩阵的行)的交换
- (2)方程(行)乘一个常数 λ ∈ R \ { 0 } \lambda \in \mathbb{R} \backslash\{0\} λ∈R\{0}
- (3)两个等式(行)的相加
备注:(1)、(2)、(3)可以组合。
例 2.6
对于
a
∈
R
a \in \mathbb{R}
a∈R,求下列方程组的所有解:
−
2
x
1
+
4
x
2
−
2
x
3
−
x
4
+
4
x
5
=
−
3
4
x
1
−
8
x
2
+
3
x
3
−
3
x
4
+
x
5
=
2
x
1
−
2
x
2
+
x
3
−
x
4
+
x
5
=
0
x
1
−
2
x
2
−
3
x
4
+
4
x
5
=
a
\begin{array}{rrrrrrrr}-2 x_{1} & + & 4 x_{2} & - & 2 x_{3} & - & x_{4}&+ & 4 x_{5} & = & -3 \\4 x_{1} & - & 8 x_{2} & + & 3 x_{3} & - & 3 x_{4}&+ & x_{5} & = & 2 \\x_{1} & - & 2 x_{2} & + & x_{3} & - & x_{4}&+ & x_{5} & = & 0 \\x_{1} & - & 2 x_{2} & & & - &3 x_{4} & + & 4 x_{5} & = & a\end{array}
−2x14x1x1x1+−−−4x28x22x22x2−++2x33x3x3−−−−x43x4x43x4++++4x5x5x54x5====−320a
我们首先把这个方程组转换成紧致的矩阵表示 A x = b \boldsymbol{A}\boldsymbol{x}=\boldsymbol{b} Ax=b。我们不再显式地提及变量 x \boldsymbol{x} x,而是建立增广矩阵(augmented matrix)(形式为 [ A ∣ b ] [\boldsymbol{A} \mid \boldsymbol{b}] [A∣b])
我们用垂直线把方程组的左手边和右手边分开。
[
−
2
4
−
2
−
1
4
−
3
4
−
8
3
−
3
1
2
1
−
2
1
−
1
1
0
1
−
2
0
−
3
4
a
]
Swap with
R
3
Swap with
R
1
\left[\begin{array}{rrrrr|r}-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{array}{l}\text{Swap with } R_3\\ \\\text{Swap with }R_1 \\\\\end{array}
−24114−8−2−2−2310−1−3−1−34114−320a
Swap with R3Swap with R1
交换第一行 R 1 R_1 R1和第三行 R 3 R_3 R3得到:
[ 1 − 2 1 − 1 1 0 4 − 8 3 − 3 1 2 − 2 4 − 2 − 1 4 − 3 1 − 2 0 − 3 4 a ] − 4 R 1 + 2 R 1 − R 1 \left[\begin{array}{rrrrr|r}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{array}{l} \\ -4 R_{1} \\+2 R_{1} \\-R_{1}\end{array} 14−21−2−84−213−20−1−3−1−3114402−3a −4R1+2R1−R1
我们使用上式中指定的变换(例如,上式包括第2行减去四倍第1行)后,我们得到
[
1
−
2
1
−
1
1
0
0
0
−
1
1
−
3
2
0
0
0
−
3
6
−
3
0
0
−
1
−
2
3
a
]
\left[\begin{array}{rrrrr|r}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]
1000−20001−10−1−11−3−21−36302−3a
我们用
⇝
\rightsquigarrow
⇝来表示增广矩阵的初等变换。
[ 1 − 2 1 − 1 1 0 0 0 − 1 1 − 3 2 0 0 0 − 3 6 − 3 0 0 − 1 − 2 3 a ] − R 2 − R 3 \qquad\left[\begin{array}{rrrrr|r}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{array}{l} \\\\\\-R_{2}-R_{3}\end{array} 1000−20001−10−1−11−3−21−36302−3a −R2−R3
⇝
[
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
]
⋅
(
−
1
)
⋅
(
−
1
3
)
\rightsquigarrow\left[\begin{array}{rrrrr|r}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{array}{l} \cdot (-1)\\\cdot (-\frac{1}{3})\\ \end{array}
⇝
1000−20001−100−11−301−36002−3a+1
⋅(−1)⋅(−31)
⇝
[
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
]
\rightsquigarrow \quad\left[\begin{array}{rrrrr|r}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]\qquad\qquad
⇝
1000−20001100−1−11013−200−21a+1
这个(增广)矩阵现在变成一种简便的形式——行阶梯形式(row-echelon form,REF)。将这个紧凑的表示法还原为显式表示法,我们得到
x
1
−
2
x
2
+
x
3
−
x
4
+
x
5
=
0
x
3
−
x
4
+
3
x
5
=
−
2
x
4
−
2
x
5
=
1
0
=
a
+
1
\begin{array}{rrrrrr} x_{1} & -&2x_{2}&+&x_{3} & -&x_{4}&+ &x_{5} & = & 0 \\&&&&x_{3}&-& x_{4}&+&3 x_{5} & = & -2 \\&&&&& & x_{4}&-&2 x_{5} & = & 1 \\& &&&&&& & 0 & = & a+1\end{array}
x1−2x2+x3x3−−x4x4x4++−x53x52x50====0−21a+1
仅当
a
=
−
1
a=-1
a=−1时方程组才有解。一个特解为:
[
x
1
x
2
x
3
x
4
x
5
]
=
[
2
0
−
1
1
0
]
\left[\begin{array}{l}x_{1} \\x_{2} \\x_{3} \\x_{4} \\x_{5}\end{array}\right]=\left[\begin{array}{c}2 \\0 \\-1 \\1 \\0\end{array}\right]
x1x2x3x4x5
=
20−110
通解:
{
x
∈
R
5
:
x
=
[
2
0
−
1
1
0
]
+
λ
1
[
2
1
0
0
0
]
+
λ
2
[
2
0
−
1
2
1
]
,
λ
1
,
λ
2
∈
R
}
\left\{x \in \mathbb{R}^{5}: x=\left[\begin{array}{c}2 \\0 \\-1 \\1 \\0\end{array}\right]+\lambda_{1}\left[\begin{array}{l}2 \\1 \\0 \\0 \\0\end{array}\right]+\lambda_{2}\left[\begin{array}{c}2 \\0 \\-1 \\2 \\1\end{array}\right], \quad \lambda_{1}, \lambda_{2} \in \mathbb{R}\right\}
⎩
⎨
⎧x∈R5:x=
20−110
+λ1
21000
+λ2
20−121
,λ1,λ2∈R⎭
⎬
⎫
下面,我们将详细介绍一种获得线性方程组特解和通解的构造性方法。
备注:主元和阶梯结构
行的前导系数(leading coefficient,从左开始的第一个非零数)称为主元(Pivots ),并且始终严格地位于上方行的主元的右侧。因此,任何行阶梯型(row-echelon form)的方程组都具有“阶梯(staircase)”结构。
定义 2.6(行阶梯型)
一个矩阵为行阶梯型(row-echelon form)矩阵需满足:
- 所有只包含零的行都位于矩阵的底部;相应地,所有至少包含一个非零元素的行都位于只包含零的行的顶部。
- 只看非零行,从左边开始的第一个非零数字(也称为主元或前导系数)总是严格地位于它上面的行主元的右边。
备注:基本变量和自由变量
行阶梯型的主元对应的变量称为基本变量(basic variables),其他变量称为自由变量(free variables)。
例如,对于
x
1
−
2
x
2
+
x
3
−
x
4
+
x
5
=
0
x
3
−
x
4
+
3
x
5
=
−
2
x
4
−
2
x
5
=
1
0
=
a
+
1
\begin{array}{rrrrrr} x_{1} & -&2x_{2}&+&x_{3} & -&x_{4}&+ &x_{5} & = & 0 \\&&&&x_{3}&-& x_{4}&+&3 x_{5} & = & -2 \\&&&&& & x_{4}&-&2 x_{5} & = & 1 \\& &&&&&& & 0 & = & a+1\end{array}
x1−2x2+x3x3−−x4x4x4++−x53x52x50====0−21a+1
x
1
,
x
3
,
x
4
x_1,x_3,x_4
x1,x3,x4为基本变量,
x
2
,
x
5
x_2,x_5
x2,x5为自由变量。
备注:(求特解)
当我们需要确定一个特解时,行阶梯型方便了我们求解。为了做到这一点,我们用主元列来表示方程组的右侧,即 b = ∑ i = 1 P λ i p i \boldsymbol{b}=\sum_{i=1}^{P} \lambda_{i} \boldsymbol{p}_{i} b=∑i=1Pλipi,其中 p i , i = 1 , … , P \boldsymbol{p}_{i}, i=1, \ldots, P pi,i=1,…,P为主元所在列,即主元列。
λ i λ_i λi很容易确定,我们可以从最右边的主元列开始,向左一 一确定。
在上一个例子中,我们试图找到
λ
1
,
λ
2
,
λ
3
λ_1,λ_2,λ_3
λ1,λ2,λ3,使得:
λ
1
[
1
0
0
0
]
+
λ
2
[
1
1
0
0
]
+
λ
3
[
−
1
−
1
1
0
]
=
[
0
−
2
1
0
]
\lambda_{1}\left[\begin{array}{l}1 \\0 \\0 \\0\end{array}\right]+\lambda_{2}\left[\begin{array}{l}1 \\1 \\0 \\0\end{array}\right]+\lambda_{3}\left[\begin{array}{c}-1 \\-1 \\1 \\0\end{array}\right]=\left[\begin{array}{c}0 \\-2 \\1 \\0\end{array}\right]
λ1
1000
+λ2
1100
+λ3
−1−110
=
0−210
从这里,我们相对直观地发现 λ 3 = 1 , λ 2 = − 1 , λ 1 = 2 \lambda_{3}=1, \lambda_{2}=-1, \lambda_{1}=2 λ3=1,λ2=−1,λ1=2。而对于非主元列,我们隐式地将其系数设置为0。因此,我们得到特解为: [ 2 , 0 , − 1 , 1 , 0 ] ⊤ [2,0,-1,1,0]^{\top} [2,0,−1,1,0]⊤
备注:行最简阶梯型
一个方程组为行最简阶梯型(Reduced Row Echelon Form,也称为 row-reduced echelon form 或 row canonical form)需要满足:
- 它是行阶梯型
- 每个主元都为1
- 主元是其所在列中唯一的非零项。
行最简阶梯型将在后面的第2.3.3节中扮演重要的角色,因为它使我们可以直接地确定线性方程组的通解
备注:高斯消元法
高斯消元法(Gaussian elimination)是一种通过初等变换将线性方程组转化为行最简阶梯型的算法。
例 2.7行最简阶梯型
有以下行最简阶梯型矩阵(粗体1为主元):
A
=
[
1
3
0
0
3
0
0
1
0
9
0
0
0
1
−
4
]
(
2.49
)
\boldsymbol{A}=\left[\begin{array}{ccccc}\mathbf{1} & 3 & 0 & 0 & 3 \\0 & 0 & \mathbf{1} & 0 & 9 \\0 & 0 & 0 & \mathbf{1} & -4\end{array}\right]\qquad (2.49)
A=
10030001000139−4
(2.49)
求 A x = 0 \boldsymbol{A}\boldsymbol{x}=\boldsymbol{0} Ax=0的解的关键是非主元列,我们需要将其表示为主元列的(线性)组合;而行最简阶梯型使这一点相对简单。我们用左边的主元列的倍数和来表示非主元列:
第二列是第一列的3倍(我们可以忽略第二列右边的主元列)。因此,为了得到 0 \mathbf{0} 0,我们需要将第一列的三倍减去第二列。
现在,我们来看看第二个非主元列——第五列。
第五列可以由第一个主元列的3倍、第二个主元列的9倍和第三个主元列的−4倍表示。我们需要根据主元列的索引,并将第五列转换为第一列的3倍、第二列(非主元列)的0倍、第三列(第二个非主元列)的9倍和第四列的-4倍(即第三主元列)之和,然后减去第五列得到 0 \mathbf{0} 0。最后,可以求解这个齐次方程组。
总之,
A
x
=
0
,
x
∈
R
5
\boldsymbol{A} \boldsymbol{x}=0, \boldsymbol{x} \in \mathbb{R}^{5}
Ax=0,x∈R5的所有解都由下式给出
{
x
∈
R
5
:
x
=
λ
1
[
3
−
1
0
0
0
]
+
λ
2
[
3
0
9
−
4
−
1
]
,
λ
1
,
λ
2
∈
R
}
(
2.50
)
\left\{\boldsymbol{x} \in \mathbb{R}^{5}: \boldsymbol{x}=\lambda_{1}\left[\begin{array}{c}3 \\-1 \\0 \\0 \\0\end{array}\right]+\lambda_{2}\left[\begin{array}{c}3 \\0 \\9 \\-4 \\-1\end{array}\right], \quad \lambda_{1}, \lambda_{2} \in \mathbb{R}\right\}\qquad(2.50)
⎩
⎨
⎧x∈R5:x=λ1
3−1000
+λ2
309−4−1
,λ1,λ2∈R⎭
⎬
⎫(2.50)
2.3.3 Minus-1 技巧
下面,我们将介绍一个实用的技巧来求解齐次线性方程组 A x = 0 \boldsymbol{A}\boldsymbol{x}=\boldsymbol{0} Ax=0的解 x \boldsymbol{x} x,其中 A ∈ R k × n , x ∈ R n \boldsymbol{A} \in \mathbb{R}^{k \times n}, \boldsymbol{x} \in \mathbb{R}^{n} A∈Rk×n,x∈Rn
首先,我们假设
A
\boldsymbol{A}
A是行最简阶梯型,且没有只包含零的行,即:
A
=
[
0
⋯
0
1
∗
⋯
∗
0
∗
⋯
∗
0
∗
⋯
∗
⋮
⋮
0
0
⋯
0
1
∗
⋯
∗
⋮
⋮
⋮
⋮
⋮
⋮
⋮
⋮
0
⋮
⋮
⋮
⋮
⋮
⋮
⋮
⋮
⋮
⋮
⋮
⋮
⋮
0
⋮
⋮
0
⋯
0
0
0
⋯
0
0
0
⋯
0
1
∗
⋯
∗
]
\boldsymbol{A}=\left[\begin{array}{ccccccccccccccc}0 & \cdots & 0 & \mathbf{1} & * & \cdots & * & 0 & * & \cdots & * & 0 & * & \cdots & * \\\vdots & & \vdots & 0 & 0 & \cdots & 0 & \mathbf{1} & * & \cdots & * & \vdots & \vdots & & \vdots \\\vdots & & \vdots & \vdots & \vdots & & \vdots & 0 & \vdots & & \vdots & \vdots & \vdots & & \vdots \\\vdots & & \vdots & \vdots & \vdots & & \vdots & \vdots & \vdots & & \vdots & 0 & \vdots & & \vdots \\0 & \cdots & 0 & 0 & 0 & \cdots & 0 & 0 & 0 & \cdots & 0 & 1 & * & \cdots & *\end{array}\right]
A=
0⋮⋮⋮0⋯⋯0⋮⋮⋮010⋮⋮0∗0⋮⋮0⋯⋯⋯∗0⋮⋮0010⋮0∗∗⋮⋮0⋯⋯⋯∗∗⋮⋮00⋮⋮01∗⋮⋮⋮∗⋯⋯∗⋮⋮⋮∗
其中 ∗ * ∗为随机的实数, A \boldsymbol{A} A每行的第一个非零项必须为1,相应列中的所有其他项必须为0。
含主元的列 j 1 , … , j k j_{1}, \ldots, j_{k} j1,…,jk(用粗体标记)是标准单位向量 e 1 , … , e k ∈ R k e_{1}, \ldots, e_{k} \in \mathbb{R}^{k} e1,…,ek∈Rk。我们通过添加 n − k n−k n−k行将该矩阵扩展为 n × n n×n n×n-矩阵 A ~ \tilde{\boldsymbol{A}} A~,扩展所添加行的形式为:
[ 0 ⋯ 0 − 1 0 ⋯ 0 ] ( 2.52 ) \left[\begin{array}{lllllll}0 & \cdots & 0 & -1 & 0 & \cdots & 0\end{array}\right]\qquad (2.52) [0⋯0−10⋯0](2.52)
所以增广矩阵 A ~ \tilde{\boldsymbol{A}} A~的对角线包含1或-1。然后,包含−1作为主元的列是齐次方程组 A x = 0 \boldsymbol{A}\boldsymbol{x}=\boldsymbol{0} Ax=0的解。更准确地说,这些列构成 A x = 0 \boldsymbol{A}\boldsymbol{x}=\boldsymbol{0} Ax=0的解空间的基,我们也将其称为核或零空间(见2.7.3节)。
例 8 (Minus-1 Trick)
对于(2.49)这一最简阶梯型(REF)矩阵:
A
=
[
1
3
0
0
3
0
0
1
0
9
0
0
0
1
−
4
]
\boldsymbol{A}=\left[\begin{array}{ccccc}1 & 3 & 0 & 0 & 3 \\0 & 0 & 1 & 0 & 9 \\0 & 0 & 0 & 1 & -4\end{array}\right]
A=
10030001000139−4
现在我们通过在对角线上的主元缺失的地方添加(2.52)形式的行,将这个矩阵扩展为一个5 × 5的矩阵
A
~
=
[
1
3
0
0
3
0
−
1
0
0
0
0
0
1
0
9
0
0
0
1
−
4
0
0
0
0
−
1
]
\tilde{\boldsymbol{A}}=\left[\begin{array}{ccccc}1 & 3 & 0 & 0 & 3 \\\textcolor{blue}{0} & \textcolor{blue}{-1} & \textcolor{blue}{0} & \textcolor{blue}{0} & \textcolor{blue}{0} \\0 & 0 & 1 & 0 & 9 \\0 & 0 & 0 & 1 & -4 \\\textcolor{blue}{0} & \textcolor{blue}{0} & \textcolor{blue}{0} & \textcolor{blue}{0} & \textcolor{blue}{-1}\end{array}\right]
A~=
100003−10000010000010309−4−1
我们可以通过取
A
~
\tilde{\boldsymbol{A}}
A~内包含对角线上-1的的列,立即得到
A
x
=
0
\boldsymbol{A}\boldsymbol{x}=\boldsymbol{0}
Ax=0的解:
{
x
∈
R
5
:
x
=
λ
1
[
3
−
1
0
0
0
]
+
λ
2
[
3
0
9
−
4
−
1
]
,
λ
1
,
λ
2
∈
R
}
}
\left\{\begin{array}{l}\left.x \in \mathbb{R}^{5}: \boldsymbol{x}=\lambda_{1}\left[\begin{array}{c}3 \\-1 \\0 \\0 \\0\end{array}\right]+\lambda_{2}\left[\begin{array}{c}3 \\0 \\9 \\-4 \\-1\end{array}\right], \quad \lambda_{1}, \lambda_{2} \in \mathbb{R}\right\}\end{array}\right\}
⎩
⎨
⎧x∈R5:x=λ1
3−1000
+λ2
309−4−1
,λ1,λ2∈R⎭
⎬
⎫⎭
⎬
⎫
与例2.7的结果相同。
求逆
为了计算
A
∈
R
n
×
n
\boldsymbol{A} \in \mathbb{R}^{n \times n}
A∈Rn×n的逆
A
−
1
\boldsymbol{A}^{-1}
A−1,我们需要找到满足
A
X
=
I
n
\boldsymbol{A X}=\boldsymbol{I}_{n}
AX=In的矩阵
X
\boldsymbol{X}
X。
X
=
A
−
1
\boldsymbol{X}=\boldsymbol{A}^{-1}
X=A−1。我们可以把它写成一组线性方程组
A
X
=
I
n
\boldsymbol{A X}=\boldsymbol{I}_{n}
AX=In并求解
X
=
[
x
1
∣
⋯
∣
x
n
]
\boldsymbol{X}=\left[\boldsymbol{x}_{1}|\cdots| \boldsymbol{x}_{n}\right]
X=[x1∣⋯∣xn]。我们使用增广矩阵表示法来表示这组线性方程组,并对其做以下变换:
[
A
∣
I
n
]
⇝
⋯
⇝
[
I
n
∣
A
−
1
]
\left[\boldsymbol{A} \mid \boldsymbol{I}_{n}\right] \quad \rightsquigarrow \cdots \rightsquigarrow \quad\left[\boldsymbol{I}_{n} \mid \boldsymbol{A}^{-1}\right]
[A∣In]⇝⋯⇝[In∣A−1]
这意味着,如果我们把增广方程组简化成行最简阶梯型,我们就可以在方程组的右手边读出该矩阵的逆。因此,确定矩阵的逆矩阵相当于求解线性方程组。
例 2.9 用高斯消元法求逆矩阵
求
A
=
[
1
0
2
0
1
1
0
0
1
2
0
1
1
1
1
1
]
\boldsymbol{A}=\left[\begin{array}{llll}1 & 0 & 2 & 0 \\1 & 1 & 0 & 0 \\1 & 2 & 0 & 1 \\1 & 1 & 1 & 1\end{array}\right]
A=
1111012120010011
的逆。
我们写出增广矩阵
[
1
0
2
0
1
0
0
0
1
1
0
0
0
1
0
0
1
2
0
1
0
0
1
0
1
1
1
1
0
0
0
1
]
\left[\begin{array}{cccc|cccc}1 & 0 & 2 & 0 & 1 & 0 & 0 & 0 \\1 & 1 & 0 & 0 & 0 & 1 & 0 & 0 \\1 & 2 & 0 & 1 & 0 & 0 & 1 & 0 \\1 & 1 & 1 & 1 & 0 & 0 & 0 & 1\end{array}\right]
11110121200100111000010000100001
并利用高斯消元法将其化为行最简阶梯型:
[
1
0
0
0
−
1
2
−
2
2
0
1
0
0
1
−
1
2
−
2
0
0
1
0
1
−
1
1
−
1
0
0
0
1
−
1
0
−
1
2
]
\left[\begin{array}{cccc|cccc}1 & 0 & 0 & 0 & -1 & 2 & -2 & 2 \\0 & 1 & 0 & 0 & 1 & -1 & 2 & -2 \\0 & 0 & 1 & 0 & 1 & -1 & 1 & -1 \\0 & 0 & 0 & 1 & -1 & 0 & -1 & 2\end{array}\right]
1000010000100001−111−12−1−10−221−12−2−12
这样,所需的逆矩阵就在其右侧给出了:
A
−
1
=
[
−
1
2
−
2
2
1
−
1
2
−
2
1
−
1
1
−
1
−
1
0
−
1
2
]
\boldsymbol{A}^{-1}=\left[\begin{array}{cccc}-1 & 2 & -2 & 2 \\1 & -1 & 2 & -2 \\1 & -1 & 1 & -1 \\-1 & 0 & -1 & 2\end{array}\right]
A−1=
−111−12−1−10−221−12−2−12
我们可以通过执行乘法 A A − 1 \boldsymbol{A} \boldsymbol{A}^{-1} AA−1是否等于 I 4 \boldsymbol{I}_4 I4来检验。
2.3.4 求解线性方程组的算法
在下文中,我们将简要讨论 A x = b \boldsymbol{A}\boldsymbol{x}=\boldsymbol{b} Ax=b形式的线性方程组的求解方法。这里我们假设存在解。如果没有解,我们就需要求助于近似的解决办法,如第九章的线性回归,这里不作介绍。
如果我们可以确定逆
A
−
1
\boldsymbol{A}^{−1}
A−1,那么
A
x
=
b
\boldsymbol{A}\boldsymbol{x}=\boldsymbol{b}
Ax=b的解就表示为
x
=
A
−
1
b
\boldsymbol{x}=\boldsymbol{A}^{-1} \boldsymbol{b}
x=A−1b。然而,只有当
A
\boldsymbol{A}
A是一个方阵并且可逆时,这种方法才可行,但通常情况并非如此。不过,在适当的的假设下(即
A
\boldsymbol{A}
A需要有线性独立的列),我们可以使用以下变换:
A
x
=
b
⟺
A
⊤
A
x
=
A
⊤
b
⟺
x
=
(
A
⊤
A
)
−
1
A
⊤
b
\boldsymbol{A} \boldsymbol{x}=\boldsymbol{b} \Longleftrightarrow \boldsymbol{A}^{\top} \boldsymbol{A} \boldsymbol{x}=\boldsymbol{A}^{\top} \boldsymbol{b} \Longleftrightarrow \boldsymbol{x}=\left(\boldsymbol{A}^{\top} \boldsymbol{A}\right)^{-1} \boldsymbol{A}^{\top} \boldsymbol{b}
Ax=b⟺A⊤Ax=A⊤b⟺x=(A⊤A)−1A⊤b
即使用Moore-Penrose伪逆(Moore-Penrose pseudo-inverse) ( A ⊤ A ) − 1 A ⊤ \left(\boldsymbol{A}^{\top} \boldsymbol{A}\right)^{-1} \boldsymbol{A}^{\top} (A⊤A)−1A⊤来确定 A x = b \boldsymbol{A}\boldsymbol{x}=\boldsymbol{b} Ax=b的Moore-Penrose伪逆解 ( A ⊤ A ) − 1 A ⊤ b \left(\boldsymbol{A}^{\top} \boldsymbol{A}\right)^{-1} \boldsymbol{A}^{\top}\boldsymbol{b} (A⊤A)−1A⊤b,这也对应于最小范数最小二乘法的解。
这种方法的缺点是需要对矩阵的积和 A ⊤ A \boldsymbol{A}^{\top} \boldsymbol{A} A⊤A的逆进行大量计算。此外,出于数值精度的原因,通常不建议计算逆或伪逆。因此,在下文中,我们将简要讨论求解线性方程组的其他方法。
高斯消元法在计算行列式、检查向量集是否线性独立、计算矩阵的逆,计算矩阵的秩,和确定向量空间的基时起着重要作用。高斯消元法是一种直观而有建设性的方法来解决一个含成千上万变量的线性方程组。然而,对于具有数百万个变量的方程组,这是不切实际的,因为所需的运算量是按联立方程组的数量的立方增长的。
在实践中,许多线性方程组都是通过定常迭代方法(stationary iterative methods)间接求解的,如Richardson方法、Jacobi方法、Gauß-Seidel方法和逐次超松弛方法,或Krylov子空间方法,如共轭梯度、广义最小残差或双共轭梯度。
设
x
∗
\boldsymbol{x}_{*}
x∗是
A
x
=
b
\boldsymbol{A}\boldsymbol{x}=\boldsymbol{b}
Ax=b的解。这些迭代方法的关键思想是建立以下形式的迭代
x
(
k
+
1
)
=
C
x
(
k
)
+
d
\boldsymbol{x}^{(k+1)}=\boldsymbol{C} \boldsymbol{x}^{(k)}+\boldsymbol{d}
x(k+1)=Cx(k)+d
通过寻找适当的 C \boldsymbol{C} C和 d \boldsymbol{d} d,在每次迭代中减小残差 ∥ x ( k + 1 ) − x ∗ ∥ \left\|\boldsymbol{x}^{(k+1)}-\boldsymbol{x}_{*}\right\| x(k+1)−x∗ 直至收敛到 x ∗ \boldsymbol{x}_{*} x∗。我们将在3.1节中引入范数 ∥ ⋅ ∥ \|\cdot\| ∥⋅∥,它允许我们计算向量之间的相似性。
更多推荐
所有评论(0)