本文讨论齐次线性方程组 A x = 0 \mathbf A \boldsymbol x=\boldsymbol 0 Ax=0的解
这里我们主要研究 A \mathbf A A的列数 c o l col col大于行数 r o w row row的情况,这对应了:
- 未知数个数>方程数
- 几何意义:对应压缩降维的线性变换(列空间必为 R r o w \mathbf R^{row} Rrow的子空间,其维数小于变换前的空间 R c o l \mathbf R^{col} Rcol)
注意,对于 A x = 0 \mathbf A \boldsymbol x=\boldsymbol 0 Ax=0,必然有解,因为 0 ⃗ \vec 0 0一定是一个解;
我们进一步关心其解的集合(唯一解?无穷解?):解空间/零空间是方程的所有可能解向量的集合
- 线性变换不压缩空间时,有唯一零解(零空间为一个点);
- 线性变换压缩空间时,有无穷个解(零空间为一条线/一个平面)
消元法
消元:化简方程为阶梯型矩阵
如果有系数矩阵 A = [ 1 2 2 2 2 4 6 8 3 6 8 10 ] \mathbf A=\begin{bmatrix}1&2&2&2\\2&4&6&8\\3&6&8&10\end{bmatrix} A= 1232462682810 ,经过消元后得到了系数矩阵 U = [ 1 2 2 2 0 0 2 4 0 0 0 0 ] \mathbf U=\begin{bmatrix}1&2&2&2\\0&0&2&4\\0&0&0&0\end{bmatrix} U= 100200220240
第三行全为0,说明:通过消元发现,矩阵的第三行是其他行的线性组合
此处与5-1中介绍的高斯消元得到上三角阵的情况不同,这里希望得到阶梯型矩阵 U \mathbf U U,其消元规则为:
- 由于是列数>行数,一定会出现“第 i i i行的第 i i i列位置不可避免地为0”的情况,此时我们使用本行第一个非0元素作为主元,继续消元(保证主元下方的列全为0)
- 最终必然出现阶梯型矩阵echelon form,记为 U \mathbf U U(意为类似“上三角”矩阵的矩阵,但并不是上三角矩阵)
注意,这里的初等行变换,虽然改变列空间,但不改变列向量的关系,解空间/零空间也不变,而只是改变了行向量的关系(
原因:做初等行变换,行空间和零空间不变、列空间和左零空间可能会改变、但列向量的线性相关性不变(例如消元导致矩阵最下方出现全0行,则列空间变小)
- 问题:消元已经改变了列空间,为什么主元列(注意,不是消元后的主元所在列,而是消元前对应位置的那些原始列)还能作为矩阵A的列空间的一组基?
首先,初等行变换不改变行空间,也就不改变秩r(秩是行/ 列向量中最大的线性无关向量组的向量数),那么列空间的维数也是r;
其次,初等行变换不改变秩,就是说初等行变换不会改变列向量的线性相关性,因此消元后无关的那r个列,对应的消元前的无关的r个主元列,可以作为列空间的一组基最终将求解 A x = 0 \mathbf A\boldsymbol x=\boldsymbol 0 Ax=0变为求解 U x = 0 \mathbf U\boldsymbol x=\boldsymbol 0 Ux=0, U \mathbf U U是梯形矩阵,理解为只保留了 A \mathbf A A中的最重要的信息,也使得方程求解更简单
消元后引入几个概念:
- 这里的主元pivot(理解为:对方程起决定性作用的变量的系数)是每行第一个非零元素,而不再位于“对角线”
本例中,两个主元为“1”和“2” - 主元对应的列为主元列,对应的变量为主变量(pivot variables),主元个数为
r
r
r,称为秩
其余为自由列,自由列对应的变量为自由变量,个数为 n − r n-r n−r
本例中,自由列为2和4列,自由变量为 x 2 , x 4 x_2, x_4 x2,x4
对 m × n m\times n m×n的系数矩阵( n n n个变量),结论是:
- 真正起作用的方程只有 r r r个(真正约束了变量间的关系),剩余了 m − r m-r m−r行方程是多余的(被化简为“0=0”的形式)
- 并且,自由变量的个数也是 n − r n-r n−r个,对应了基础解系的向量个数、零空间的维度
- 解空间/零空间就是基础解系(一组线性无关的特解)的张成空间
可见,消元法就是找出方程组中的“有效方程”和“有效变量”(主元)的过程
可以由其余方程线性组合得到的方程,就是无效方程
可以任意取值且保持方程有解的变量,就是无效变量(自由变量)
消元后如何求解方程
消元后的系数矩阵
U
=
[
1
2
2
2
0
0
2
4
0
0
0
0
]
\mathbf U=\begin{bmatrix}1&2&2&2\\0&0&2&4\\0&0&0&0\end{bmatrix}
U=
100200220240
对应方程组
{
x
1
+
2
x
2
+
2
x
3
+
2
x
4
=
0
2
x
3
+
4
x
4
=
0
\begin{cases}x_1+2x_2+2x_3+2x_4=0\\2x_3+4x_4=0\end{cases}
{x1+2x2+2x3+2x4=02x3+4x4=0
- 对于所有自由变量,可以为其分配任意的值,都能保证有解(此处自由变量就是
x
2
,
x
4
x_2,x_4
x2,x4)
原因:所有的自由列,都能被(其左侧的)主元列线性表出。简单理解是通过主元列可以控制所有自由列带来的影响,具体而言,对于某个特定解,我们额外加上了一倍的自由列,只要对主元列减去这一倍的自由列,仍然满足方程
这里得到重要结论:矩阵行空间的维数等于列空间的维数,或者说矩阵的行秩=列秩,矩阵转置不改变秩
理解:行向量线性相关则列向量不可能线性无关,假如行向量线性相关,那么消元后一定会出现全零行,对应存在自由列,而自由列可以被左侧的主元列线性表出,也就是说列线性相关
而消元的行变换不改变列向量的相关性,因此行向量线性相关则列向量不可能线性无关
- 随意给定一组自由变量的值,就能通过回带求解出主变量的值,这就是方程的一个特解
如果给定自由变量的值为 [ 0 , 0 , . . . , 0 ] [0,0,...,0] [0,0,...,0],得到的解向量就是 0 ⃗ \vec 0 0
如果给定自由变量的值为 [ 1 , 0 , . . . , 0 ] [1,0,...,0] [1,0,...,0],相当于是用主元列线性组合得到某一个自由列的问题(当然,这一定是有解的,前面说过自由列可以被其左侧的主元列线性表出)
当然,最简单的方法就是依次带入:每个自由变量的值为1且其余自由变量的值为0
- 如果有 r r r个主元,那么将第2步重复 r r r次,即可得到一个基础解系:基础解系指方程组的解集的极大线性无关组,或者说基础解系是一组基,可以线性表出所有解,可以张成整个解空间/零空间
可见:方程消元,给出了列相关性/秩/零空间(基础解系)等所有信息
进一步化简消元结果:行最简阶梯型矩阵
实际上,上面消元后的矩阵
U
\mathbf U
U还可以进一步化简为行最简阶梯型矩阵RRFE(Reduced row echelon form):保证主元列中,主元是唯一的非零元素,并且主元为1
行最简阶梯型以最简单和清晰的方式表述了方程所含的所有信息
对于本例, U = [ 1 2 2 2 0 0 2 4 0 0 0 0 ] \mathbf U=\begin{bmatrix}1&2&2&2\\0&0&2&4\\0&0&0&0\end{bmatrix} U= 100200220240 ,其行最简阶梯型矩阵 R = [ 1 2 0 − 2 0 0 1 2 0 0 0 0 ] \mathbf R=\begin{bmatrix}1&2&0&-2\\0&0&1&2\\0&0&0&0\end{bmatrix} R= 100200010−220
在Matlab中,使用rref()函数可以直接得到结果
行最简阶梯型矩阵RRFE的作用是:能够使计算机迅速找出方程的解,过程是:
将各个变量的位置调换(“列变换”),将行最简阶梯型矩阵的主元列集中在左侧(得到单位阵),右侧是自由列
这样,解方程求解 A x = 0 \mathbf A\boldsymbol x=\boldsymbol 0 Ax=0,最终变为求解求解 R x ′ = 0 \mathbf R\boldsymbol x'=\boldsymbol 0 Rx′=0( x ′ \boldsymbol x' x′中变量位置有调换)
然后,在“对自由变量任意取值,求特解”的过程中,仍然每次只令一个自由变量取值1,其余自由变量取值0;
之前说过,问题就转为:求主元列的线性组合以线性表出某一个自由列,而这个系数正是来自于
F
\mathbf F
F!!!
最终,可以将这些特解(基础解系)作为列向量,获得一个矩阵,这个矩阵的列空间就是零空间/解空间
这个“表出零空间的矩阵”就是:
N
=
[
−
F
r
×
(
n
−
r
)
I
n
−
r
]
n
×
(
n
−
r
)
\mathbf N=\begin{bmatrix}-\mathbf F_{r\times(n-r)}\\\mathbf I_{n-r}\end{bmatrix}_{n\times(n-r)}
N=[−Fr×(n−r)In−r]n×(n−r)
其上半部分对应主变量的取值,下半部分对应自由变量的取值,每一列向量就是一个特解(零空间的基)