复习: 一、什么是系数矩阵的零空间和列空间?
- 零空间是一个解向量构成的空间,记为 N ( A ) N(A) N(A);
- 列空间是列向量组成而成的空间,记为 C ( A ) C(A) C(A);
零空间可以这么理解,使得方程组为零向量的解构成的空间;列空间就是列向量线性组合形成的空间。
二、系数矩阵零空间维数和方程、矩阵行列的关系: 零空间和列空间可能属于不同的实数空间:
- 零空间中的向量维数等于矩阵列数,或者说是未知数个数,或者说是列向量个数;
- 列空间中的向量维数等于矩阵行数,或者说是方程组个数,或者说是列向量分量数;
一个向量属于哪个维度的空间,与其分量数有关。如一个二维向量,分量数为2,应该属于 R 2 R^2 R2空间。列空间看行数,零空间看列数(零空间分量数等于系数组合的个数,也就是列数)。
下面举个例子熟悉一下: [ 1 2 3 4 5 6 7 8 3 3 6 4 ] [ x 1 x 2 x 3 x 4 ] = [ c 1 c 2 c 3 ] \begin{bmatrix} 1&2&3&4\\ 5&6&7&8\\ 3&3&6&4 \end{bmatrix}\begin{bmatrix} x_1\\x_2\\x_3\\x_4 \end{bmatrix}=\begin{bmatrix} c_1\\c_2\\c_3 \end{bmatrix} 153263376484 x1x2x3x4 = c1c2c3 方程组个数是3,每个列向量分量数为3,矩阵行数也是3,因此 C ( A ) 向量 ∈ R 3 C(A)向量 \in R^3 C(A)向量∈R3;方程未知数个数为4,向量总个数为4,矩阵列数为4,因此 N ( A ) 向量 ∈ R 4 N(A) 向量\in R^4 N(A)向量∈R4。
一、行空间角度下的特解 1.1 两个未知数解集假设我们有这样一个方程组: { x + y = 0 2 x + 2 y = 0 \left\{ \begin{aligned} x+y=0 \\ 2x+2y=0 \\ \end{aligned} \right. {x+y=02x+2y=0 回忆之前学的方程组行图像的知识,对于一个一元二次方程,它们的解等于两条直线的交点。两条直线之间的关系在平面中可不止相交,还有平行,平行等于两个方程等效,有无数个解且这些解既在这个直线又在那个直线。
我们从矩阵角度来解这个方程: [ 1 1 2 2 ] → [ 1 1 0 0 ] \begin{bmatrix} 1&1\\2&2 \end{bmatrix}\rightarrow\begin{bmatrix}1&1\\0&0\end{bmatrix} [1212]→[1010] 经过行变换后,可以发现一个全零行,这也就是说其中一个方程是重复、多余的,它的存在并不对最终结果造成影响。前面的讨论我们已经知道,这个解是一条直线,从向量角度上说,一个非零向量加上一个系数就可以表示任何在这个直线上的点。
[ 1 − 1 ] [ 2 − 2 ] [ 100 − 100 ] \begin{bmatrix} 1\\-1 \end{bmatrix}\quad\begin{bmatrix}2\\-2\end{bmatrix}\quad\begin{bmatrix}100\\-100\end{bmatrix} [1−1][2−2][100−100] 假设方程其中一个解为 s s s(Special),那么所有解应该表示为: c [ 1 − 1 ] c ∈ R c\begin{bmatrix} 1\\-1 \end{bmatrix} \quad c\in R c[1−1]c∈R 特解不能取全零,虽然也是一个解,但是无法进行扩展,因为都是零向量,零向量显然不是所有的 N ( A ) N(A) N(A)。
3.2 三个未知数的解对于一个三元一次的方程,未知数个数等于3,从行角度看有多种可能:
- 所有方程均有效,解是整个 R 3 R^3 R3空间;
- 只有一个方程无效,解是一个平面;
- 有两个方程有效,解是一个直线;
- 三个方程都有效,解是一个点(零空间);
对于第二种情况,我们需要找到两个不共线的向量并进行线性组合得到整个解平面;对于第三种,只需要找到一个向量既可以找到所有的解直线;最后则只有一个点。未知数个数等于系数矩阵的列数,等于零空间,从向量空间角度来说,这些解就像是 R 3 R^3 R3及子空间。
这里提供一种简单且有效的判断有效方程个数的方法,那就是将系数矩阵进行 R R E F RREF RREF变换,有多少非全零行就代表有多少个“有效方程”,知道有效方程就可以知道我们要找几个“特殊向量”和系数组合来构成解(子空间)。向量空间 R 3 R^3 R3是没有约束的,它充满了整个三维空间,一旦有一个方程约束,他将会被约束成子空间,看上去更加“小”。
那么这个特殊向量应该如何得到?这就要从列向量角度来理解,求这些特殊向量等于列向量的什么组合能让其得到一个结果向量,这个向量恰好是零向量。下面将从列向量角度找到这些特解,并用这些特解组成整个零空间。
二、消元法求取零空间求取零空间的关键在于求得其特解,特解的线性组合就可以涵盖所有零空间。特解个数等于零空间维度-有效方程组个数,这个有效方程组个数可以通过对矩阵的消元求得,更重要的是,消元之后列向量往往比较简洁,也方便我们观察(计算)出其特解。下面来看一个例子: A = [ 1 2 2 2 2 4 6 8 3 6 8 10 ] A=\begin{bmatrix}1&2&2&2\\2&4&6&8\\3&6&8&10\end{bmatrix} A= 1232462682810 尝试求出其零空间。方法就是对其进行消元,即使其主元为零也继续。 A = [ 1 2 2 2 2 4 6 8 3 6 8 10 ] → [ 1 2 2 2 0 0 2 4 0 0 2 4 ] → [ 1 2 2 2 0 0 2 4 0 0 0 0 ] = U A=\begin{bmatrix}1&2&2&2\\2&4&6&8\\3&6&8&10\end{bmatrix}\rightarrow\begin{bmatrix}1&2&2&2\\0&0&2&4\\0&0&2&4\end{bmatrix}\rightarrow\begin{bmatrix}\boxed{1}&2&2&2\\0&0&\boxed{2}&4\\0&0&0&0\end{bmatrix}=U A= 1232462682810 → 100200222244 → 100200220240 =U 上述的 U U U称为 A A A的阶梯形式(Echelon Form)。阶梯形式的主元个数我们称为 A A A的秩(rank of A),主元所在列 [ 1 0 0 ] , [ 2 2 0 ] \begin{bmatrix} 1 \\ 0 \\ 0\end{bmatrix},\begin{bmatrix} 2 \\ 2 \\ 0\end{bmatrix} 100 , 220 称为主元列(pivot columns),其余的 [ 2 0 0 ] , [ 2 4 0 ] \begin{bmatrix} 2 \\ 0 \\ 0\end{bmatrix},\begin{bmatrix} 2 \\ 4\\ 0\end{bmatrix} 200 , 240 则称为自由列(free columns)。仔细观察,可以发现自由列是可以由主元列的线性表示,自由列的每一个系数其实就是在告诉我们应该如何组合。自由列 [ 2 0 0 ] = 2 [ 1 0 0 ] \begin{bmatrix}2\\0\\0\end{bmatrix}=2\begin{bmatrix}1\\0\\0\end{bmatrix} 200 =2 100 ;自由列 [ 2 4 0 ] = − 2 [ 1 0 0 ] + 2 [ 2 2 0 ] \begin{bmatrix}2\\4\\0\end{bmatrix}=-2\begin{bmatrix}1\\0\\0\end{bmatrix}+2\begin{bmatrix}2\\2\\0\end{bmatrix} 240 =−2 100 +2 220
这个秩,表示的就是有效方程个数,决定了零空间是子空间的哪个级别,是零向量,还是直线,还是平面,等等。每一次使一个自由变量对应的系数为1,其他自由变量为零,求得主元列系数,记为一个特解,直到全部特解求取完毕。
自由的意思是可以随意给对应的系数取值( x 2 , x 4 x_2,x_4 x2,x4),然后求解主元对应系数( x 1 , x 3 x_1,x_3 x1,x3)。
行阶梯形式对应的数学方程为: { x 1 + 2 x 2 + 2 x 3 + 2 x 4 = 0 2 x 3 + 4 x 4 = 0 (1) \begin{cases} x_1+2x_2+&2x_3+&2x_4&=0\\ &2x_3+&4x_4&=0 \end{cases}\tag{1} {x1+2x2+2x3+2x3+2x44x4=0=0(1)
针对于上述方程其中一个解为: x = [ − 2 1 0 0 ] 或 [ 2 0 − 2 1 ] x=\begin{bmatrix}-2\\1\\0\\0\end{bmatrix}或\begin{bmatrix}2\\0\\-2\\1\end{bmatrix} x= −2100 或 20−21 上述的解称为特解。上述特解是通过交替给自由变量赋值1的方法(你也可用其他方法)。所有的解都可以由上述的交替赋值所线性表示,则所有的解为(通解)[1]: x = c 1 [ − 2 1 0 0 ] + c 2 [ 2 0 − 2 1 ] c 1 , c 2 ∈ R (2) x=c_1\begin{bmatrix}-2\\1\\0\\0\end{bmatrix}+c_2\begin{bmatrix}2\\0\\-2\\1\end{bmatrix}\quad c_1,c_2\in R \tag{2} x=c1 −2100 +c2 20−21 c1,c2∈R(2)
这个通解列向量可以看成是一个单位矩阵和另一个矩阵的堆叠而成。
重要:矩阵的秩等于主元个数,记为 r r r 。对于一个 m × n m \times n m×n的矩阵,如果主元个数为 r r r,换句话说矩阵的秩为 r r r,主元列向量为 r r r,自由列向量为 n − r n-r n−r,未知数个数等于矩阵的列数,即 n n n.
从列图像看,列向量由于少了一个约束方程,也就是秩小于方程数(行数)稍微作一下图就可以知道这个列向量并不能不能到达其分量数的 R 3 R^3 R3空间,只是其子空间。
三、化简的行阶梯形式行最简阶梯形式(Reduced row echelon Form),记为
R
R
R。如果我们继续对上述的
U
U
U继续化简,通过向上消元使主元之外都是0。对于上述例子:
U
=
[
1
2
2
2
0
0
2
4
0
0
0
0
]
→
[
1
2
0
−
2
0
0
2
4
0
0
0
0
]
→
[
1
2
0
−
2
0
0
1
2
0
0
0
0
]
=
R
U=\begin{bmatrix}\boxed{1}&2&2&2\\0&0&\boxed{2}&4\\0&0&0&0\end{bmatrix}\rightarrow\begin{bmatrix}\boxed{1}&2&0&-2\\0&0&\boxed{2}&4\\0&0&0&0\end{bmatrix}\rightarrow\begin{bmatrix}\boxed{1}&2&0&-2\\0&0&\boxed{1}&2\\0&0&0&0\end{bmatrix}=R
U=
100200220240
→
100200020−240
→
100200010−220
=R Tips:在Matlab中可以使用rref(A)
快速得到
R
R
R矩阵。
仔细观察上述最简阶梯矩阵,它的主列向量前 r r r个组成了一个单位向量 I ( I d e n t i t y ) I(Identity) I(Identity),自由列向量前 r r r个组成了一个向量记为 F ( F r e e ) F(Free ) F(Free).
I = [ 1 0 0 1 ] F = [ 2 − 2 0 2 ] I=\begin{bmatrix}1&0\\0&1\end{bmatrix}\quad F=\begin{bmatrix}2&-2\\0&2\end{bmatrix} I=[1001]F=[20−22] 对比(2)后发现,堆叠而成的矩阵恰好是 I I I和 − F -F −F,这是巧合吗?不是的。
前面一节定义了零空间是使得矩阵列向量零向量的系数组合,记 A A A的零空间矩阵为 N N N,那么有: A X = R X = [ I F 0 0 ] X = R N = 0 AX=RX=\begin{bmatrix}I&F\\0&0\end{bmatrix}X=RN=0 AX=RX=[I0F0]X=RN=0 得: N = X = [ − F I ] N=X=\begin{bmatrix}-F \\I\end{bmatrix} N=X=[−FI]
按照一样的方法,试试矩阵 A = [ 1 2 3 2 4 6 2 6 8 2 8 10 ] A=\begin{bmatrix}1&2&3\\2&4&6\\2&6&8\\2&8&10 \end{bmatrix} A= 1222246836810
A = [ 1 2 3 2 4 6 2 6 8 2 8 10 ] → [ 1 2 3 0 0 0 2 6 8 2 8 10 ] → [ 1 2 3 0 2 2 0 4 4 0 0 0 ] → [ 1 2 3 0 1 1 0 0 0 0 0 0 ] → [ 1 0 1 0 1 1 0 0 0 0 0 0 ] A=\begin{bmatrix}1&2&3\\2&4&6\\2&6&8\\2&8&10 \end{bmatrix}\rightarrow\begin{bmatrix}1&2&3\\0&0&0\\2&6&8\\2&8&10 \end{bmatrix}\rightarrow\begin{bmatrix}1&2&3\\0&2&2\\0&4&4\\0&0&0\end{bmatrix}\rightarrow\begin{bmatrix}1&2&3\\0&1&1\\0&0&0\\0&0&0\end{bmatrix}\rightarrow\begin{bmatrix}1&0&1\\0&1&1\\0&0&0\\0&0&0\end{bmatrix} A= 1222246836810 → 1022206830810 → 100022403240 → 100021003100 → 100001001100
那么其解为: X = c 1 [ − F I ] = c 1 [ − 1 − 1 1 ] c 2 ∈ R X=c_1\begin{bmatrix}-F\\I\end{bmatrix}=c_1\begin{bmatrix}-1\\-1\\1\end{bmatrix} \quad \quad c_2\in R X=c1[−FI]=c1 −1−11 c2∈R
[1] 零空间的线性组合仍然是子空间这是之前证明过的 [2] 注意,零空间维度不等于向量的维数。空间维数是基所含向量个数决定的,含多少个向量,维数就是多少。 【20220722】删除了关联性不强的内容 【20220921】修改了部分错误 【20230309】RREF(Reduced Row-Echelon Form)行最简形式。如果一个矩阵满足以下所有条件,那么其就是一个行最简形式。
- 全零行在矩阵的底部
- 每一行最左边的元素等于一
- 每一个最左边的元素行方向都是零
- 最左边的1,应该符合行下标越大,列下标也越大
还有一个,这个非零元素1叫做主元,对应的行叫做列主元。