MIT线性代数Linear Algebra公开课笔记 第七章 求解Ax=0主变量和特解 lecture7 Solving Ax=0:Pivot Variables, Special Solutions

本章是Gilbert Strang的MIT线性代数Linear Algebra公开课中【第七章 求解Ax=0Ax=0:主变量和特解(lecture 7 Solving Ax=0Ax = 0:Pivot Variables, Special Solutions)】的笔记,参考他在 MIT Linear Algebra课程网站上公开分享的 lecture summary (PDF) & Lecture video transcript (PDF)等文档,整理笔记如下,笔记中的大部分内容是从 MIT Linear Algebra课程网站上的资料中直接粘贴过来的,本人只是将该课程视频中讲述的内容整理为文字形式,前面的章节可在本人的其他博客中找到(此处戳第一章第二章第三章第四章第五章第六章),后面的章节会按照视频顺序不断更新~

lecture 7 Solving Ax=0Ax = 0:Pivot Variables, Special Solutions

本节是一个过渡章节,本门课将从定义转换到算法部分;上节课讲了零空间和列空间,本节课主要关注零空间的求解,即求解Ax=0Ax=0的算法是怎样的。

一. 求解零空间(Computing the nullspace)

Example 1:
A=[1222246836810] A=\left[\begin{array}{llll} {1} & {2} & {2} & {2} \\ {2} & {4} & {6} & {8} \\ {3} & {6} & {8} & {10} \end{array}\right]
分析该矩阵:列二是列一的两倍,行三=行一+行二,即线性相关,消元的时候这些信息都会表现出来。

——求解零空间算法:

——消元。只是消元的对象变成了长方阵(rectangular matrices),此时的消元,即使主元位置是0,仍然要继续(行互换)。利用消元法求解方程组时,在消元的过程中不改变零空间,因为用一个方程减掉另一个方程时,不改变方程组的解,解不变,因此零空间也不变。(实际上,改变的是列空间)。另外,由于在消元的过程中,右侧向量永远是 00 ,因此可以省略不写,故只需处理方程组左侧。

具体的求解过程如下:(以“Example 1的求解过程”为例讲解“求解零空间的过程”)

1. 消元

  1. 处理第一列(消掉主元下面的元素)
    MIT线性代数Linear Algebra公开课笔记 第七章 求解Ax=0主变量和特解 lecture7 Solving Ax=0:Pivot Variables, Special Solutions
  2. 处理第二列,但是第二列中的主元位置(行二列二)是 00 ,则往下找,看是否有非零元素可以进行行变换,但是下面(行三列二)还是 00 ,这说明第二列是前面列的线性组合,即相关于前面各列,但是消元不能停止,则继续找下一个主元。
    MIT线性代数Linear Algebra公开课笔记 第七章 求解Ax=0主变量和特解 lecture7 Solving Ax=0:Pivot Variables, Special Solutions
     其中,UU为阶梯形式(echelon form):非零元素以一种阶梯形式出现;

    UU 中最后一行全为 00 ,这是因为行三是行一和行二的线性组合,消元时,是其他行的线性组合的那一行就会变成 00

    方程组由Ax=0Ax=0 变为Ux=0Ux=0,但解和零空间不变。(该方程组一共有三个方程、四个未知数,故一定有解)

  1. 我们需要找出下列信息:

    • 主列(pivot columns):主元所在的列;
    • 自由列(free columns):主列以外的列,自由列表示可以自由的或者任意的给对应的未知数分配数值;
    • 主变量(pivot variables):主列对应的变量;
    • 自由变量(free variables):自由列对应的变量,自由变量可以任意赋值。

    UU中: 主列(列一和列三)和自由列(列二和列四)如下图所示,故列二和列四的乘数是任意的,即未 知数x2,x4x_2,x_4(自由变量)可以任取,则只需求解主变量 x1,x3x_1,x_3
    MIT线性代数Linear Algebra公开课笔记 第七章 求解Ax=0主变量和特解 lecture7 Solving Ax=0:Pivot Variables, Special Solutions

2. 求特解(Special solutions)

特解:特定的解,特殊之处在于给自由变量分配特定值 0011,而不是别的值,进而得到的零空间内的向量。

