本章是Gilbert Strang的MIT线性代数Linear Algebra公开课中【第七章 求解Ax=0:主变量和特解(lecture 7 Solving Ax=0:Pivot Variables, Special Solutions)】的笔记,参考他在 MIT Linear Algebra课程网站上公开分享的 lecture summary (PDF) & Lecture video transcript (PDF)等文档,整理笔记如下,笔记中的大部分内容是从 MIT Linear Algebra课程网站上的资料中直接粘贴过来的,本人只是将该课程视频中讲述的内容整理为文字形式,前面的章节可在本人的其他博客中找到(此处戳第一章,第二章,第三章,第四章,第五章,第六章),后面的章节会按照视频顺序不断更新~
lecture 7 Solving Ax=0:Pivot Variables, Special Solutions
本节是一个过渡章节,本门课将从定义转换到算法部分;上节课讲了零空间和列空间,本节课主要关注零空间的求解,即求解Ax=0的算法是怎样的。
一. 求解零空间(Computing the nullspace)
Example 1:
A=⎣⎡1232462682810⎦⎤
分析该矩阵:列二是列一的两倍,行三=行一+行二,即线性相关,消元的时候这些信息都会表现出来。
——求解零空间算法:
——消元。只是消元的对象变成了长方阵(rectangular matrices),此时的消元,即使主元位置是0,仍然要继续(行互换)。利用消元法求解方程组时,在消元的过程中不改变零空间,因为用一个方程减掉另一个方程时,不改变方程组的解,解不变,因此零空间也不变。(实际上,改变的是列空间)。另外,由于在消元的过程中,右侧向量永远是 0 ,因此可以省略不写,故只需处理方程组左侧。
具体的求解过程如下:(以“Example 1的求解过程”为例讲解“求解零空间的过程”)
1. 消元
- 处理第一列(消掉主元下面的元素)
- 处理第二列,但是第二列中的主元位置(行二列二)是 0 ,则往下找,看是否有非零元素可以进行行变换,但是下面(行三列二)还是 0 ,这说明第二列是前面列的线性组合,即相关于前面各列,但是消元不能停止,则继续找下一个主元。

其中,U为阶梯形式(echelon form):非零元素以一种阶梯形式出现;
U 中最后一行全为 0 ,这是因为行三是行一和行二的线性组合,消元时,是其他行的线性组合的那一行就会变成 0 。
方程组由Ax=0 变为Ux=0,但解和零空间不变。(该方程组一共有三个方程、四个未知数,故一定有解)
-
我们需要找出下列信息:
- 主列(pivot columns):主元所在的列;
- 自由列(free columns):主列以外的列,自由列表示可以自由的或者任意的给对应的未知数分配数值;
- 主变量(pivot variables):主列对应的变量;
- 自由变量(free variables):自由列对应的变量,自由变量可以任意赋值。
在U中: 主列(列一和列三)和自由列(列二和列四)如下图所示,故列二和列四的乘数是任意的,即未 知数x2,x4(自由变量)可以任取,则只需求解主变量 x1,x3 。

