在上一节的末尾,我们提到了齐次线性方程组的解,这一节中,Prof. Strang详细探讨了计算齐次线性方程组解的算法。先总结一下主要结论:
Input:
A
\bm{A}
A
Output:
x
\bm{x}
x, s.t.,
A
x
=
0
\bm{Ax=0}
Ax=0.
- start from A x = 0 \bm{Ax=0} Ax=0
- compute the echelon form U x = 0 \bm{Ux=0} Ux=0
- compute the reduced echelon form R x = 0 \bm{Rx=0} Rx=0
- write down the special solution and hence the solution space.
其中,第二步是把 A x = 0 \bm{Ax=0} Ax=0化成行阶梯型,第三步是把 A x = 0 \bm{Ax=0} Ax=0化成行最简形,根据行最简形我们可以直接写出 x \bm{x} x 的特解(也就是 A x = 0 \bm{Ax=0} Ax=0 null space的bases)和通解。
好,下面我们从例子入手,看看这些步骤是怎么来的。
Start from A x = 0 \bm{Ax=0} Ax=0
考虑
[
1
2
2
2
2
4
6
8
3
6
8
10
]
[
x
1
x
2
x
3
x
4
]
=
[
0
0
0
]
\begin{bmatrix} 1 & 2 & 2 & 2 \\ 2 & 4 & 6 & 8 \\ 3 & 6 & 8 & 10 \\ \end{bmatrix}\begin{bmatrix} x_1 \\ x_2 \\ x_3 \\ x_4 \\ \end{bmatrix}=\begin{bmatrix} 0 \\ 0 \\ 0 \\ \end{bmatrix}
⎣⎡1232462682810⎦⎤⎣⎢⎢⎡x1x2x3x4⎦⎥⎥⎤=⎣⎡000⎦⎤
求 A \bm{A} A 的 null space N ( A ) N(\bm{A}) N(A),也就是 x \bm{x} x 的取值.
由上一节的内容我们知道, N ( A ) N(\bm{A}) N(A)所在空间的维度是 R 4 \mathbb{R}^4 R4, N ( A ) N(\bm{A}) N(A)这个subspace的维度是矩阵 A \bm{A} A的列数减去 A \bm{A} A中最大线性无关的列的个数, i.e., 列数减 A \bm{A} A 的秩: n − rank A n-\text{rank}\bm{A} n−rankA. 不过,这一节我们要按照算法步骤往下走。
Echelon form U x = 0 \bm{Ux=0} Ux=0
第二步是把
A
\bm{A}
A 化为行阶梯形 ,我们直接给出答案
[
1
2
2
2
0
0
2
4
0
0
0
0
]
[
x
1
x
2
x
3
x
4
]
=
[
0
0
0
]
\begin{bmatrix} 1 & 2 & 2 & 2 \\ 0 & 0 & 2 & 4 \\ 0 & 0 & 0 & 0 \\ \end{bmatrix}\begin{bmatrix} x_1 \\ x_2 \\ x_3 \\ x_4 \\ \end{bmatrix}=\begin{bmatrix} 0 \\ 0 \\ 0 \\ \end{bmatrix}
⎣⎡100200220240⎦⎤⎣⎢⎢⎡x1x2x3x4⎦⎥⎥⎤=⎣⎡000⎦⎤
注意
- (null space) 在进行初等行变换的时候,null space并没有改变,其主要原因是等式右边是全零矩阵。 U x = 0 \bm{Ux=0} Ux=0 的解全部都是 A x = 0 \bm{Ax=0} Ax=0 的解, vice versa.
- (column space) column space 确实是改变了 (初等行变换不会改变column space)。
- (rank) 对于矩阵 U \bm{U} U, 它总共有两个pivot (每一行第一个不为0的element)。因此我们称这个矩阵的秩 rank U = 2 \text{rank}~\bm{U}=2 rank U=2, 也就是说,矩阵的秩等于矩阵行阶梯形中pivot的个数。
- (pivot row/column and free row/column) 我们把 pivot 所在的行和列分别叫做 pivot row 和 pivot column,把其他列叫做 free row 和 free column。
在这一步,Prof. Strang直接给出结论:所有free column对应的 x i x_i xi 可以随便取值。
因为这里有两个free columns, 所以
x
2
x_2
x2 和
x
4
x_4
x4 可以随便取值。 那我们直接取
[
x
2
x
4
]
=
c
[
1
0
]
+
d
[
0
1
]
\begin{bmatrix} x_2 \\ x_4 \end{bmatrix} = c \begin{bmatrix} 1 \\ 0 \end{bmatrix} + d \begin{bmatrix} 0 \\ 1 \end{bmatrix}
[x2x4]=c[10]+d[01]
带入
U
x
=
0
\bm{Ux=0}
Ux=0, 可以得出解空间
[
x
1
x
2
x
3
x
4
]
=
c
[
−
2
1
0
0
]
+
d
[
2
0
−
2
1
]
\begin{bmatrix} x_1 \\ x_2 \\ x_3 \\ x_4 \\ \end{bmatrix} = c \begin{bmatrix} -2 \\ 1 \\ 0 \\ 0 \end{bmatrix} + d \begin{bmatrix} 2 \\ 0 \\ -2 \\ 1 \end{bmatrix}
⎣⎢⎢⎡x1x2x3x4⎦⎥⎥⎤=c⎣⎢⎢⎡−2100⎦⎥⎥⎤+d⎣⎢⎢⎡20−21⎦⎥⎥⎤
实际上,我们是取了两个 special solution (特解) 来表示整个解空间的。而特解的个数就是由 A \bm{A} A 或者说 U \bm{U} U 中 free column 的个数。
至此,我们已经得到了 A x = 0 \bm{Ax=0} Ax=0 的解空间,下面我们要研究的是,如果从行最简形直接写出所有特解,i.e., the bases of the null space.
Redued echelon form R x = 0 \bm{Rx=0} Rx=0
好,我们继续把行阶梯型化为行最简形,given
[
1
2
0
−
2
0
0
1
2
0
0
0
0
]
[
x
1
x
2
x
3
x
4
]
=
[
0
0
0
]
\begin{bmatrix} 1 & 2 & 0 & -2 \\ 0 & 0 & 1 & 2 \\ 0 & 0 & 0 & 0 \\ \end{bmatrix}\begin{bmatrix} x_1 \\ x_2 \\ x_3 \\ x_4 \\ \end{bmatrix}=\begin{bmatrix} 0 \\ 0 \\ 0 \\ \end{bmatrix}
⎣⎡100200010−220⎦⎤⎣⎢⎢⎡x1x2x3x4⎦⎥⎥⎤=⎣⎡000⎦⎤
其实行最简形就是把 pivot row 和 pivot column的 intersection 变成 单位阵。我们可以把2, 3列互换一下,given
[
1
0
2
−
2
0
1
0
2
0
0
0
0
]
[
x
1
x
3
x
2
x
4
]
=
[
0
0
0
]
\begin{bmatrix} 1 & 0 & 2 & -2 \\ 0 & 1 & 0 & 2 \\ 0 & 0 & 0 & 0 \\ \end{bmatrix}\begin{bmatrix} x_1 \\ x_3 \\ x_2 \\ x_4 \\ \end{bmatrix}=\begin{bmatrix} 0 \\ 0 \\ 0 \\ \end{bmatrix}
⎣⎡100010200−220⎦⎤⎣⎢⎢⎡x1x3x2x4⎦⎥⎥⎤=⎣⎡000⎦⎤
实际上这就变成了一个分块矩阵相乘
[
I
F
0
0
]
[
X
1
X
2
]
=
[
0
0
]
\begin{bmatrix} \bm{I} & \bm{F} \\ 0 & 0\\ \end{bmatrix}\begin{bmatrix} \bm{X_1} \\ \bm{X_2} \\ \end{bmatrix}=\begin{bmatrix} \bm{0} \\ \bm{0} \\ \end{bmatrix}
[I0F0][X1X2]=[00]
则有 I X 1 + F X 2 = 0 \bm{I}\bm{X_1} + \bm{F}\bm{X_2} = 0 IX1+FX2=0, 其中 X 1 \bm{X_1} X1 对应的是 pivot columns, X 2 \bm{X_2} X2 对应的是 free columns.
现在我们要选一组特解应该怎么选尼?按照之前的选法,我们可以把 X 2 \bm{X_2} X2 选为单位阵,这时就有 I X 1 + F I = 0 \bm{I}\bm{X_1} + \bm{F}\bm{I} = 0 IX1+FI=0, 所以实际上 X 1 = − F \bm{X_1} = -\bm{F} X1=−F.
换句话说,当我们得到行最简形
R
x
=
0
\bm{Rx=0}
Rx=0 时,一组特解是可以写为
[
x
1
x
3
x
2
x
4
]
=
[
−
F
I
]
\begin{bmatrix} x_1 \\ x_3 \\ x_2 \\ x_4 \\ \end{bmatrix}= \begin{bmatrix} -\bm{F} \\ \bm{I} \\ \end{bmatrix}
⎣⎢⎢⎡x1x3x2x4⎦⎥⎥⎤=[−FI]
再换行,写成通解的形式即可。
有兴趣的同学可以再试一个例子
A
=
[
1
2
3
2
4
6
2
6
8
2
8
10
]
\bm{A}=\begin{bmatrix} 1 & 2 & 3 \\ 2 & 4 & 6 \\ 2 & 6 & 8 \\ 2 & 8 & 10 \\ \end{bmatrix}
A=⎣⎢⎢⎡1222246836810⎦⎥⎥⎤
它的行最简形是(这里进行了row exchange,相当于方程易位,所有初等行变换都不改变null space)
R
=
[
1
0
1
0
1
1
0
0
0
0
0
0
]
\bm{R}=\begin{bmatrix} 1 & 0& 1 \\ 0 & 1 & 1 \\ 0 & 0 & 0 \\ 0 & 0 & 0 \\ \end{bmatrix}
R=⎣⎢⎢⎡100001001100⎦⎥⎥⎤
先确定null space所在空间是
R
3
\mathbb{R}^3
R3, null space的维度是1(只有一个free column),直接写出一组特解
[
−
1
−
1
1
]
\begin{bmatrix} -1 \\ -1 \\ 1 \\ \end{bmatrix}
⎣⎡−1−11⎦⎤
则通解为
x
=
c
[
−
1
−
1
1
]
\bm{x}=c\begin{bmatrix} -1 \\ -1 \\ 1 \\ \end{bmatrix}
x=c⎣⎡−1−11⎦⎤