——Ux=0Ux=0代表什么?(即矩阵的含义是什么?)

——代表一些方程,本例中的具体方程如下:
x1+2x2+2x3+2x4=02x3+4x4=0 x_{1}+2 x_{2}+2 x_{3}+2 x_{4}=0 \\ 2 x_{3}+4 x_{4}=0

  1. 由于x2x_2x4x_4的值可以任取,现假设x2=1,x4=0x_2=1,x_4=0,即 x=[10]\mathbf{x}=\left[\begin{array}{r}{-} \\ {1} \\ {-} \\ {0}\end{array}\right],再进行回代,得到x3=0x_3=0x1=2x_1=-2,故 x=[2100]\mathbf{x}=\left[\begin{array}{r} {-2} \\ {1} \\ {0} \\ {0}\end{array}\right] 就是零空间的一个向量,也就是Ax=0Ax=0的一个解;

   ——这解代表什么?

   ——表示(2-2倍列一)+(1倍列二)=0。

  1. 由于自由变量有两个,故还可以选择 x=[01]\mathbf{x}=\left[\begin{array}{r}{-} \\ {0} \\ {-} \\ {1}\end{array}\right] 形式(它与刚刚的xx不共向),仍然回代,得到x=[2021]\mathbf{x}=\left[\begin{array}{r}{2} \\ {0} \\ {-2} \\ {1}\end{array}\right],它也属于零空间,它表示两个列一减两个列三加一个列四等于0;

  2. 综上,特解为 [2100]\left[\begin{array}{r}{-2} \\ {1} \\ {0} \\ {0}\end{array}\right][2021]\left[\begin{array}{r}{2} \\ {0} \\ {-2} \\ {1}\end{array}\right]

3. 求零空间

零空间:特解的所有线性组合构成的即为零空间;(零空间包含的刚好是特解的线性组合)。

  1. 由于[2100]\left[\begin{array}{r}{-2} \\ {1} \\ {0} \\ {0}\end{array}\right] 是方程组的解,则它乘以任意倍数后,仍然是方程组的解,即 x=c[2100]\mathbf{x}=c\left[\begin{array}{r}{-2} \\ {1} \\ {0} \\ {0}\end{array}\right]仍是方程组的解,它是四维空间中一条无限延伸的直线,该直线在零空间中,但它不是整个零空间;

  2. 同理, [2021]\left[\begin{array}{r}{2} \\ {0} \\ {-2} \\ {1}\end{array}\right] 乘以任意倍数后也仍在空间中,即 x=d[2021]\mathbf{x}=d\left[\begin{array}{r}{2} \\ {0} \\ {-2} \\ {1}\end{array}\right]

  3. 通过特解能够构造出整个零空间,因此,现在就能求出整个零空间了,即Ax=0Ax=0的所有解,取特解的线性组合即为所求的零空间,故零空间为 x=c[2100]+d[2021]\mathbf{x}=c\left[\begin{array}{r}{-2} \\ {1} \\ {0} \\ {0}\end{array}\right]+d\left[\begin{array}{r}{2} \\ {0} \\ {-2} \\ {1}\end{array}\right]