2. 求特解(Special solutions)
特解:特定的解,特殊之处在于给自由变量分配特定值 0、1,而不是别的值,进而得到的零空间内的向量。
——Ux=0代表什么?(即矩阵的含义是什么?)
——代表一些方程,本例中的具体方程如下:
x1+2x2+2x3+2x4=02x3+4x4=0
- 由于x2和x4的值可以任取,现假设x2=1,x4=0,即 x=⎣⎢⎢⎡−1−0⎦⎥⎥⎤,再进行回代,得到x3=0,x1=−2,故 x=⎣⎢⎢⎡−2100⎦⎥⎥⎤ 就是零空间的一个向量,也就是Ax=0的一个解;
——这解代表什么?
——表示(−2倍列一)+(1倍列二)=0。
-
由于自由变量有两个,故还可以选择 x=⎣⎢⎢⎡−0−1⎦⎥⎥⎤ 形式(它与刚刚的x不共向),仍然回代,得到x=⎣⎢⎢⎡20−21⎦⎥⎥⎤,它也属于零空间,它表示两个列一减两个列三加一个列四等于0;
-
综上,特解为 ⎣⎢⎢⎡−2100⎦⎥⎥⎤ 和 ⎣⎢⎢⎡20−21⎦⎥⎥⎤ ;
3. 求零空间
零空间:特解的所有线性组合构成的即为零空间;(零空间包含的刚好是特解的线性组合)。
-
由于⎣⎢⎢⎡−2100⎦⎥⎥⎤ 是方程组的解,则它乘以任意倍数后,仍然是方程组的解,即 x=c⎣⎢⎢⎡−2100⎦⎥⎥⎤仍是方程组的解,它是四维空间中一条无限延伸的直线,该直线在零空间中,但它不是整个零空间;
-
同理, ⎣⎢⎢⎡20−21⎦⎥⎥⎤ 乘以任意倍数后也仍在空间中,即 x=d⎣⎢⎢⎡20−21⎦⎥⎥⎤ ;
-
通过特解能够构造出整个零空间,因此,现在就能求出整个零空间了,即Ax=0的所有解,取特解的线性组合即为所求的零空间,故零空间为 x=c⎣⎢⎢⎡−2100⎦⎥⎥⎤+d⎣⎢⎢⎡20−21⎦⎥⎥⎤ 。
4. 总结(求解零空间,即求解Ax=0)
-
消元;消元后,确定主列和自由列,得到主变量和自由变量;
(Example 1中的主变量是变量x1和x3,自由变量是x2和x4)
-
求特解;将自由变量赋值为 0、1,得到的解向量即为特解;
-
求零空间:求所有特解的线性组合,则构成零空间,
矩阵A的零空间 = “Ax=0的所有解” = “Ux=0的所有解”
二. 矩阵的秩(Rank)
矩阵的秩:矩阵的主元的个数。
矩阵的秩与其转置矩阵的秩相等。
对于 m×n 的矩阵,共 n 个变量,若秩为r,即 r 个变量是主变量, r个主变量表示:方程组中只有 r 个方程起作用,剩下的 n−r 个变量都可以自由选取,即有 n−r 个自由变量,故可令其为 0、1这样的特殊值,就能得到特解。
注意,每个自由变量对应一个特解,因为:令某一个自由变量为 1 ,其余的为 0 ,即可得到一个特解,当所有的自由变量都赋过 1 后,则求完了所有特解。
Example 1中, rank=2,表示主变量的个数是 2 ,故有 4−2=2 个自由变量;由于只有 2 个主变量,故虽然看起来是 3 个方程,但其实真正起作用的只有两个。
三. 简化行阶梯形式(Reduced row echelon form)
为了让阶梯型矩阵 U 看起来更加干净,对其进行进一步简化,简化为“简化行阶梯形式”,即矩阵 R 。在简化行阶梯形式中,所有主元均为 1 ,而且主元上下元素均为 0 。
求解简化行阶梯形式的具体步骤:
1. 从 A 到 U
该过程在见上面(即为求解零空间中的第一步 消元)
2. 从 U 到 R
-
得到 U 后,向上消元,将主元上方的元素也变为 0 ;
-
用方程除以主元,使得主元简化为 1 ;此时,主元全为 1 ,且主元上下均为 0 。
注:上述过程不改变解。
对于 Example 1:

在MATLAB中,使用命令R=rref(A),即可由A直接得到R。
3. 最简行行阶梯矩阵的意义
矩阵 R 以最简形式包含了所有信息:
-
可以立刻看出主行、主列;
Example 1中,主行为行一、行二,主列为列一、列三;
-
矩阵 R 中包含了一个单位阵,它位于主元和主列的交汇处;
Example 1中,主元上下均为 0 ,主元为 1 ,即为 2×2 的单位阵:
R=[1001]
-
矩阵 R 中有一行全为 0 ,表示原行是其他行的线性组合,因此,实际上有用的行数应该去掉该行;
Example 1中,实际上只有两行;
-
除了单位阵以外,矩阵 R 中还有自由列,他们以最简形式出现,则此时特解很容易解出,回代即可。用Example 1中最简的 R 矩阵形式写出方程组如下:
x1+2x2−2x4=0x3+2x4=0
即为Rx=0。
可将主列和自由列分别写出,具体如下,此过程其实就相当于回代,自由列中数字由于需要移到等式的另一侧,因此结果变为相反数:

对上图中的变化进行以下解释:
-
假设现在矩阵已经是rref form,同时假设主列在前,自由列在后,最底下是全 0 行,即为:
R=[I0F0]这是典型的简化行阶梯形式。典型的含义是:矩阵 I 是 r×r 的,有 r 个主行、 r 个主列, n−r 个自由列,利用 R 可以一次性求出 Rx=0 的所有特解。

-
构造零空间矩阵(null space matrix),记作N;
零空间矩阵:各列由特解组成,即满足 RN=0 , R 乘以 N 的每一列均得到一列 0 ,即零空间矩阵就是将所有特解作为列的矩阵。
-
——什么 N 能达到目的?
——如果将单位阵 I 放在解的自由变量部分,将 −F 放到解的主变量部分,即 N=[−FI] 。
-
N 的构造就相当于上上图中,将 I 和 −F 都直接放到特解中了,这就是特解构成的矩阵,.
-
MATLAB可以通过指令 null 求出,这个指令可以生成零基,即 null(A) 即得到矩阵 A 的零空间;
——这个指令是如何工作的呢?
——先通过MATLAB算出 R ,然后找出主变量和自由变量,将 0、1 分配到自由变量中,复制出主变量,使用回代,此处回代非常简单:
Rx=0[IF][xpivotxfree]=0xpivot+Fxfree=0xpivot=−Fxfree此时,如果给自由变量分配单位阵,则主变量变为 −F 。
4. 总结
原方程组 Ax=0 ,中间过程 Ux=0 ,最终得到 Rx=0 ,解均相同,因为在消元过程中没有改变解。
Example 2:(再举一个例子把算法过一遍,取上面例子中矩阵A的转置)
A=⎣⎢⎢⎡1222246836810⎦⎥⎥⎤显然,第三列是前两列之和,故它不是主列,是自由列;
4.1 求解 Ax=0 具体步骤如下:
-
消元(从第一列到最后一列):

可知,主变量为 x1 和 x2 ,自由变量为 x3 。
秩仍然为 2,(r=2),即有两个主列,矩阵主列的个数与其转置相同;由于 3−2=1 ,因此只有一列是自由列。
-
求零空间
-
根据 U ,写出方程组如下:
x1+2x2+3x3=02x2+2x3=0
-
求特解:为自由变量赋值,将自由变量 x3 赋值为 1 ,然后求主变量;(如果将自由变量赋值为 0 ,然后计算主变量,会发现结果全为 0 ,无意义):
当x3=1时,x2=−1,x1=−1,即得特解 x=⎣⎡−1−11⎦⎤ ,并对特解进行检验。
——如何检验?
——可将此特解 x=⎣⎡−1−11⎦⎤ 代回最初的矩阵 A 中检验,即:若 −1倍列一减 1 倍列二加 1 倍列三得一列 0 ,则结果成立,即特解 x 属于 A 的零空间。
-
求整个零空间:由于只有一个特解,故特解的线性组合就是将唯一的特解 x 乘以 c 即可,故 Ax=0 的解为 x=c⎣⎡−1−11⎦⎤ ,即整个零空间在几何上是一条直线。
注意,必须有 c 表示的才是整个零空间,而不是单个向量;如果问零空间的基,那才指的是单个向量⎣⎡−1−11⎦⎤。
4.2 另外,可以求得Example 2中矩阵的最简形式R:

x 中仍然包含单位阵,对应自由变量,由于此时仅有一个数字 1 ,故 1 是此时的单位阵( 1 也是一个单位阵);主变量的结果仍是 −F ,即 x=c[−FI]=c⎣⎡−1−11⎦⎤ 。