4. 总结(求解零空间,即求解Ax=0Ax=0

  1. 消元;消元后,确定主列和自由列,得到主变量和自由变量;

    (Example 1中的主变量是变量x1x_1x3x_3,自由变量是x2x_2x4x_4

  2. 求特解;将自由变量赋值为 010、1,得到的解向量即为特解;

  3. 求零空间:求所有特解的线性组合,则构成零空间,

矩阵AA的零空间 = “Ax=0Ax=0的所有解” = “Ux=0Ux=0的所有解”

二. 矩阵的秩(Rank)

矩阵的秩:矩阵的主元的个数。

矩阵的秩与其转置矩阵的秩相等。

对于 m×nm×n 的矩阵,共 nn 个变量,若秩为rr,即 rr 个变量是主变量, rr个主变量表示:方程组中只有 rr 个方程起作用,剩下的 nrn-r 个变量都可以自由选取,即有 nrn-r 个自由变量,故可令其为 010、1这样的特殊值,就能得到特解。

注意,每个自由变量对应一个特解,因为:令某一个自由变量为 11 ,其余的为 00 ,即可得到一个特解,当所有的自由变量都赋过 11 后,则求完了所有特解。

Example 1中, rank=2\text{rank}=2,表示主变量的个数是 22 ,故有 42=24-2=2 个自由变量;由于只有 22 个主变量,故虽然看起来是 33 个方程,但其实真正起作用的只有两个。

三. 简化行阶梯形式(Reduced row echelon form)

为了让阶梯型矩阵 UU 看起来更加干净,对其进行进一步简化,简化为“简化行阶梯形式”,即矩阵 RR 。在简化行阶梯形式中,所有主元均为 11 ,而且主元上下元素均为 00

求解简化行阶梯形式的具体步骤:

1. 从 AAUU

该过程在见上面(即为求解零空间中的第一步 消元)

2. 从 UURR

  1. 得到 UU 后,向上消元,将主元上方的元素也变为 00

  2. 用方程除以主元,使得主元简化为 11 ;此时,主元全为 11 ,且主元上下均为 00

    注:上述过程不改变解。

    对于 Example 1:

MIT线性代数Linear Algebra公开课笔记 第七章 求解Ax=0主变量和特解 lecture7 Solving Ax=0:Pivot Variables, Special Solutions

   在MATLAB中,使用命令R=rref(A)R=\text{rref}(A),即可由AA直接得到RR

3. 最简行行阶梯矩阵的意义

矩阵 RR 以最简形式包含了所有信息:

  1. 可以立刻看出主行、主列;

    Example 1中,主行为行一、行二,主列为列一、列三;

  2. 矩阵 RR 中包含了一个单位阵,它位于主元和主列的交汇处;

    Example 1中,主元上下均为 00 ,主元为 11 ,即为 2×22×2 的单位阵:

R=[1001] R= \left[\begin{array}{cc} {1} & {0} \\ {0} & {1} \end{array}\right]

  1. 矩阵 RR 中有一行全为 00 ,表示原行是其他行的线性组合,因此,实际上有用的行数应该去掉该行;

    Example 1中,实际上只有两行;

  2. 除了单位阵以外,矩阵 RR 中还有自由列,他们以最简形式出现,则此时特解很容易解出,回代即可。用Example 1中最简的 RR 矩阵形式写出方程组如下:
    x1+2x22x4=0x3+2x4=0 x_{1}+2x_{2}-2x_{4}=0 \\ x_{3}+2x_{4}=0
    即为Rx=0Rx=0

    可将主列和自由列分别写出,具体如下,此过程其实就相当于回代,自由列中数字由于需要移到等式的另一侧,因此结果变为相反数:

MIT线性代数Linear Algebra公开课笔记 第七章 求解Ax=0主变量和特解 lecture7 Solving Ax=0:Pivot Variables, Special Solutions

  对上图中的变化进行以下解释:

  • 假设现在矩阵已经是rref form,同时假设主列在前,自由列在后,最底下是全 00 行,即为:
    R=[IF00] R=\left[\begin{array}{cc} {I} & {F} \\ {0} & {0} \end{array}\right] 这是典型的简化行阶梯形式。典型的含义是:矩阵 IIr×rr×r 的,有 rr 个主行、 rr 个主列, nrn-r 个自由列,利用 RR 可以一次性求出 Rx=0Rx=0 的所有特解。
    MIT线性代数Linear Algebra公开课笔记 第七章 求解Ax=0主变量和特解 lecture7 Solving Ax=0:Pivot Variables, Special Solutions

  • 构造零空间矩阵(null space matrix),记作NN

    零空间矩阵:各列由特解组成,即满足 RN=0RN=0RR 乘以 NN 的每一列均得到一列 00 ,即零空间矩阵就是将所有特解作为列的矩阵。

    1. ——什么 NN 能达到目的?

      ——如果将单位阵 II 放在解的自由变量部分,将 F-F 放到解的主变量部分,即 N=[FI]N=\left[\begin{array}{r}{-F} \\ {I}\end{array}\right]

    2. NN 的构造就相当于上上图中,将 IIF-F 都直接放到特解中了,这就是特解构成的矩阵,.

    3. MATLAB可以通过指令 null\text{null} 求出,这个指令可以生成零基,即 null(A)\text{null}(A) 即得到矩阵 AA 的零空间;

      ——这个指令是如何工作的呢?

      ——先通过MATLAB算出 RR ,然后找出主变量和自由变量,将 010、1 分配到自由变量中,复制出主变量,使用回代,此处回代非常简单:
      Rx=0 Rx=0 [IF][xpivotxfree]=0 \left[\begin{array}{cc} {I} & {F} \end{array}\right] \left[\begin{array}{cc} {x_{pivot}} \\ {x_{free}} \end{array}\right]=0 xpivot+Fxfree=0 \begin{array}{cc} {x_{pivot}} + {F} {x_{free}} \end{array}=0 xpivot=Fxfree \begin{array}{cc} {x_{pivot}}=-F {x_{free}} \end{array} 此时,如果给自由变量分配单位阵,则主变量变为 F-F

4. 总结

原方程组 Ax=0Ax=0 ,中间过程 Ux=0Ux=0 ,最终得到 Rx=0Rx=0 ,解均相同,因为在消元过程中没有改变解。

Example 2:(再举一个例子把算法过一遍,取上面例子中矩阵A的转置)
A=[1232462682810] A=\left[\begin{array}{cc} {1} & {2} & {3} \\ {2} & {4} & {6} \\ {2} & {6} & {8} \\ {2} & {8} & {10} \end{array}\right] 显然,第三列是前两列之和,故它不是主列,是自由列;

4.1 求解 Ax=0Ax=0 具体步骤如下:

  1. 消元(从第一列到最后一列):

    MIT线性代数Linear Algebra公开课笔记 第七章 求解Ax=0主变量和特解 lecture7 Solving Ax=0:Pivot Variables, Special Solutions

    可知,主变量为 x1x_1x2x_2 ,自由变量为 x3x_3

    秩仍然为 2(r=2)2,(r=2),即有两个主列,矩阵主列的个数与其转置相同;由于 32=13-2=1 ,因此只有一列是自由列。

  2. 求零空间

    • 根据 UU ,写出方程组如下:
      x1+2x2+3x3=02x2+2x3=0 x_1+2x_2+3x_3=0 \\ 2x_2+2x_3=0

    • 求特解:为自由变量赋值,将自由变量 x3x_3 赋值为 11 ,然后求主变量;(如果将自由变量赋值为 00 ,然后计算主变量,会发现结果全为 00 ,无意义):

      x3=1x_3=1时,x2=1x_2=-1x1=1x_1=-1,即得特解 x=[111]\mathbf{x}=\left[\begin{array}{r}{-1} \\ {-1} \\ {1} \end{array}\right] ,并对特解进行检验。

      ——如何检验?

      ——可将此特解 x=[111]\mathbf{x}=\left[\begin{array}{r}{-1} \\ {-1} \\ {1} \end{array}\right] 代回最初的矩阵 AA 中检验,即:若 1-1倍列一减 11 倍列二加 11 倍列三得一列 00 ,则结果成立,即特解 xx 属于 AA 的零空间。

    • 求整个零空间:由于只有一个特解,故特解的线性组合就是将唯一的特解 xx 乘以 cc 即可,故 Ax=0Ax=0 的解为 x=c[111]\mathbf{x}=c\left[\begin{array}{r}{-1} \\ {-1} \\ {1} \end{array}\right] ,即整个零空间在几何上是一条直线。

      注意,必须有 cc 表示的才是整个零空间,而不是单个向量;如果问零空间的基,那才指的是单个向量[111]\left[\begin{array}{r}{-1} \\ {-1} \\ {1} \end{array}\right]

4.2 另外,可以求得Example 2中矩阵的最简形式R:

MIT线性代数Linear Algebra公开课笔记 第七章 求解Ax=0主变量和特解 lecture7 Solving Ax=0:Pivot Variables, Special Solutions

xx 中仍然包含单位阵,对应自由变量,由于此时仅有一个数字 11 ,故 11 是此时的单位阵( 11 也是一个单位阵);主变量的结果仍是 F-F ,即 x=c[FI]=c[111]\mathbf{x}=c\left[\begin{array}{r}{-F} \\ {I} \end{array}\right]=c\left[\begin{array}{r}{-1} \\ {-1} \\ {1} \end{array}\right]