Strang 线性代数导读 · 序言与 A = CR
Strang 第 6 版把「列空间」与「线性无关」提到了课程最前面。本导读用可交互的图形讲透序言里的全景图——线性组合、列空间、A = CR、四个基本子空间与五大矩阵分解——再深入 Strang 的短文《消元与分解 A = CR》,看懂简化阶梯形里那块 F 矩阵的意义。
内容整理自 Gilbert Strang, Introduction to Linear Algebra, 6th ed.(Wellesley-Cambridge Press)的序言(p. v–x)、目录与封底,以及 Strang 的短文 Elimination and Factorization A = CR。仓库中的 PDF 仅含这 14 页,因此本导读不包含正文各章。
- 左侧目录切换章节;进入章节后可展开小节快速跳转。左上角搜索框可搜索小节标题和术语。
- 每章开头的「⚡ 一分钟速览」和「🗺 本章地图」先帮你建立全局印象,再逐节深入。
- 带 ⚙ 标记的是交互演示:拖动图中的点、滑块或点击按钮,观察图形与数值如何变化;「👀 观察」提示告诉你该注意什么。
- 灰色小标签是原文位置,方便对照英文原文:序言用页码(如 p. vii),A = CR 短文用段号与公式编号(如 §4、(5));术语首次出现附英文。
- 证明与推导默认折叠,想深究时再展开;点击术语卡片可翻面;测验题选择后立即给出解释。
- 右上角 ☾/☀ 切换明暗主题;已读章节会在目录中标记。
Strang 在序言与封底里说:每当矩阵有某种特殊性质,就有一种分解把它直接展示出来;越往下越有用,最后的 SVD 适用于一切矩阵。点击第一张卡片进入序言导读。
C:A 的前 r 个无关列;R:把 C 的列组合成 A 的全部列。
L:对角线全为 1 的下三角矩阵;U:对角线无零的上三角矩阵(消元的记录)。
Q:列是正交单位向量;R:上三角,把 Q 的正交列组合成 A 的列。
对称矩阵 S:Q 的列是正交的特征向量,Λ 是实特征值。
任何矩阵都行:U、V 的列是正交单位的奇异向量,Σ 是正的奇异值。
- 第 1 章 序言导读:Strang 在序言里给出的全景——线性组合与列空间、A = CR、四个基本子空间、五大分解、深度学习与应用、全书路线图。
- 第 2 章 消元与分解 A = CR:Strang 的短文——简化阶梯形 rref(A) 里那块 F 矩阵究竟是什么,以及它如何同时给出列空间、行空间与零空间的基。
注:仓库中的 PDF 只有序言、目录、封底与这篇短文,共 14 页,因此本导读不包含正文各章的内容。
目录
序言导读:线性代数全景 Preface: The Big Picture
Strang 只用 6 页序言就画出了整门课的地图:从两个列向量出发,经过线性组合、列空间与 A = CR,走到四个基本子空间和五大矩阵分解,最后通向深度学习与各种应用。这一章把这张地图一块一块拆开,每个想法都配上小例子和能动手的图。
- 看懂「线性组合」:为什么两个三维向量 $a_1,a_2$ 的全部组合 $ca_1+da_2$ 恰好铺满一个过原点的平面。
- 把矩阵看成「一排列向量」,理解列空间 = 各列的全部组合,并能从左到右逐列判断「独立」还是「组合」。
- 会写出 $A=CR$:$C$ 收集独立的列,$R$ 记录每一列的「配方」;理解「$CR$ 的第 $j$ 列 = $C$ 乘 $R$ 的第 $j$ 列」。
- 说出四个基本子空间的名字、所在空间、维数 $r,\ n-r,\ r,\ m-r$,以及「行空间 ⟂ 零空间、列空间 ⟂ $A^{\mathsf T}$ 的零空间」。
- 认识五大分解 $CR$、$LU$、$QR$、$Q\Lambda Q^{\mathsf T}$、$U\Sigma V^{\mathsf T}$ 的因子长什么样,明白正交矩阵为什么「完美」、SVD 为什么值得特别关注。
- 了解序言对深度学习(分段线性的学习函数)和四类应用矩阵的介绍,并能借助目录找到每个想法在正文哪一章展开。
- 向量能相加、能乘数;两者合起来就是线性组合 $ca_1+da_2$——整门课最基本的动作。
- $a_1=(2,3,1)$、$a_2=(1,4,2)$ 的全部组合铺满三维空间中一个过原点的无限平面;平面上每一点都是它们的组合。
- 把列排进矩阵 $A$,全部列的组合叫列空间。从左到右逐列看:新列要么落在已有空间里(什么也不添),要么把空间撑大一维。
- 挑出独立的列组成 $C$,用 $R$ 记录每一列怎样由 $C$ 组合出来,就得到 $A=CR$;独立列的个数 $r$ 决定一切维数。
- 每个 $m\times n$ 矩阵都有四个基本子空间:$\mathbb R^n$ 中的行空间(维数 $r$)⟂ 零空间($n-r$),$\mathbb R^m$ 中的列空间($r$)⟂ $A^{\mathsf T}$ 的零空间($m-r$)。独立列数永远等于独立行数。
- 五大分解 $A=CR,\ LU,\ QR,\ S=Q\Lambda Q^{\mathsf T},\ A=U\Sigma V^{\mathsf T}$ 是全书的组织原则;正交矩阵(列是互相垂直的单位向量)最完美,SVD 对每个矩阵都成立。
- 深度学习要从数据中「学出」规则:学习函数 $F(x,v)$ 不能是线性的,最受欢迎的是分段线性。应用中的四类特殊矩阵:马尔可夫、关联、傅里叶、协方差。
点击方框可跳到对应小节。第一行是序言前三页的「课程开头」,第二行是后三页的「全景」:两种组织方式(四个子空间、五大分解)、深度学习与应用,以及目录。
| 本导读 | 原书内容 | 原书页码 |
|---|---|---|
| P1 | 视频课程;向量 $a_1,a_2$;线性组合与组合网格图 | p. v–vi |
| P2 | 3×2 矩阵、列空间、「四个想法」;再加两列 | p. vi–vii |
| P3 | Matrix Multiplication $A = CR$ | p. vii |
| P4 | The Four Fundamental Subspaces(大图) | p. viii |
| P5 | Five Factorizations of a Matrix;封底的五大分解 | p. ix、封底 |
| P6 | Deep Learning | p. ix |
| P7 | Applications in the Book and on the Website;三个问题 | p. x |
| P8 | 目录(Contents) | p. iii–iv |
P1–P8 是本导读自加的编号(避免与原书第 1.1 节等编号混淆)。灰色小标签如 p. vii 就是原书页码。
P1 两个列向量:线性组合填满一个平面 Preface p. v–vi: vectors and linear combinations
这一节回答一个看似简单的问题:两个三维向量,经过「伸缩」再「相加」,能到达空间中的哪些点?答案是:一个穿过原点、向四面八方无限延伸的平面。这个问题虽小,却是整门线性代数的第一块基石——后面的列空间、$A=CR$、四个子空间,全都从这里长出来。
Strang 首先推荐与本书配套的 MIT 线性代数课 Math 18.06 的视频,它们是 MIT OpenCourseWare(开放课程)的一部分:一套是「开放课程诞生之初」的 2010 年春季原版,另一套是 2011 年秋季的 18.06SC 版——后者加入了研究生讲解习题的视频(Strang 说「真的很好」)和一段简短的线性代数导论。两个网站左栏都有课程目录。
接着他说:这门课如今有了一个新的开头——两个关键想法,线性无关(linear independence)与矩阵的列空间(column space),被挪到了课程最前面。序言要做的,就是把这两个想法先讲给你听。
向量、零向量与两种基本运算 Column vectors a₁, a₂ and the zero vector
从两个列向量(column vector) $a_1$、$a_2$ 出发。它们各有 3 个分量(component),所以各自对应三维空间中的一个点——也可以画成从原点出发、指向这个点的箭头。画图时需要一个中心点来标出零向量(zero vector):
向量画在二维的纸面上,但我们都有想象三维图形的经验。序言的第一张图画出了 $a_1$、$a_2$、$2a_1$ 和向量和 $a_1+a_2$,还有更远处的 $2a_1+a_2$。这张图演示了向量的两种基本运算 p. v–vi:
$2a_1=2\,(2,3,1)=(4,6,2)$:每个分量都乘 2。几何上:方向不变、长度加倍。乘 $-1$ 则掉头,乘 $\tfrac12$ 则缩短一半。
$a_1+a_2=(2+1,\ 3+4,\ 1+2)=(3,7,3)$:对应分量相加。几何上:把 $a_2$ 的尾巴接到 $a_1$ 的箭头上——正好是以 $a_1,a_2$ 为邻边的平行四边形的对角线。
两种运算合起来,就得到原书图中最远的那个点 $2a_1+a_2$。原书只标了名字,没写坐标,我们算一下:$2a_1+a_2=(4,6,2)+(1,4,2)=(5,10,4)$。下面的三维演示默认视角就是原书那张图:虚线勾出了两个相邻的平行四边形 $0,\ a_1,\ a_1+a_2,\ a_2$ 与 $a_1,\ 2a_1,\ 2a_1+a_2,\ a_1+a_2$。
拖动图中空白处可旋转视角;拖动绿色的点(或用 $c$、$d$ 滑块)改变组合 $ca_1+da_2$。点「撒点」随机撒下许多组合,再点「侧着看」——所有的点缩成一条线。
无论 $c$、$d$ 取什么数,绿点都离不开那张浅色的平面;「侧着看」时,平面连同上面所有的点一起缩成一条直线——这正是「所有组合都在同一个平面上」的直观证据。取 $c=d=0$ 得到原点,所以这个平面一定经过原点。
线性组合:c 和 d 可以取任何数 Linear combinations ca₁ + da₂
对任意两个数 $c$ 和 $d$,向量 $ca_1+da_2$ 叫做 $a_1$ 与 $a_2$ 的一个线性组合。第一张图里的 $2a_1+a_2$ 就是 $c=2,\ d=1$ 的线性组合。
序言特别强调了两件事:
- $c$、$d$ 可以是负数。这时 $ca_1$、$da_2$ 掉转方向——原书说它们「从右往左走」。例如 $-a_1=(-2,-3,-1)$ 恰好指向 $a_1$ 的正对面。
- 同样非常重要:$c$、$d$ 可以是分数(进而是任何小数)。例如 $-a_1+\tfrac12a_2=(-2,-3,-1)+(0.5,\,2,\,1)=(-1.5,\,-1,\,0)$。
序言的第二张图画了更多的组合:$c$ 取 $-1,0,1,2$,$d$ 取 $-1,-\tfrac12,0,\tfrac12,1$,形成一张由平行四边形拼成的网格 p. vi。Strang 说:我们最终想要的是所有的向量 $ca_1+da_2$。
把 $a_1$、$a_2$ 想成两把刻度尺。$c$ 告诉你沿 $a_1$ 方向走几格,$d$ 告诉你再沿 $a_2$ 方向走几格。格数可以是负的(倒着走)、半格、三分之一格……于是 $(c,d)$ 就像这个平面上的一对「坐标」,只不过两根坐标轴是斜的、刻度也不一样长。平行四边形网格就是这套斜坐标的「坐标纸」。
拖动紫色的目标点 P,读出它是哪个组合 $ca_1+da_2$。切换「系数的精细程度」:从整数,到 ½、¼、⅛ 的倍数,最后是任意实数。
整数系数只给出网格的交点;½ 的倍数添上了中间的点(原书图就画到这一步);再细下去点越来越密,最后连成一片——平面上每一个位置都对应一对 $(c,d)$。原书这张图是「斜着看」平面画出来的,所以格子是平行四边形,而不是正方形。
关键:所有组合填满一个平面 The combinations fill a whole plane
当 $c$、$d$ 取遍所有实数时,组合 $ca_1+da_2$ 填满一个完整的平面——三维空间中一个无限大的平面。用越来越多的分数和小数作 $c$、$d$,就填满了整个平面:平面上的每一点都是 $a_1$ 和 $a_2$ 的组合。
为什么恰好是一个平面——核心思路
跑不出平面:从原点出发,你只有两个可走的方向——沿 $a_1$、沿 $a_2$。无论走多远、正着走还是倒着走,都离不开这两个方向铺成的那张「纸」。
也不会缩成一条线:$a_2$ 不是 $a_1$ 的倍数(逐个分量相除:$1/2,\ 4/3,\ 2/1$ 并不相等),两个方向真的不同,所以组合不会挤在同一条直线上。
一定过原点:取 $c=d=0$ 就得到零向量。
「两个方向真的不同」正是线性无关的雏形;「平面是二维的」要到正文第 3 章讲维数(3.4 节)时才严格化。
$(5,10,4)$:要找 $c,d$ 使 $ca_1+da_2=(5,10,4)$,也就是同时满足 $2c+d=5$、$3c+4d=10$、$c+2d=4$。由第 1、3 个方程得 $c=2,\ d=1$,代入第 2 个:$6+4=10$ ✓。所以 $(5,10,4)=2a_1+a_2$,正是原书第一张图最远的那个点。
$(1,1,1)$:由第 1、3 个方程(右边换成 1、1)得 $c=d=\tfrac13$,但第 2 个方程给出 $3\cdot\tfrac13+4\cdot\tfrac13=\tfrac73\ne1$ ✗。三个方程无法同时满足,所以 $(1,1,1)$ 不在这个平面上。
注意这里的结构:3 个方程、2 个未知数。判断一个点在不在平面上,就是在问方程组有没有解——这正是正文第 2 章「解线性方程组 $Ax=b$」的问题。
- 「三维向量的组合就能到达三维空间的每一点。」✗ 两个向量的组合最多铺满一个平面;要填满三维空间需要三个方向真正不同的向量(见 P2)。
- 「这个平面就是 $a_1$、$a_2$ 围成的平行四边形。」✗ 那只是 $0\le c,d\le1$ 的一小块。$c$、$d$ 可以是任何数,平面无限延伸。
- 「组合出来的平面可以在空间里任何位置。」✗ 它必定经过原点:取 $c=d=0$ 就得到零向量。
当 c、d 取遍所有实数时,a₁ = (2, 3, 1) 与 a₂ = (1, 4, 2) 的组合 ca₁ + da₂ 构成什么?
- 两种基本运算:数乘(伸缩、掉头)与相加(首尾相接);合起来就是线性组合 $ca_1+da_2$。
- 系数可以是负数、分数、任意实数;$(c,d)$ 就像平面上的一对斜坐标。
- 两个方向不同的三维向量,其全部组合 = 一个过原点的无限平面。判断一个点在不在平面上 = 解一个方程组。
P2 矩阵与列空间 Preface p. vi–vii: a matrix and its column space
把几个列向量并排放在一起,就得到线性代数里最核心的对象——矩阵(matrix)。这一节回答:一个矩阵的各列能组合出哪些向量?这个集合有个自然的名字:列空间。然后我们照 Strang 的做法再加两列,看列空间怎样从一个平面「长」成整个三维空间。
3×2 矩阵:m 行、n 列 A 3 by 2 matrix
矩阵 $A$ 装着 $n$ 个列向量 $a_1,a_2,\dots,a_n$。目前我们的矩阵只有两列 $a_1$ 和 $a_2$,它们都是三维空间里的向量,所以这个矩阵有 3 行 2 列 p. vi:
「$m$ by $n$ matrix」($m\times n$ 矩阵)总是先说行数、再说列数。每一列有 $m$ 个分量,是 $m$ 维空间里的向量;一共 $n$ 列。所以这个 3×2 矩阵的两列都住在三维空间 $\mathbb R^3$ 里——虽然只有 2 列,它们可不在二维平面 $\mathbb R^2$ 里。
列空间 = 所有列的组合 The column space of A
这两列的组合在三维空间里产生了一个平面(P1)。这个平面有个自然的名字——它就是这个矩阵的列空间。
对任何矩阵 $A$,$A$ 的列空间包含 $A$ 的各列的所有线性组合。
于是 P1 的全部故事可以换成矩阵的语言再说一遍:「$a_1,a_2$ 的组合填满一个平面」=「3×2 矩阵 $A$ 的列空间是 $\mathbb R^3$ 中的一个平面」。
给每一列配一个系数,把系数排成一个向量 $x=(c,d)$,线性组合就可以简写成「矩阵乘向量」:
$$Ax=\begin{bmatrix}2 & 1\\ 3 & 4\\ 1 & 2\end{bmatrix}\begin{bmatrix}c\\ d\end{bmatrix}=c\begin{bmatrix}2\\ 3\\ 1\end{bmatrix}+d\begin{bmatrix}1\\ 4\\ 2\end{bmatrix}.$$这样一来,列空间就是所有 $Ax$ 组成的集合;「向量 $b$ 在不在列空间里」就等于「方程 $Ax=b$ 有没有解」。矩阵乘向量有两种算法,正文 1.3 节展开,P3 会先看一眼。
到这里,序言已经引入了四个想法,Strang 说「你会在第 1 章看到它们全部」p. vi:
再加两列:列空间变成整个三维空间 Now we include 2 more columns in A
现在给 $A$ 再加两列。这 4 个列向量仍然都在三维空间里 p. vii:
「线性代数的目标是理解每一个列空间。」Strang 拿这一个试试,一列一列地看:
- 第 1、2 列产生和以前一样的平面(同样的 $a_1$、$a_2$)。
- 第 3 列没有贡献任何新东西,因为 $a_3=(3,7,3)$ 就在那个平面上:$a_3=a_1+a_2$。
- 第 4 列不在平面上:加上 $c_4a_4$ 会把平面整体抬高或压低。
- 所以这个矩阵 $A$ 的列空间是整个三维空间:所有的点!
用按钮逐列加入 $a_1,a_2,a_3,a_4$;拖动 $c_4$ 滑块,看平面被 $c_4a_4$ 整体抬高或压低(琥珀色平面)。也可以换一个第 4 列(比如一个本来就在平面上的向量),看列空间还会不会变大。拖动空白处旋转。
$a_3$ 的箭头恰好躺在平面里(它是 $a_1+a_2$,平行四边形的对角线),所以加入 $a_3$ 后列空间不变。$a_4=(0,0,-1)$ 伸出平面:$c_4$ 取不同的值,平面就被平移到不同的「高度」,这些平面一层层叠起来充满整个空间。若把第 4 列换成平面上的向量,无论 $c_4$ 取多少,平移后的平面都与原平面重合——列空间仍然只是那个平面。
这就是 Strang 说的「一次看一列,从左到右」:每一列要么与前面的列独立(independent)——带来一个新方向;要么是前面各列的组合(combination)——什么新东西也不带来。要产生三维空间中的每一个点,需要三个独立的列 p. vii。
| 逐列加入 | 这一列与前面的列 | 列空间 | 独立列个数 |
|---|---|---|---|
| $a_1=(2,3,1)$ | 第一列,不是零向量 → 独立 | 一条直线 | 1 |
| $a_2=(1,4,2)$ | 不是 $a_1$ 的倍数 → 独立 | 一个平面 | 2 |
| $a_3=(3,7,3)$ | $=a_1+a_2$,在平面上 → 组合 | 还是那个平面 | 2 |
| $a_4=(0,0,-1)$ | 不在平面上 → 独立 | 整个 $\mathbb R^3$ | 3 |
- 「4 列就能张成 4 维空间。」✗ 这 4 列都是三维向量,它们的组合永远待在 $\mathbb R^3$ 里;而且 $\mathbb R^3$ 里最多只能有 3 个独立的列(P4 会用「独立列数 = 独立行数」解释:这个矩阵只有 3 行)。
- 「列越多,列空间越大。」✗ 像 $a_3$ 这样的列是已有列的组合,加进来对列空间毫无影响。决定列空间大小的是独立列的个数,而不是列的总数。
Strang 的 3×2 矩阵 A = [a₁ a₂] 的列空间是什么?
- 矩阵 = 一排列向量;$m\times n$ 表示 $m$ 行 $n$ 列,每列住在 $\mathbb R^m$ 里。
- 列空间 = 各列的全部组合 = 所有 $Ax$;$b$ 在列空间里 ⇔ $Ax=b$ 有解。
- 从左到右逐列看:独立的列让列空间多一维,组合列什么也不添。填满 $\mathbb R^3$ 需要 3 个独立列。
P3 矩阵乘法 A = CR Matrix Multiplication A = CR
「线性组合」和「独立的列」这两个词,已经把那个 3×4 矩阵 $A$ 描述得很清楚了。这一节用一次矩阵乘法 $A=CR$ 把这些信息一口气写下来:哪几列是独立的、其余各列又是怎样由它们组合出来的。Strang 说:「我们离第 1 章的一个关键想法太近了,我不得不继续讲下去。」p. vii
独立的列与相关的列 Independent columns
在 3×4 的 $A$ 中,第 3 列是一个线性组合:第 1 列 + 第 2 列;第 1、2、4 列是独立的 p. vii。「独立」有一个干净利落的判别法:
用独立的第 1、2、4 列组合出零向量的唯一办法,是把这几列全部乘以 0:若 $x_1a_1+x_2a_2+x_4a_4=\mathbf 0$,则必有 $x_1=x_2=x_4=0$。
对比一下第 1、2、3 列:它们不独立,因为有一组不全为 0 的系数让组合回到原点:
一组列不独立(相关,dependent),说明其中至少有一列是「多余的」:它能由别的列组合出来,于是某个不全为 0 的组合恰好绕回原点。独立则说明每一列都带来一个真正的新方向——除了「全部乘 0、原地不动」,没有任何办法绕一圈回到原点。
用矩阵乘法写下我们知道的一切 A equals C times R
「矩阵乘法是写下我们所知道的东西的完美方式。」从 $A$ 的 4 列中挑出独立的列 $a_1,a_2,a_4$,放进列矩阵 $C$。$R$ 的每一列告诉我们:用 $C$ 中的 $a_1,a_2,a_4$ 怎样组合,才能得到 $A$ 的一列。于是 $A$ 等于 $C$ 乘 $R$ p. vii:
$A$ 的第 3 列依赖于第 1、2 列,而 $R$ 的第 3 列 $(1,1,0)$ 恰好说明了怎样依赖:把 $C$ 中独立的第 1、2 列相加(第 3 列 $a_4$ 用 0 份),就得到 $A$ 的第 3 列 $a_3=a_1+a_2=(3,7,3)$。
把 $C$ 想成原料架:只摆真正不同的原料(独立的列)。把 $R$ 想成配方表:第 $j$ 张配方写着「做出 $A$ 的第 $j$ 列,要几份 $a_1$、几份 $a_2$、几份 $a_4$」。独立列的配方最简单——「就用我自己,1 份」,所以 $R$ 的第 1、2、4 列正好是 $(1,0,0)$、$(0,1,0)$、$(0,0,1)$,拼起来是一个单位矩阵。
下面的步骤播放器按 Strang 的「从左到右,一次一列」重演这个构造过程:
第 1 步:看第 1 列
$a_1=(2,3,1)$ 不是零向量,前面也没有别的列 → 独立,放进 $C$。它的配方是「$a_1$ 自己 1 份」,所以 $R$ 的第 1 列 $=(1)$——等 $C$ 收齐 3 列后补成 $(1,0,0)$。
第 2 步:看第 2 列
$a_2=(1,4,2)$ 不是 $a_1$ 的倍数($1/2\ne4/3$)→ 独立,放进 $C$。$R$ 的第 2 列 $=(0,1)$。现在 $C$ 的两列张成 P1 的那个平面。
第 3 步:看第 3 列
$a_3=(3,7,3)=a_1+a_2$,落在平面上 → 是前面两列的组合,不进 $C$。只在 $R$ 的第 3 列记下配方:$(1,1)$。
第 4 步:看第 4 列
$a_4=(0,0,-1)$ 在不在平面上?若 $ca_1+da_2=a_4$,前两个分量给出 $2c+d=0$、$3c+4d=0$,只能 $c=d=0$;可第 3 个分量是 $-1\ne0$ ✗。所以 $a_4$ 不在平面上 → 独立,放进 $C$。$R$ 多出一行,第 4 列 $=(0,0,1)$,前面各列在新的一行里补 0。
第 5 步:合起来 A = CR,检验一列
$C$ 有 3 列(独立列数 $r=3$),$R$ 是 3×4。检验第 3 列:$C$ 乘 $R$ 的第 3 列 $=1\cdot a_1+1\cdot a_2+0\cdot a_4=(3,7,3)$,正是 $A$ 的第 3 列 ✓。其他各列同理。
$CR$ 的第 $j$ 列 $=\ C\ \times$($R$ 的第 $j$ 列)。换句话说:用 $R$ 第 $j$ 列里的数作系数,把 $C$ 的各列组合起来。
矩阵乘法不止一种好算法 More than one good way to multiply
序言接着说:正文 1.3 节讲矩阵乘向量(两种方式),1.4 节讲矩阵乘矩阵。这是线性代数的关键运算;「有不止一种好方法来做这个乘法」这一点很重要 p. vii。以 $C$ 乘 $R$ 的第 3 列为例,先预览两种方式:
一整列一整列地看:结果是 $C$ 各列的组合——这正是列空间的视角。
一行一行地看:每个分量是一行与向量的点积(dot product),即对应分量相乘再相加(点积在正文 1.2 节)。两种方式给出同一个答案 $(3,7,3)$。
这两种视角在后面各有大用:「按列」引出列空间,「按行」引出 P4 的零空间(与每一行都垂直的向量)。
修改表格中的数字,或选一个例子;点「从头开始」后反复点「下一列 →」。独立的列(蓝)进入 $C$;组合列(琥珀色)只在 $R$ 里写下「配方」。$R$ 的分数是精确计算的。
每遇到一个独立列,$C$ 就多一列、$R$ 就多一行;遇到组合列,只在 $R$ 里多写一列配方。扫完之后,$C$ 的列数就是独立列的个数 $r$,而 $R$ 在独立列的位置上正好是单位矩阵的各列。试试「第一列是零向量」:零向量永远不独立(它是「0 份任何东西」)。
A = CR 告诉了我们什么 What the factorization shows
- 形状:$C$ 是 $m\times r$,$R$ 是 $r\times n$,其中 $r$ 是独立列的个数。原书例子是 $(3\times4)=(3\times3)(3\times4)$,$r=3$。
- 列空间:$A$ 的每一列都是 $C$ 的列的组合,所以 $A$ 的列空间就是 $C$ 的 $r$ 个独立列的全部组合。
- 配方:$R$ 在独立列的位置上是单位矩阵的各列(「用自己 1 份」),在其余位置记录依赖关系。
- $r$ 的地位:下一节 P4 会看到,四个基本子空间的维数全部由 $m$、$n$ 和这个 $r$ 决定。
怎样系统地求出 $C$ 和 $R$?答案是消元:$R$ 正好是 $A$ 的简化行阶梯形(reduced row echelon form, rref)去掉全零行之后剩下的部分。Strang 的短文《Elimination and Factorization A = CR》(本导读第 2 章)会讲透这件事,并解释 $R$ 中非单位部分(记作 $F$)的意义。在正文里,3.2 节的标题就是「用消元计算零空间:$A=CR$」。
讲到这里,Strang 停下了:序言的本意是介绍全景。接下来的两页给出组织这门学科的两种方式——四个基本子空间(P4)与五大矩阵分解(P5)——尤其是前七章,它们已经足够(甚至超出)大多数线性代数课程的容量;之后是选修章节,一直通向当今应用中最活跃的方向:深度学习(P6)p. vii。
在 A = CR 中,R 的第 j 列记录的是什么?
- 独立 = 只有全 0 系数能组合出零向量;相关 = 有「多余」的列。
- $A=CR$:$C$ 收集独立列,$R$ 的第 $j$ 列是 $A$ 第 $j$ 列的配方;$CR$ 的第 $j$ 列 = $C\times$($R$ 的第 $j$ 列)。
- 矩阵乘向量有两种看法:按列(组合各列)与按行(点积)。
P4 四个基本子空间 The Four Fundamental Subspaces
列空间只是故事的四分之一。这一节回答:每一个矩阵还自带哪三个「空间」?它们住在哪里、有多大(维数)、彼此是什么关系?答案就是 Strang 最著名的那幅图——大图(The Big Picture)。
① 取各列的所有组合 $ca_1+da_2+ea_3+fa_4$,得到 $A$ 的列空间;② 把矩阵分解成 $C$ 乘 $R$,$C$ 装着一整套独立的列。Strang 坦白地说:读到序言时,你对列空间毫无练习(对 $C$ 和 $R$ 就更少了),但好消息是——这些正是正确的出发方向。最终,每个矩阵都会引出四个基本空间。
行空间:所有行的组合 The row space
与列空间相伴的是行空间——各行的所有组合。$m\times n$ 矩阵的每一行有 $n$ 个分量,所以行空间住在 $\mathbb R^n$ 里;而列空间住在 $\mathbb R^m$ 里。
「当我们取 $n$ 列的所有组合、$m$ 行的所有组合——这些组合就填满了向量的『空间』。」例如 3×2 矩阵 $A=[a_1\ a_2]$ 的三行 $(2,1)$、$(3,4)$、$(1,2)$ 都是二维向量,前两行方向不同,所以它的行空间是整个平面 $\mathbb R^2$;而它的列空间是 $\mathbb R^3$ 中的一个平面。两个空间不在同一个地方,却都是「二维」的——这不是巧合,见下文的「惊人事实」。
零空间:与所有行垂直 The nullspace
另外两个子空间把图补完整。设行空间是三维空间里的一个平面,那么 3D 图中就有一个特殊的方向——与行空间垂直的方向。这条垂直的直线就是矩阵的零空间(nullspace) p. viii。
零空间由与每一行都垂直的向量 $x$ 组成;它们恰好是最基本的线性方程 $Ax=\mathbf 0$ 的解。
为什么「与所有行垂直」就是「Ax = 0」
用 P3 的「按行」算法:$Ax$ 的第 $i$ 个分量就是第 $i$ 行与 $x$ 的点积。所以 $Ax=\mathbf 0$ ⇔ 每一行与 $x$ 的点积都为 0 ⇔ $x$ 与每一行都垂直(点积为 0 就是垂直,正文 1.2 节)。与每一行都垂直,自然也与各行的所有组合垂直——也就是与整个行空间垂直。
取 2×3 矩阵 $\begin{bmatrix}2 & 3 & 1\\ 1 & 4 & 2\end{bmatrix}$,它的两行正是 P1 的 $a_1$ 和 $a_2$。所以它的行空间就是 P1 的那个平面,零空间则是与这个平面垂直的直线,方向为 $(2,-3,5)$:
$(2,3,1)\cdot(2,-3,5)=4-9+5=0,\qquad (1,4,2)\cdot(2,-3,5)=2-12+10=0.$
任何 $x=t\,(2,-3,5)$ 都满足 $Ax=\mathbf 0$。(直接验证点积为 0 即可;怎样系统地求出零空间,是正文 3.2 节「用消元计算零空间」的内容。)
原书封面上画的正是这种几何:任何向量 $x$ 都能拆成行空间里的 $y$ 加上零空间里的 $z$,即 $x=y+z$;因为 $Az=\mathbf 0$,所以 $Ax=Ay=b$。下面用刚才的 2×3 矩阵把封面图做成可以转动的 3D 模型。
矩阵是上例的 2×3 矩阵(两行是 $a_1,a_2$)。用滑块改变 $x$,看它被拆成行空间(琥珀色平面)里的 $y$ 与零空间(绿色直线)里的 $z$。点「侧着看」可以看到平面与直线成直角;右侧小图是 $\mathbb R^2$ 中的 $b=Ax$。拖动空白处旋转。
$z$ 总落在零空间那条直线上,所以 $Az=0$;于是 $Ax=Ay+Az=Ay$——$x$ 和它在行空间里的那一部分 $y$ 被 $A$ 送到同一个 $b$。「侧着看」时,行空间缩成一条线,与零空间那条线正好垂直;「顺着零空间看」时,零空间缩成一个点,$x$ 与 $y$ 的影子重合。
Aᵀ 的零空间:与所有列垂直 The nullspace of Aᵀ
「如果与所有行垂直的向量很重要,那么与所有列垂直的向量也同样重要。」p. viii 把 $A$ 转置(transpose)——行变成列——得到 $A^{\mathsf T}$;与 $A$ 的所有列都垂直的向量正是 $A^{\mathsf T}y=\mathbf 0$ 的解,所以这个空间叫做 $A^{\mathsf T}$ 的零空间(nullspace of Aᵀ)。它和列空间一起住在 $\mathbb R^m$ 里。
例:3×2 矩阵 $A=[a_1\ a_2]$ 的列空间是 P1 的平面,与两列都垂直的方向又是 $(2,-3,5)$。所以 $A^{\mathsf T}$ 的零空间是 $\mathbb R^3$ 中方向为 $(2,-3,5)$ 的那条直线。难怪和上一个例子答案相同——上面那个 2×3 矩阵其实就是这个 $A$ 的转置 $A^{\mathsf T}$。
大图:四个子空间和它们的维数 The Big Picture
下面是序言中的「四个基本子空间」图的互动版。Strang 的原图画的是:左边 $n$ 维空间里,行空间(维数 $r$,「各行的组合」)与零空间(维数 $n-r$,「与各行垂直」)成直角;右边 $m$ 维空间里,列空间(维数 $r$,「各列的组合」)与 $A^{\mathsf T}$ 的零空间(维数 $m-r$,「与各列垂直」)成直角。图题:一个有 $r$ 个独立列的 $m\times n$ 矩阵的四个基本子空间 p. viii。
拖动滑块设定行数 $m$、列数 $n$ 和独立列数 $r$($r$ 不能超过 $m$ 和 $n$)。左边是 $\mathbb R^n$(行空间 + 零空间),右边是 $\mathbb R^m$(列空间 + $A^{\mathsf T}$ 的零空间)。每块里的条纹数 = 维数;中间的方格是矩阵的形状,蓝色列代表独立列。
左边两块的维数加起来总是 $n$,右边两块加起来总是 $m$;行空间与列空间的维数永远相同(都是 $r$)。当 $r=n$ 时零空间缩成一个点(只有零向量,各列独立);当 $r=m$ 时 $A^{\mathsf T}$ 的零空间缩成一个点,列空间就是整个 $\mathbb R^m$。
设 $A$ 是有 $r$ 个独立列的 $m\times n$ 矩阵。
| 子空间 | 由什么组成 | 住在 | 维数 |
|---|---|---|---|
| 行空间 row space | 各行的所有组合 | $\mathbb R^n$ | $r$ |
| 零空间 nullspace of A | 与各行都垂直的向量($Ax=\mathbf 0$ 的解) | $\mathbb R^n$ | $n-r$ |
| 列空间 column space | 各列的所有组合 | $\mathbb R^m$ | $r$ |
| $A^{\mathsf T}$ 的零空间 nullspace of Aᵀ | 与各列都垂直的向量 | $\mathbb R^m$ | $m-r$ |
在 $\mathbb R^n$ 中,行空间与零空间互相垂直;在 $\mathbb R^m$ 中,列空间与 $A^{\mathsf T}$ 的零空间互相垂直。
$m=3,\ n=4,\ r=3$。列空间是整个 $\mathbb R^3$(维数 3);$A^{\mathsf T}$ 的零空间只有零向量(维数 $m-r=0$);行空间是 $\mathbb R^4$ 中的一个三维子空间(3 行都独立);零空间是 $\mathbb R^4$ 中的一条直线(维数 $n-r=1$)。这条直线从哪里来?正是那个依赖关系 $a_1+a_2-a_3=\mathbf 0$:
$x=(1,\,1,\,-1,\,0)$ 满足 $Ax=1\cdot a_1+1\cdot a_2-1\cdot a_3+0\cdot a_4=\mathbf 0$。
可以验证它与三行都垂直:$(2,1,3,0)\cdot x=2+1-3=0$,$(3,4,7,0)\cdot x=3+4-7=0$,$(1,2,3,-1)\cdot x=1+2-3+0=0$。一般地,零空间里的每个向量都是各列之间的一个依赖关系——因为 $Ax=\mathbf 0$ 就是在说 $x_1a_1+\dots+x_na_n=\mathbf 0$。
对任何矩阵,不论方阵还是长方阵:独立列的个数等于独立行的个数。这是线性代数基本定理(Fundamental Theorem of Linear Algebra)的一部分。
为什么成立——用 A = CR 一眼看出(核心思路)
把 $A=CR$ 按行看:$A$ 的第 $i$ 行 $=$($C$ 的第 $i$ 行)$\times R$,也就是 $R$ 的 $r$ 行的一个组合。所以 $A$ 的每一行都是 $R$ 的这 $r$ 行的组合,$A$ 的独立行最多 $r$ 个:独立行数 ≤ 独立列数。
把同样的论证用于 $A^{\mathsf T}$(它的列就是 $A$ 的行、它的行就是 $A$ 的列),又得到独立列数 ≤ 独立行数。两个不等式合起来就是相等。Strang 的短文(本导读第 2 章)正是把 $A=CR$ 当作「列秩 = 行秩」的证明。
应用这个事实:原书的 3×4 矩阵只有 3 行,所以最多 3 个独立行,也就最多 3 个独立列——4 列之中必然有一列是组合(P2 的误区一)。
四个子空间的图在第 3 章出现;「互相垂直的空间」在第 4 章展开;四个子空间各自特殊的「基向量」在第 7 章找到——这一步是线性代数基本定理的最后一块拼图。
- 「行空间和列空间是同一个空间。」✗ 维数相同(都是 $r$),但一个在 $\mathbb R^n$、一个在 $\mathbb R^m$。3×2 的例子:行空间是整个 $\mathbb R^2$,列空间是 $\mathbb R^3$ 中的平面。
- 「$Ax=\mathbf 0$ 只有零解时,零空间是空的。」✗ 零空间总含有零向量;此时它是只含零向量的空间,维数为 0。
- 「两个子空间垂直」是说:从一个空间任取一个向量、从另一个空间任取一个向量,它们都垂直——不只是某两个向量垂直。
零空间里的向量 x 具有什么性质?
- 四个子空间:行空间 ($r$) ⟂ 零空间 ($n-r$) 在 $\mathbb R^n$;列空间 ($r$) ⟂ $A^{\mathsf T}$ 的零空间 ($m-r$) 在 $\mathbb R^m$。
- 零空间 = $Ax=\mathbf 0$ 的解 = 与所有行垂直 = 各列之间的依赖关系。
- 独立列数 = 独立行数(由 $A=CR$ 按行看立得)。第 3、4、7 章依次展开大图、垂直与特殊的基。
P5 矩阵的五大分解 Five Factorizations of a Matrix
这一节讲的是全书的组织原则:把一个矩阵拆成几个更简单的矩阵相乘。「当矩阵有某种特殊性质时,这些分解会把它显示出来。一章接一章,它们用直接而有用的方式表达每一章的核心思想。」p. ix 你可以把五大分解当成全书的五个「路标」。
序言列出了分别出自第 1、2、4、6、7 章的五个分解 p. ix,封底又给每个因子写了一句说明:
| 章 | 分解 | 序言中的一句话(p. ix) | 封底对各因子的说明 |
|---|---|---|---|
| 1 | $A=CR$ | $R$ 把 $C$ 中的独立列组合成 $A$ 的所有列 | $C$:$A$ 的前 $r$ 个独立列;$R$:把 $C$ 的列组合成 $A$ 的每一列 |
| 2 | $A=LU$ | 下三角 $L$ 乘上三角 $U$ | $L$:下三角,对角线全是 1;$U$:上三角,对角线上没有 0 |
| 4 | $A=QR$ | 正交矩阵 $Q$ 乘上三角 $R$ | $Q$:列是互相垂直的单位向量;$R$:三角矩阵,把 $Q$ 的这些规范正交列组合成 $A$ 的列 |
| 6 | $S=Q\Lambda Q^{\mathsf T}$ | (正交 $Q$)(特征值在 $\Lambda$ 中)(正交 $Q^{\mathsf T}$) | $Q$ 的列是 $S$ 的规范正交特征向量;$\Lambda$:由 $S$ 的实特征值组成的对角矩阵;也写成 $SQ=Q\Lambda$ |
| 7 | $A=U\Sigma V^{\mathsf T}$ | (正交 $U$)(奇异值在 $\Sigma$ 中)(正交 $V^{\mathsf T}$) | $U$:规范正交的奇异向量($A$ 的输出);$\Sigma$:由 $A$ 的正奇异值组成的对角矩阵;$V$:规范正交的奇异向量($A$ 的输入);也写成 $AV=U\Sigma$ |
逐个用大白话说一遍:
- $A=CR$(第 1 章):P3 已经见过——「独立的列 × 配方」。它揭示的是列空间与秩。
- $A=LU$(第 2 章):消元法解 $Ax=b$ 的记账方式。$L$(lower)记录消元时每一步减去了几倍的哪一行,$U$(upper)是消元后得到的上三角矩阵。
- $A=QR$(第 4 章):把 $A$ 的列「扶正」成互相垂直的单位向量($Q$),$R$ 记录怎样把它们组合回原来的列。
- $S=Q\Lambda Q^{\mathsf T}$(第 6 章):字母 $S$ 代表对称矩阵(symmetric matrix),即 $S^{\mathsf T}=S$。它的特征向量(eigenvectors)可以选成互相垂直的单位向量(放进 $Q$),特征值(eigenvalues)都是实数(放进对角矩阵 $\Lambda$)。封底的等价写法 $SQ=Q\Lambda$ 按列读就是 $Sq_k=\lambda_kq_k$:$S$ 作用在特征向量上只是把它伸缩 $\lambda_k$ 倍。
- $A=U\Sigma V^{\mathsf T}$(第 7 章):奇异值分解。封底的等价写法 $AV=U\Sigma$ 按列读就是 $Av_k=\sigma_ku_k$:$A$ 把一组互相垂直的输入方向 $v_k$ 送到一组互相垂直的输出方向 $u_k$,并伸缩 $\sigma_k$ 倍。
正交矩阵:完美 Orthogonal matrices are the winners
「越往下,分解越有用。正交矩阵最终是赢家,因为它们的列是互相垂直的单位向量。那就是完美。」p. ix
各列是互相垂直的单位向量的方阵。序言给出的 2×2 例子是旋转:
$$Q=\begin{bmatrix}\cos\theta & -\sin\theta\\ \sin\theta & \cos\theta\end{bmatrix}=\text{旋转 }\theta\text{ 角(rotation by angle }\theta\text{)}$$检验:每列长度 $\sqrt{\cos^2\theta+\sin^2\theta}=1$;两列点积 $-\cos\theta\sin\theta+\sin\theta\cos\theta=0$,互相垂直 ✓。
补充:2×2 的正交矩阵除了旋转,还有「带一次翻面」的一类(反射),例如 $\begin{bmatrix}1 & 0\\ 0 & -1\end{bmatrix}$;序言举的是旋转。
旋转只转动向量,不拉长、不压扁:长度不变、夹角不变。用正交矩阵做计算,误差不会被放大——这就是序言说 SVD 中的 $U$、$V$ 让计算「既不会爆炸(blow up)也不会塌缩(blow down)」的原因。
请特别注意最后一个:SVD The Singular Value Decomposition
「请允许我提请你注意最后一个。它是奇异值分解(Singular Value Decomposition, SVD)。」p. ix 序言对它的描述可以归纳为四句:
- 它适用于每一个矩阵 $A$——方的、长方的、可逆的、奇异的都行。
- 因子 $U$ 和 $V$ 的列互相垂直、长度都是 1(正交矩阵)。
- 任何向量乘以 $U$ 或 $V$,长度都不变——计算不会爆炸,也不会塌缩。
- $\Sigma$ 是由正的「奇异值(singular values)」组成的对角矩阵。
Strang 的恳请:如果你在第 6 章学了特征值和特征向量,请再往后翻几页,读到 7.1 节的奇异值。
选一个矩阵,再选一种分解。每个因子画成一张「热力格子」:蓝色为正、红色为负、颜色越深绝对值越大、空白格是 0——三角形、对角线、正交这些结构一眼就能看出来。下方读数说明各因子的含义,并验证乘积是否等于原矩阵。
$L$、$U$、$R$ 的三角形「空白」一目了然;$\Lambda$、$\Sigma$ 只有对角线有数。对称正定的 [[2, 1], [1, 2]] 的 SVD 与 $Q\Lambda Q^{\mathsf T}$ 完全相同;旋转矩阵的 $QR$ 中 $R=I$、SVD 中 $\Sigma=I$——它本身已经「完美」。秩 1 矩阵的列不独立,$QR$ 做不下去,但 $CR$ 和 SVD 照样成立;左上角为 0 的矩阵不交换行就无法做 $LU$。
拖动「阶段」滑块(或点播放),看单位圆怎样一步步变成 $A$ 作用后的椭圆:① $V^{\mathsf T}$ 旋转(圆还是圆),② $\Sigma$ 沿坐标轴伸缩,③ $U$ 再旋转。可以选别的矩阵、拖动两个空心点 $Ae_1$、$Ae_2$(即 $A$ 的两列),或选「旋转 Q(θ)」用 θ 滑块体会正交矩阵。
第 ① 步和第 ③ 步是正交矩阵:圆转来转去仍是同一个圆,两根标记向量的长度始终是 1 或保持不变;只有第 ② 步 $\Sigma$ 改变长度,伸缩倍数就是奇异值 $\sigma_1,\sigma_2$,也就是最终椭圆的两个半轴长。选「旋转 Q(θ)」时 $\sigma_1=\sigma_2=1$:整个过程只有旋转,圆始终是单位圆。
S = QΛQᵀ 这个分解针对的是哪一类矩阵?
- 五大分解 $CR$、$LU$、$QR$、$Q\Lambda Q^{\mathsf T}$、$U\Sigma V^{\mathsf T}$ 分别出自第 1、2、4、6、7 章,越往后越有用。
- 正交矩阵(列是互相垂直的单位向量,如旋转)不改变长度,是「完美」的因子。
- SVD 对每个矩阵成立:$A$ = 旋转 · 伸缩 · 旋转,伸缩倍数就是奇异值。
P6 深度学习 Deep Learning
「要呈现线性代数的真实面貌,就必须把应用包括进来。完整是完全不可能的。」p. ix 而此刻应用数学的主导方向有一个特殊的要求:它不能完全是线性的!这一节看看这个方向——深度学习——想解决什么问题,以及它为什么偏爱「分段线性」的函数。
从数据中学习 Learning from data
这个方向的一个名字就是「深度学习」(deep learning)。它是解决一个基本科学问题的极其成功的方法:从数据中学习。很多时候数据以矩阵的形式出现,我们的目标是看进矩阵内部,找出变量之间的联系。过去我们解矩阵方程或微分方程,它们表达的是已知的输入-输出规则;而现在,这些规则本身需要我们去找 p. ix。
深度学习的成功在于构造一个函数 $F(x,v)$,它有两类输入:
- 向量 $v$ 描述训练数据(training data)的特征(features);
- 矩阵 $x$ 给这些特征分配权重(weights)。
要求:对训练数据 $v$,$F(x,v)$ 接近正确的输出;当 $v$ 换成没见过的测试数据时,$F(x,v)$ 仍然接近正确。
这里 Strang 用 $x$ 表示权重(要学出来的未知数),用 $v$ 表示数据特征。这与许多机器学习书把 $x$ 当作输入数据的习惯正好相反,读英文原书第 9、10 章时别被绕晕。
为什么不能是线性的:分段线性 F is piecewise linear
深度学习的成功部分来自学习函数 $F$ 的形式——它能容纳海量的数据。序言的结论很干脆:归根结底,线性函数 $F$ 完全不够用;最受青睐的选择是分段线性(piecewise linear)函数,它把简单与通用结合在了一起 p. ix。
线性函数的图像永远是直的(高维中是平的)。更要命的是:线性函数相加还是线性的,线性函数套线性函数(复合)也还是线性的——叠多少层都弯不起来。而数据里的关系几乎总是弯曲的。
它由若干段直线在「折点」处连接而成。每一段都是最简单的线性函数(简单);只要折点足够多,就能把一条连续曲线逼近到任意精度(通用)——一维时,把曲线上的一串点用线段连起来就行。
最简单的分段线性「积木」叫 ReLU(rectified linear unit):$\mathrm{ReLU}(t)=\max(0,t)$——左边是 0,右边是斜率为 1 的直线,只在 $t=0$ 处折一次。把几块平移、缩放后的 ReLU 加起来,就能在指定的位置折弯:
每个系数 $c_k$ 恰好是函数在折点 $b_k$ 处斜率的改变量;所有在这些折点处拐弯的折线都能这样写出来。下面的演示用这些 ReLU 积木去拟合一组弯曲的数据——这就是「学习权重」的一个最小模型。正文第 10 章「Learning from Data」的 10.1 节就叫「分段线性学习函数」,第 9 章则讲怎样计算这些权重(优化、反向传播与随机梯度下降)。
拖动「折点个数 K」:K = 0 时 $F$ 只能是一条直线;K 越大,$F$ 越能弯曲。实心点是训练数据(可以拖动),空心点是没参与训练的测试数据。权重用最小二乘自动求出。
K = 0 时 $F$ 是线性函数,怎么放都穿不过弯曲的数据——序言说的「线性完全不够用」。加上几个折点后,$F$ 贴住了训练数据,而且在空心的测试点上误差也很小:这正是「换成没见过的数据,$F$ 仍然接近正确」。紫色细线是一块块 ReLU 积木(已乘上各自的权重),把它们与直线部分加起来就是蓝色的 $F$。
为什么深度学习的学习函数 F 不选线性函数,而偏爱分段线性函数?
- 深度学习 = 从数据中学出规则;学习函数 $F(x,v)$:$v$ 是数据特征,$x$ 是权重。
- 目标不只是拟合训练数据,还要在没见过的测试数据上仍然正确。
- 线性 $F$ 完全不够用;分段线性(例如 ReLU 的组合)兼顾简单与通用。第 9、10 章展开。
P7 书中与网站上的应用 Applications in the Book and on the Website
Strang 希望这本书在线性代数课结束很久以后仍然对你有用——让这成为可能的,正是线性代数的各种应用。矩阵承载数据,另一些矩阵对这些数据进行运算。目标是通过理解矩阵的特征值与特征向量、奇异值与奇异向量,来「看进矩阵内部」p. x。每类应用都有自己的特殊矩阵,序言举了四个例子:
| 矩阵 | 序言中的描述(p. x) | 一句话理解 |
|---|---|---|
| 马尔可夫矩阵 $M$ Markov matrices | 每一列是一组加起来为 1 的概率 | 第 $j$ 列 = 从状态 $j$ 出发、下一步到各个状态的概率;反复乘 $M$ 就是一步步往前走 |
| 关联矩阵 $A$ incidence matrices | 图与网络从一组节点开始;矩阵 $A$ 说明节点之间的连接(边) | 每行一条边、每列一个节点:边的起点记 $-1$、终点记 $+1$ |
| 变换矩阵 $F$ transform matrices | 傅里叶矩阵揭示数据中的频率 | 把一串采样值变成「每个频率各有多少」 |
| 协方差矩阵 $C$ covariance matrices | 方差是随机变量的关键信息;协方差解释变量之间的依赖 | 对角线 = 各变量的方差(分散程度),非对角线 = 两两之间「一起变」的程度 |
切换选项卡,分别体验马尔可夫矩阵(反复相乘趋于稳定)、关联矩阵(图的连接,点击边可删去/加回)、傅里叶矩阵(找出隐藏的频率)和协方差矩阵(数据点云的形状)。
两个状态之间来回转移:每一步,状态 1 中有比例 $p$ 转到状态 2,状态 2 中有比例 $q$ 转回状态 1。$M$ 的每一列加起来都是 1。从「全部在状态 1」出发,反复乘 $M$。
4 个节点、最多 5 条有向边。点击图中的边可以删去或加回;右边是关联矩阵:每一行对应一条边,每一列对应一个节点。
16 个等间隔的采样值由两个余弦波叠加而成(频率 $f_1$、$f_2$)。只看上面的数据很难看出频率;乘以傅里叶矩阵后,下面的柱状图立刻显出两根尖峰。
160 个数据点,每个点有两个变量。调节相关程度与两个变量各自的分散程度,看协方差矩阵和点云的形状(椭圆标出约两倍标准差的范围,两根轴是协方差矩阵的特征向量方向)。
马尔可夫:只要 $p$、$q$ 不同时为 0、也不同时为 1,分布就趋向同一个稳定状态(它满足 $Mu=u$,是特征值为 1 的特征向量);$p=q=1$ 时会来回振荡。关联矩阵:每行恰好一个 $-1$、一个 $+1$,所以每行之和为 0,全 1 向量 $(1,1,1,1)$ 在零空间里——应用中的矩阵同样有四个子空间。傅里叶:尖峰恰好出现在 $f_1$、$f_2$ 处,高度就是两个波的振幅。协方差:$\rho>0$ 时点云向右上倾斜、协方差为正;$\rho<0$ 时向右下倾斜;$\rho=0$ 时协方差约为 0。
优化:线性代数遇见微积分 Optimization: linear algebra meets calculus
深度学习中最关键的计算是求出矩阵形式的权重,为此正文第 9 章介绍优化(optimization)的思想。Strang 说,这是线性代数与微积分相遇的地方:因为 $F(x)$ 有很多个变量,「导数 = 0」在最小值点处就变成了一个矩阵方程 p. x。
一元函数在最低点有「导数 = 0」这一个方程。有两个变量时,在最低点要求对每个变量的偏导数都为 0——两个方程同时成立;有成千上万个权重,就有成千上万个方程。这么多方程放在一起,自然要用矩阵来写、用线性代数来解(正文 9.1 节「多元函数的极小化」)。
网站上的内容 On the website
第 5 版的若干主题让出了位置,但并没有失去重要性——它们只是搬到了网上。第 6 版的网站(原书写作 math.mit.edu/linearalgebra)提供新版的样章与所有习题集的解答,并保存了第 5 版的这些章节 p. x:
迭代方法与预条件 Iterative Methods and Preconditioners
密码学中的线性代数 Linear Algebra for Cryptography
正式开课前的三个小问题 Three questions before this course gets serious
序言最后留下了「一点小小的线性代数」——在课程正式开始之前的三个问题 p. x:
- 在纸上画三条线段,长度分别为 $r$、$s$、$t$。这三个长度满足什么条件,才能把这些线段拼成一个三角形?(在这个问题里,三条线的方向可以自己选。)
- 现在三条直线的方向 $u,v,w$ 是固定的,并且互不相同。但你可以把它们伸缩成 $au,bv,cw$,其中 $a,b,c$ 是任意的数。能否总是用这三个向量 $au,bv,cw$ 拼成一个封闭的三角形?
- 线性代数不会停留在平面上!设三维空间中有四条方向各不相同的直线 $u,v,w,z$。能否总是选出数 $a,b,c,d$(不允许为零),使 $au+bv+cw+dz=\mathbf 0$?
先别急着看答案,用下面的演示自己试一试。完整的分析在本章末尾的习题 P.1–P.3 里。
问题 1:拖动三个长度滑块,看何时拼得成三角形。问题 2:拖动左边三个方向箭头的尖端,右边自动求出 $a,b,c$ 并画出封闭三角形。问题 3:选择四个三维向量的摆法,看能否让四个系数都不为 0(拖动空白处旋转)。
问题 1 的关键是「最长的一条必须短于另外两条之和」。问题 2 中允许负数(反向伸缩)时总能闭合,而且 $(a,b,c)$ 可以整体乘同一个非零数;若只许用正数,「三个方向都在上半平面」就闭合不了。问题 3 在一般位置时四个系数都不为 0;但若 $u,v,w$ 共面而 $z$ 伸出平面,$z$ 的系数 $d$ 被迫为 0——答案是「不一定」。
序言对马尔可夫矩阵 M 的描述是什么?
- 矩阵承载数据,也对数据做运算;目标是「看进矩阵内部」——特征值/特征向量、奇异值/奇异向量。
- 四类特殊矩阵:马尔可夫(列和为 1 的概率)、关联(图的连接)、傅里叶(频率)、协方差(方差与依赖)。
- 优化 = 线性代数遇见微积分:多变量时「导数 = 0」是矩阵方程。序言以三个小问题收尾,它们都关于「组合能否回到原点」。
P8 全书路线图 Contents
目录就是一张地图。这一节把序言里的每个想法「钉」到正文的章节上——以后读英文原书时,你会知道每个想法在哪里正式登场 p. iii–iv。序言说:前七章已经足够(甚至超出)大多数线性代数课程;之后是选修章节,一直通向深度学习 p. vii。
点击任一章(或附录)查看它的各节标题、页码,以及它和序言哪个想法相连。上方按钮可以高亮「五大分解」「四个子空间」等主线。
五大分解分布在第 1、2、4、6、7 章,四个子空间的故事贯穿第 3、4、7 章,而第 7 章(SVD)是两条主线的交汇点。第 8–10 章是选修,第 9、10 章把线性代数带到优化与深度学习。
| 章 | 英文标题 | 中文 | 起始页 | 与序言的联系 |
|---|---|---|---|---|
| 1 | Vectors and Matrices | 向量与矩阵 | 1 | P1–P3;$A=CR$(1.4) |
| 2 | Solving Linear Equations $Ax=b$ | 解线性方程组 | 39 | $A=LU$(2.3) |
| 3 | The Four Fundamental Subspaces | 四个基本子空间 | 75 | P4 的大图;3.2 节再现 $A=CR$ |
| 4 | Orthogonality | 正交性 | 135 | 互相垂直的空间;$A=QR$(4.4) |
| 5 | Determinants | 行列式 | 191 | 序言未专门提及 |
| 6 | Eigenvalues and Eigenvectors | 特征值与特征向量 | 209 | $S=Q\Lambda Q^{\mathsf T}$ |
| 7 | The Singular Value Decomposition (SVD) | 奇异值分解 | 286 | $A=U\Sigma V^{\mathsf T}$;四个子空间的特殊基 |
| 8 | Linear Transformations | 线性变换 | 308 | 选修章节 |
| 9 | Linear Algebra in Optimization | 优化中的线性代数 | 335 | P7:导数 = 0 → 矩阵方程 |
| 10 | Learning from Data | 从数据中学习 | 370 | P6:分段线性学习函数;协方差 |
沿四个子空间走:第 3 章画出大图 → 第 4 章讲垂直 → 第 7 章找到四个子空间的特殊基(线性代数基本定理的最后一块)。
沿五大分解走:第 1 章 $CR$ → 第 2 章 $LU$ → 第 4 章 $QR$ → 第 6 章 $Q\Lambda Q^{\mathsf T}$ → 第 7 章 $U\Sigma V^{\mathsf T}$。
附录里也能看到序言的影子:附录 2「矩阵分解」、附录 3「基本分解中的参数计数」、附录 8「马尔可夫矩阵与 Perron–Frobenius」,而附录 9「Elimination and Factorization」与本导读第 2 章所用的 Strang 短文同名。
按照序言,哪几章构成了大多数线性代数课程的内容?
本章小结
- 从两个向量到一个平面:数乘与相加合成线性组合 $ca_1+da_2$;两个方向不同的三维向量的全部组合 = 一个过原点的无限平面。
- 从平面到列空间:矩阵是一排列向量,列空间 = 所有列的组合 = 所有 $Ax$。从左到右逐列看,独立列撑大空间,组合列什么也不添。
- 从列空间到 $A=CR$:$C$ = 独立列,$R$ = 配方;$CR$ 的第 $j$ 列 = $C\times$($R$ 的第 $j$ 列)。独立列数 $r$ 是最关键的数。
- 四个子空间:行空间 ($r$) ⟂ 零空间 ($n-r$),列空间 ($r$) ⟂ $A^{\mathsf T}$ 的零空间 ($m-r$);独立列数 = 独立行数。
- 五大分解:$CR$、$LU$、$QR$、$Q\Lambda Q^{\mathsf T}$、$U\Sigma V^{\mathsf T}$(第 1、2、4、6、7 章);正交矩阵最完美,SVD 对每个矩阵成立。
- 深度学习与应用:学习函数 $F(x,v)$ 分段线性;马尔可夫、关联、傅里叶、协方差矩阵;优化让「导数 = 0」变成矩阵方程。
| 序言中的想法 | 一句话 | 原书 | 正文展开 |
|---|---|---|---|
| 线性组合 | $ca_1+da_2$ 填满过原点的平面 | p. v–vi | 1.1 |
| 列空间 | 所有列的组合;逐列判断独立还是组合 | p. vi–vii | 1.3 |
| $A=CR$ | 独立列 × 配方;按列看矩阵乘法 | p. vii | 1.4、3.2 |
| 四个子空间 | 维数 $r,\ n-r,\ r,\ m-r$;两对垂直 | p. viii | 第 3、4、7 章 |
| 五大分解 | 越往后越有用;正交矩阵最完美 | p. ix、封底 | 第 1、2、4、6、7 章 |
| 深度学习 | $F(x,v)$:$x$ 权重、$v$ 特征;分段线性 | p. ix | 第 9、10 章 |
| 应用 | 四类特殊矩阵;优化 = 线性代数 + 微积分 | p. x | 第 9、10 章,附录 8 |
一条主线串起全章:「组合能到达哪里」(列空间)与「组合何时回到原点」(独立性、零空间)是同一枚硬币的两面——序言末尾的三个问题问的也正是后者。
自测
各小节中已有 8 道题;这里再来 5 道综合题。
把原书 3×4 矩阵的第 4 列换成 (1, −1, −1) = a₁ − a₂,列空间会变成什么?
一个 5×7 矩阵有 3 个独立列,它的零空间维数是多少?
任意向量 x 乘以一个正交矩阵 Q(例如旋转)之后,长度会怎样?
五大分解 CR、LU、QR、QΛQᵀ、UΣVᵀ 依次出自正文哪几章?
(5, 10, 4) 是 a₁ = (2, 3, 1) 与 a₂ = (1, 4, 2) 的哪个组合?
习题
原书序言没有习题,只有末尾的三个思考题。P.1–P.3 就是这三个问题的完整分析,P.4–P.9 为本导读自拟,覆盖序言的其他想法。
提示
把最长的一条放平作底边,另两条分别从底边两端出发。第三个顶点必须同时落在「以左端为圆心、半径为 $t$」和「以右端为圆心、半径为 $s$」的两个圆上。参考解答
条件是三个不等式同时成立:$r\lt s+t$,$s\lt r+t$,$t\lt r+s$;等价地,最长的一条短于另外两条之和。
理由:把 $r$ 放作底边,第三个顶点要同时在半径为 $t$ 和 $s$ 的两个圆上。两圆相交当且仅当 $|s-t|\lt r\lt s+t$,这正是上面的三个不等式。若某个不等式取等号(例如 $r=s+t$),两圆相切,「三角形」被压扁成一条线段;若 $r\gt s+t$,两段短的连起来也够不着,拼不成。
向量的说法:三条边首尾相接就是 $u+v+w=\mathbf 0$,于是 $|w|=|u+v|\le|u|+|v|$——这就是三角不等式(向量的长度与夹角在正文 1.2 节)。
提示
这是 P1 的想法搬到平面上:两个方向不同的向量 $u,v$ 的组合能到达平面上的哪些点?特别地,能不能到达 $-w$?参考解答
能。因为 $u,v$ 方向不同,它们的组合 $au+bv$ 铺满整个平面(P1 的结论在二维中的版本),特别地可以等于 $-w$:存在 $a,b$ 使 $au+bv=-w$,于是 $au+bv+1\cdot w=\mathbf 0$。
而且 $a\ne0$:否则 $bv=-w$,$v$ 与 $w$ 平行,与题设矛盾;同理 $b\ne0$。所以三条边都真实存在,首尾相接构成封闭三角形。整组 $(a,b,c)$ 还可以同乘任意非零数 $k$——得到的是一族相似的三角形。
要点:平面上任意三个向量一定线性相关。允许负数也很关键——负号表示沿反方向伸缩;如果只许用正数,三个方向都在同一个半平面里(例如都指向上方)时就无法闭合。
提示
先回答一个弱一点的问题:能不能找到不全为零的 $a,b,c,d$?(三维空间里最多有几个独立的向量?)再想一想:如果 $u,v,w$ 恰好在同一个平面上,而 $z$ 不在,会发生什么?参考解答
不一定。三维空间里最多只有 3 个独立向量,所以四个向量一定线性相关:总能找到不全为零的 $a,b,c,d$ 使组合为零。但题目要求四个数都不为零,这就不一定了。
反例:$u=(1,0,0)$、$v=(0,1,0)$、$w=(1,1,0)$ 都在 $xy$ 平面上,$z=(0,0,1)$ 伸出平面。$au+bv+cw+dz$ 的第三个分量就是 $d$,要让组合为零只能 $d=0$。一般地:如果某个向量不在另外三个向量的组合所铺成的空间里,它的系数就被迫为 0。
反过来,若四个向量处于「一般位置」——任意三个都不共面(线性无关),那么满足条件的 $(a,b,c,d)$ 在相差一个倍数的意义下唯一,而且四个数都不为 0(若某个为 0,剩下三个就会线性相关)。例如 $u=(1,0,0)$、$v=(0,1,0)$、$w=(0,0,1)$、$z=(1,1,1)$:$u+v+w-z=\mathbf 0$。四个向量都在同一平面上(两两不平行)时,也能选出四个都不为 0 的系数。
提示
解 $2c+d=b_1$、$3c+4d=b_2$、$c+2d=b_3$:用两个方程求出 $c,d$,再代入第三个检验。也可以用 P4 的方向 $(2,-3,5)$:列空间里的向量与它的点积为 0。参考解答
$b=(0,5,3)$:由第 1、3 个方程 $2c+d=0$、$c+2d=3$ 得 $c=-1,\ d=2$;第 2 个方程 $3(-1)+4(2)=5$ ✓。所以 $b=-a_1+2a_2$,在列空间里。
$b'=(0,5,4)$:由 $2c+d=0$、$c+2d=4$ 得 $c=-\tfrac43,\ d=\tfrac83$;第 2 个方程给出 $-4+\tfrac{32}{3}=\tfrac{20}{3}\ne5$ ✗,不在列空间里。
快速检验:$(0,5,3)\cdot(2,-3,5)=0-15+15=0$ ✓;$(0,5,4)\cdot(2,-3,5)=0-15+20=5\ne0$ ✗。
提示
从左到右逐列看:第 2 列和第 1 列是什么关系?第 3 列是第 1 列的倍数吗?参考解答
$a_1=(1,3,2)$ 独立;$a_2=(2,6,4)=2a_1$ 是组合;$a_3=(1,4,3)$ 不是 $a_1$ 的倍数($1/1\ne4/3$),独立。所以
$$A=\begin{bmatrix}1 & 1\\ 3 & 4\\ 2 & 3\end{bmatrix}\begin{bmatrix}1 & 2 & 0\\ 0 & 0 & 1\end{bmatrix}=CR,\qquad r=2.$$依赖关系 $2a_1-a_2=\mathbf 0$ 给出零空间中的向量 $x=(2,-1,0)$:$Ax=2a_1-a_2=\mathbf 0$ ✓。维数:行空间 2、零空间 $3-2=1$、列空间 2、$A^{\mathsf T}$ 的零空间 $3-2=1$。
提示
(a) 行空间与零空间在 $\mathbb R^n$,列空间与 $A^{\mathsf T}$ 的零空间在 $\mathbb R^m$。(b) 用序言的「惊人事实」。参考解答
(a) $m=5,\ n=7,\ r=3$:行空间在 $\mathbb R^7$、维数 3;零空间在 $\mathbb R^7$、维数 $7-3=4$;列空间在 $\mathbb R^5$、维数 3;$A^{\mathsf T}$ 的零空间在 $\mathbb R^5$、维数 $5-3=2$。检验:$3+4=7$,$3+2=5$。
(b) 不可能。独立列的个数等于独立行的个数,而 3×5 矩阵只有 3 行,最多 3 个独立行,所以最多 3 个独立列。换个说法:5 个三维向量中最多 3 个独立。
提示
(c) 单位圆被旋转之后还是单位圆,椭圆的两个半轴都是……参考解答
(a) 两列 $(0,1)$、$(-1,0)$ 长度都是 1,点积 $0\cdot(-1)+1\cdot0=0$ ✓。
(b) $Q(3,4)=3\,(0,1)+4\,(-1,0)=(-4,3)$,长度 $\sqrt{16+9}=5=|(3,4)|$:长度不变,只是逆时针转了 90°。
(c) 旋转把单位圆变成它自己,两个半轴长都是 1,所以 $\sigma_1=\sigma_2=1$,$\Sigma=I$(可取 $U=Q$、$V=I$)。
提示
$c\,\mathrm{ReLU}(t-b)$ 让函数在 $t=b$ 处的斜率增加 $c$。先看各段斜率:(b) 的斜率依次是 $0,\ 1,\ -1,\ 0$。参考解答
(a) $|t|=\mathrm{ReLU}(t)+\mathrm{ReLU}(-t)$;也可写成 $|t|=-t+2\,\mathrm{ReLU}(t)$(左边斜率 $-1$,在 0 处斜率增加 2)。
(b) 斜率在 $-1$ 处增加 1、在 0 处减少 2、在 1 处增加 1:$h(t)=\mathrm{ReLU}(t+1)-2\,\mathrm{ReLU}(t)+\mathrm{ReLU}(t-1)$。检验:$t\ge1$ 时 $(t+1)-2t+(t-1)=0$ ✓;$0\le t\le1$ 时 $(t+1)-2t=1-t$ ✓。
提示
(c) $Mu=u$ 的第一个分量给出 $0.9u_1+0.2u_2=u_1$,即 $0.1u_1=0.2u_2$;再加上 $u_1+u_2=1$。参考解答
(a) $0.9+0.1=1$,$0.2+0.8=1$ ✓。
(b) $u_1=(0.9,\ 0.1)$,$u_2=(0.9\cdot0.9+0.2\cdot0.1,\ 0.1\cdot0.9+0.8\cdot0.1)=(0.83,\ 0.17)$。
(c) $0.1u_1=0.2u_2$ 且 $u_1+u_2=1$,得 $u=(\tfrac23,\ \tfrac13)$。检验:$M(\tfrac23,\tfrac13)=(0.6+0.0\overline{6},\ 0.0\overline{6}+0.2\overline{6})=(\tfrac23,\tfrac13)$ ✓。这是特征值为 1 的特征向量。
消元与分解 A = CR Elimination and Factorization A = CR
消元把矩阵化成简化行阶梯形 rref(A):左边是一块单位矩阵 $I$,右边还剩一块 $F$。这块 $F$ 是什么意思?Strang 在这篇 4 页短文里给出答案——$F$ 就是「依赖列的配方」。从它出发,一路得到 $A=CR$、零空间的一组基、分块消元公式 $F=W^{-1}H$,以及「列秩 = 行秩」。
- 看懂消元的产物 $Z=\mathrm{rref}(A)=\begin{bmatrix}I & F\\ 0 & 0\end{bmatrix}P$ 中每一块的含义,并能写出 $A=CR=C\begin{bmatrix}I & F\end{bmatrix}P$。
- 明白为什么 $C$ 与 $R$ 和「用什么算法」无关:$C$ 是 $A$ 的前 $r$ 个独立列,$F$ 记录其余各列怎样由它们组合出来。
- 会用三种行变换算出 rref,并能逐列判断:新的一列是加入 $I$(独立)还是加入 $F$(依赖)——只看它的下半部分 $\ell$ 是不是全为 0。
- 由 $F$ 直接写出零空间的基 $X=P^{\mathsf T}\begin{bmatrix}-F\\ I\end{bmatrix}$,并把 $AX=0$ 读成「每个依赖列 = 独立列的组合」。
- 用分块消元理解 $F=W^{-1}H$;理解并会证明「$r$ 个独立行与 $r$ 个独立列交叉出的 $W$ 一定可逆」。
- 知道 $A=CR$ 为什么能证明「列秩 = 行秩」,以及只想解方程时,停在三角形 $U$ 的 Gauss 消元比 Gauss–Jordan 更省。
- 消元用三种可逆的行变换,把 $A$ 化成 $Z=\mathrm{rref}(A)$:$r$ 个主元列拼成单位矩阵 $I$,其余列拼成 $F$,最下面 $m-r$ 行全是 0。
- $F$ 是依赖列的配方:$A$ 的每个依赖列 = 前面独立列的组合,系数就写在 $F$ 里。原文例子:第 3 列 = 3×第 1 列 + 4×第 2 列。
- 于是 $A=CR=\begin{bmatrix}C & CF\end{bmatrix}P$:$C$ = $A$ 的前 $r$ 个独立列,$R$ = rref 的非零行,置换 $P$ 只负责把列放回原位。
- 逐列消元时只问一件事:新列在主元行下方的部分 $\ell$ 全是 0 吗?是 → 依赖,上半部分 $u$ 并入 $F$;否 → 选主元,这一列并入 $I$。
- 零空间的 $n-r$ 个基向量直接由 $F$ 给出:$X=P^{\mathsf T}\begin{bmatrix}-F\\ I\end{bmatrix}$,$AX=-CF+CF=0$。
- 整块地看消元:若左上角 $r\times r$ 的块 $W$ 可逆,$\begin{bmatrix}W & H\\ J & K\end{bmatrix}\to\begin{bmatrix}I & W^{-1}H\\ 0 & 0\end{bmatrix}$,所以 $F=W^{-1}H$。
- 任取 $r$ 个独立行和 $r$ 个独立列,它们交叉处的 $r\times r$ 子矩阵 $W$ 一定可逆。
- $A=CR$ 顺带证明了「列秩 = 行秩」;如果只想解 $Ax=b$,停在上三角 $U$ 再回代,比 Gauss–Jordan 消到 rref 更快。
原文是 Strang 的一篇 4 页短文:先是摘要,正文分 1.–7. 七段。本章的 §1–§7 与原文段号一一对应,灰色小标签如 §4、(5) 是原文的段号与公式编号,方便对照英文原文(正文附录 9 与它同名)。第 1 章 P3 已经用「原料架与配方表」的比喻见过 $A=CR$;这一章回答两个更深的问题:怎样用消元系统地求出 $C$ 和 $R$,以及 $R$ 里那块 $F$ 到底意味着什么。
全章反复使用原文的两个例子,先认识一下:
例 1 是 3×4、秩 2,独立列恰好排在最前面($P=I$);例 2 是 2×4、秩 2,第 2 列是第 1 列的 2 倍,所以独立列是第 1、3 列,需要一个置换 $P$ 把列放回原位。
| 段 | 这一段问什么 | 一句话答案 |
|---|---|---|
| §1 | 消元的结果 $Z$ 与 $A$ 是什么关系? | $Z$ 保住了行空间、零空间与列之间的关系;$A=CR$。 |
| §2 | 不看算法,$C$ 和 $R$ 由什么决定? | 前 $r$ 个独立列 + 依赖列的配方 $F$:$A=C\begin{bmatrix}I & F\end{bmatrix}P$。 |
| §3 | 怎样算出 $C$ 和 $F$? | 三种可逆行变换,化成 $\begin{bmatrix}I & F\\ 0 & 0\end{bmatrix}P$。 |
| §4 | 一列一列地做,新列去哪里? | $\ell=0$ 进 $F$,否则选主元进 $I$。 |
| §5 | rref 换来了什么? | 零空间的基 $X=P^{\mathsf T}\begin{bmatrix}-F\\ I\end{bmatrix}$;只解方程时停在 $U$。 |
| §6 | 整块地看,消元在做什么? | 求 $W^{-1}$:$F=W^{-1}H$,下方各行变成 0。 |
| §7 | 独立行与独立列的交叉一定可逆吗? | 一定。 |
§1 消元的产物:rref(A) 与 A = CR Abstract & 1. Elimination and A = CR
这一节要回答:消元到底产出了什么?消元把 $A$ 化成一个简单得多的矩阵 $Z$。Strang 在算法结束的那一刻「按下暂停键」,追问 $Z$ 与 $A$ 的关系,并把答案写成一个矩阵分解:$A=CR$。
摘要:这篇短文要回答的问题 Abstract
如果矩阵 $A$ 的秩是 $r$,那么它的行阶梯形(消元的结果)在 $A$ 的前 $r$ 个独立列的位置上含有一个单位矩阵。问题是:剩下那些列里出现的矩阵 $F$ 该怎样解释? AbstractStrang 的回答只有三句:
- $F$ 乘以 $A$ 的前 $r$ 个独立列,就得到 $A$ 其余的 $n-r$ 个依赖列;
- 于是 $F$ 揭示了原矩阵 $A$ 的行空间和零空间的基;
- $F$ 是列-行分解 $A=CR$ 的关键。
沿用第 1 章的比喻:$C$ 是「原料架」(独立的列),$R$ 是「配方表」($R$ 的第 $j$ 列写着:做出 $A$ 的第 $j$ 列要用几份哪种原料)。独立列的配方最简单——「用我自己 1 份」,这些配方拼起来就是 rref 中的单位矩阵 $I$;依赖列的配方拼起来就是 $F$。所以 rref 一点也不神秘:它就是 $A$ 的配方表,外加几行 0。
预备:消元与简化行阶梯形 Elimination and the reduced row echelon form
消元(elimination)大概是线性代数里最古老的算法:通过系统地制造 0,把 $m$ 个方程 $Ax=b$ 化简 §1。它只用三种「行变换」(§3 细讲:把一行的倍数从另一行减去、交换两行、把一行除以它的第一个非零数),一直做到矩阵不能再化简为止。最终的形态有一个专门的名字:
矩阵 $Z$ 叫作简化行阶梯形,如果:
- 全零行都在最下面;
- 每个非零行从左数的第一个非零数是 1,叫作主元(pivot);主元一行比一行靠右,像一级级台阶;
- 主元所在的列里,除主元本身外全是 0。
主元的个数就是秩 $r$。含主元的列叫主元列(pivot columns)——它们恰好是单位矩阵的各列;其余的列叫自由列(free columns)。每个矩阵的简化行阶梯形只有一个(§2 会说明为什么),记作 $Z=\mathrm{rref}(A)$。
原文的例子:第 1 行 + 第 2 行 = 第 3 行 A 3 by 4 example of rank 2
Strang 的例子是一个 3×4 矩阵,它的第 1 行加第 2 行恰好等于第 3 行:$(1,2,11,17)+(3,7,37,57)=(4,9,48,74)$。所以第 3 行没有带来任何新信息,消元必然把它消成全 0,秩 $r=2$ §1:
马上验证 $F$ 的「配方」含义:$F$ 的第 1 列是 $(3,4)$,第 2 列是 $(5,6)$,而
在 $Z$ 里一眼就能读出的关系($Z$ 的第 3 列 $=3\times$第 1 列 $+\,4\times$第 2 列),在 $A$ 里同样成立,只不过藏在一堆大数字后面。消元的作用,就是把这些关系「晒」出来。
Z 与 A 是什么关系?How is Z related to A?
Strang 在这里暂停算法,提出本文的第一个问题:$Z$ 与 $A$ 有什么关系?一种回答来自与 $A$ 相关的基本子空间 §1:
| 原文的三个答案 | 在例 1 中 | 为什么成立(直觉) |
|---|---|---|
| 1) $Z$ 的非零行(记作 $R$)是 $A$ 的行空间的一组基 | $(1,0,3,5)$ 与 $(0,1,4,6)$ | 行变换只是把行互相组合,而且每一步都能撤销,所以「所有行的组合」既不变大也不变小;两行各有一个主元,显然独立。 |
| 2) $A$ 的前两列(记作 $C$)是 $A$ 的列空间的一组基 | $(1,3,4)$ 与 $(2,7,9)$ | 行变换不改变列与列之间的线性关系:$Z$ 的前两列独立、后两列是它们的组合,$A$ 也是如此,而且系数相同。 |
| 3) $Z$ 的零空间等于 $A$ 的零空间 | $Zx=0$ 与 $Ax=0$ 的解完全相同 | 零空间由「与每一行都垂直」的向量组成;行空间没变,与它垂直的向量也就没变。 |
为什么 R 的行、C 的列恰好是「基」(既张成,又独立)
$R$ 的行是行空间的基。张成:$Z=MA$,所以 $Z$ 的每一行都是 $A$ 的行的组合;反过来 $A=M^{-1}Z$,$A$ 的每一行也是 $Z$ 的行的组合,而 $Z$ 的零行不贡献任何东西——所以 $A$ 的行空间就是 $R$ 的 $r$ 行张成的空间。独立:$R$ 的主元列是单位矩阵,在这些位置上,任何不全为 0 的行组合都不会全是 0。
$C$ 的列是列空间的基。张成:每个依赖列都是 $C$ 的列的组合(系数在 $F$ 里),所以 $A$ 的所有列都在 $C$ 的列张成的空间里。独立:$Z$ 中对应的主元列是单位向量,彼此独立;行变换不改变列之间的关系,所以 $A$ 中这些列也独立。
这正是我们做消元的初衷:「化简矩阵 $A$,而不丢失它包含的信息。」对方程右边的 $b$ 做同样的步骤,就得到 $Zx=d$——解 $x$ 完全相同,矩阵却简单得多 §1。
取 $b=(3,10,13)$。把 $b$ 作为第 5 列跟着一起消元(同样的四步行变换),$b$ 变成 $d=(1,1,0)$,方程组 $Ax=b$ 变成
令自由变量 $x_3=x_4=0$,立刻读出一个解 $x=(1,1,0,0)$;它确实满足 $Ax=b$:第 1 列 + 第 2 列 $=(3,10,13)$。再加上 §5 的零空间向量,就得到全部的解。反过来,若 $b=(1,0,0)$,消元后第 3 个方程变成 $0=-1$——无解,因为这个 $b$ 不满足「第 3 个分量 = 前两个之和」,不在列空间里。$Zx=d$ 与 $Ax=b$ 的解完全相同,这正是「不丢失信息」的意思。
不!行变换会改变列空间。例 1 中 $Z$ 的每一列第 3 个分量都是 0,所以 $Z$ 的列空间是「第 3 分量为 0」的那个平面;而 $A$ 的第 1 列 $(1,3,4)$ 第 3 分量不是 0,$A$ 的列空间是另一个平面。行变换保住的是列与列之间的依赖关系(哪几列独立、依赖列用什么系数组合),而不是列本身。所以 $C$ 必须从 $A$ 里取列,绝不能拿 $Z$ 的列。
消元把 A 分解成 C 乘 R Elimination factors A into C times R
这篇短文的目标,是换一种方式表达消元的结果。Strang 说:这个分解不可能是新的,但值得重新强调 §1。
秩为 $r$ 的 $m\times n$ 矩阵可以写成 $A=CR$,形状是 $(m\times r)$ 乘 $(r\times n)$:
- $C$ = $A$ 的前 $r$ 个独立列。$C$ 有满列秩(full column rank) $r$:它的 $r$ 列互相独立。
- $R$ = $\mathrm{rref}(A)$ 的 $r$ 个非零行。$R$ 有满行秩(full row rank) $r$:它的 $r$ 行互相独立。
乘积 $CR$ 既可以按列读,也可以按行读——两种读法恰好分别解释了上表的答案 2) 和答案 1)。下面的演示让你逐列、逐行地点一点:
点击 $A$ 的任意一列(或一行),看它怎样由 $C$ 和 $R$ 拼出来。按列读:$A$ 的第 $j$ 列 = $C$ 的各列按 $R$ 第 $j$ 列的数组合。按行读:$A$ 的第 $i$ 行 = $R$ 的各行按 $C$ 第 $i$ 行的数组合。也可以用「‹ ›」按钮依次切换。
按列读时,$A$ 的每一列都是 $C$ 的 $r$ 列的组合——所以 $C$ 的列是列空间的基;按行读时,$A$ 的每一行都是 $R$ 的 $r$ 行的组合——所以 $R$ 的行是行空间的基。同一个 $r$ 同时数出了独立列与独立行,这就是下面的「列秩 = 行秩」。例 1 中按行读第 3 行:系数 $(4,9)$ 正是 $C$ 的第 3 行。
试一试:把例 1 的 74 改成 75(第 3 行第 4 列),A = CR 会怎样变?
第 4 列变成 $(17,57,75)$,而 $5a_1+6a_2=(17,57,74)$,差了一点——第 4 列不再是前两列的组合,成了独立列,秩升到 3。于是 $C$ 有三列(第 1、2、4 列),$R=\begin{bmatrix}1 & 0 & 3 & 0\\ 0 & 1 & 4 & 0\\ 0 & 0 & 0 & 1\end{bmatrix}$,$F$ 只剩一列 $(3,4,0)$(第 3 列的配方没变,第 4 列不参与)。「第 3 行 = 第 1 行 + 第 2 行」也不再成立,没有零行了。可以在 §3 的演示里改这个数验证。
任何矩阵的独立列个数都等于独立行个数。Strang 称之为线性代数的「第一个伟大定理」:一旦确立 $A=CR$ 对每个矩阵都成立(§2、§3 完成这件事),这个分解就顺带给出了它的证明。
证明思路
核心想法:$A=CR$ 同时说明「列只有 $r$ 个方向」和「行最多 $r$ 个方向」。
- 设 $A$ 的独立列个数(列秩)为 $r$,取 $C$ 为前 $r$ 个独立列,则 $A=CR$,而 $R$ 只有 $r$ 行。
- 按行读:$A$ 的第 $i$ 行 $=$($C$ 的第 $i$ 行)$\times R$,即 $R$ 的 $r$ 行的组合。所以 $A$ 的所有行都落在 $R$ 的 $r$ 行张成的空间里:行秩 $\le r=$ 列秩。
- 对 $A^{\mathsf T}$ 做同样的论证($A^{\mathsf T}$ 的列就是 $A$ 的行),得到列秩 $\le$ 行秩。
- 两个不等式合起来:列秩 = 行秩。
对 A 做行变换得到 Z = rref(A)。下面哪一项「可能」被改变?
在例 1 的 A = CR 中按行读:A 的第 3 行 (4, 9, 48, 74) 等于什么?
- 消元的终点是 $Z=\mathrm{rref}(A)$:主元列拼成 $I$,其余列拼成 $F$,多余的行变成 0。
- $Z$ 保住了行空间、零空间和列之间的依赖关系,但没有保住列空间——所以 $C$ 要从 $A$ 里取。
- $A=CR$:$C$ 是前 $r$ 个独立列(满列秩),$R$ 是 rref 的非零行(满行秩)。按列读得列空间的基,按行读得行空间的基,合起来证明列秩 = 行秩。
§2 与算法无关的描述:A = C [I F] P 2. C and R independent of the algorithm
§1 里的 $C$ 和 $R$ 是「消元算出来的」。这一节换个角度:先不管用什么算法,$C$ 和 $R$ 本来就由 $A$ 唯一确定 §2。行变换只是找到它们的一种手段(§3)。弄清这一点,rref 里每一块的意义就一目了然。
前 r 个独立列 The first r independent columns
从左到右扫描 $A$ 的列:如果这一列不是它前面各列的组合,就把它留下(独立列);否则跳过(依赖列)。最后留下的 $r$ 列,就是「前 $r$ 个独立列」,它们组成 $C$。这个定义只看 $A$ 本身,与任何算法无关。注意两个小情形:第 1 列只要不是零向量就一定被留下;零向量列永远被跳过(它是「0 份前面的列」)。
设 $A$ 的前 $r$ 个独立列组成 $C$。那么其余 $n-r$ 列一定是这些独立列的组合 $CF$。这个关键矩阵 $F$ 是行因子 $R=\begin{bmatrix}I & F\end{bmatrix}P$ 的一部分,$R$ 有 $r$ 个独立的行。于是立刻得到 $A=CR$:
为什么 F 一定存在,而且唯一
存在:扫描时被跳过的每一列,都是它前面各列的组合;而前面的依赖列又是更前面独立列的组合……一层层代进去,每个依赖列最终都只用到它前面的独立列。把这些系数排成一列,就是 $F$ 的一列。
唯一:$C$ 的列互相独立,所以把一个向量写成 $C$ 的列的组合,系数只有一种:若 $Cf=Cg$,则 $C(f-g)=0$,独立性迫使 $f-g=0$。所以 $F$ 由 $A$ 唯一确定。
R 的 r 行独立:$R$ 的主元列拼起来是单位矩阵 $I$,任何非零的行组合在这些位置上都不会全为 0。
把 (1) 读成一句话:$A$ 的列 = 独立列 + 依赖列,依赖列 = 独立列 × 配方,最后按原来的顺序排好。各块的形状如下:
| 矩阵 | 形状 | 含义 |
|---|---|---|
| $C$ | $m\times r$ | $A$ 的前 $r$ 个独立列(原料架) |
| $F$ | $r\times(n-r)$ | 依赖列的配方:$A$ 的依赖列 $=CF$ |
| $\begin{bmatrix}I & F\end{bmatrix}$ | $r\times n$ | 所有列的配方,独立列排在前面 |
| $P$ | $n\times n$ | 置换矩阵:把排好队的列放回 $A$ 中的原位 |
| $R=\begin{bmatrix}I & F\end{bmatrix}P$ | $r\times n$ | 按原顺序排列的配方表 = rref 的非零行 |
置换矩阵 P 做了什么 The permutation matrix P
写成 $\begin{bmatrix}C & CF\end{bmatrix}$ 时,独立列被排到了最前面。如果 $A$ 的 $r$ 个独立列本来就在最前面,置换矩阵就是 $P=I$;否则需要 $P$ 把 $C$ 和 $CF$ 的 $n$ 列放回它们在 $A$ 中的正确位置 §2。
把单位矩阵的各列重新排序得到的矩阵:每行、每列恰好有一个 1,其余是 0。右乘 $P$ 重排一个矩阵的列,左乘则重排行。置换总能撤销,而且撤销它的正是转置:$PP^{\mathsf T}=I$。
原文例 (2):P 交换第 2、3 列 An example in which P exchanges columns 2 and 3
例 2 从左到右扫描:第 1 列 $(1,1)$ 留下;第 2 列 $(2,2)=2\times$第 1 列,跳过;第 3 列 $(3,4)$ 不是 $(1,1)$ 的倍数,留下;第 4 列 $(4,5)=(1,1)+(3,4)$,跳过。所以独立列是第 1、3 列,$F$ 的两列分别是第 2 列和第 4 列的配方 $(2,0)$ 与 $(1,1)$ (2):
这里 $\begin{bmatrix}I & F\end{bmatrix}=\begin{bmatrix}1 & 0 & 2 & 1\\ 0 & 1 & 0 & 1\end{bmatrix}$ 是「排好队」的配方表,右乘
就把它的第 2、3 列互换,得到 $R=\begin{bmatrix}1 & 2 & 0 & 1\\ 0 & 0 & 1 & 1\end{bmatrix}$——正好是 $\mathrm{rref}(A)$。验证一列:$C$ 乘 $R$ 的第 4 列 $(1,1)$,得 $(1,1)+(3,4)=(4,5)$ ✓。
看 $R$ 的第 2 行 $(0,0,1,1)$:它的第一个非零数出现在第 3 列。原因是第 2 列(依赖列)只能用它前面的独立列(第 1 列)来组合,所以它的配方 $(2,0)$ 在「第 3 列」那一项上必然是 0。一般地,依赖列的配方在它右边的独立列上全是 0——这就是 rref 呈「台阶」形的原因,也就是 §3 里那句「主元 1 的前面只能是 0」。
只有 $P=I$(独立列都在前面)时才是。一般情况下,$F$ 由 $R$ 的非主元列按原来的左右顺序组成。例 2 中 $R=\begin{bmatrix}1 & 2 & 0 & 1\\ 0 & 0 & 1 & 1\end{bmatrix}$ 的最后两列是 $\begin{bmatrix}0 & 1\\ 1 & 1\end{bmatrix}$,其中第 3 列是主元列;真正的 $F$ 是第 2、4 列:$\begin{bmatrix}2 & 1\\ 0 & 1\end{bmatrix}$。先找主元,再取其余的列。
rref 里的本质信息 The essential information in rref(A)
$Z=\mathrm{rref}(A)$ 里真正的信息只有两样 §2:
- 一张列号表:$A$ 的 $r$ 个独立列是哪几列(决定 $P$ 和 $C$);
- 矩阵 $F$($r\times(n-r)$):怎样把这些独立列组合成 $n-r$ 个依赖列 $CF$。
这两样东西都只由 $A$ 决定,而它们唯一地确定了 $Z$(§3 的式 (3))。所以不管行变换按什么顺序做,最后的 rref 都是同一个——这就是「与算法无关」的含义。
为什么两个人用不同的顺序消元,得到的 rref 一定一样
不论按什么顺序做行变换,结果 $Z$ 都满足:(i) $Z=MA$,$M$ 可逆,所以 $Z$ 的列与 $A$ 的列满足完全相同的线性关系;(ii) $Z$ 是简化行阶梯形,它的主元列是单位向量 $e_1,e_2,\dots,e_r$,按从左到右的顺序排列。
由 (i),$Z$ 的主元列必须恰好是 $A$ 的「前 $r$ 个独立列」所在的位置(独立与否在 $A$ 与 $Z$ 中一致);由 (ii),这些位置上的列被唯一确定为 $e_1,\dots,e_r$。每个依赖列在 $Z$ 中等于 $e_1,\dots,e_r$ 按它的配方组合,而配方又与 $A$ 中的相同,也就是 $F$ 的那一列。所以 $Z$ 的每一列都被 $A$ 唯一确定。§4 的演示里勾选「选最大的主元」,可以亲眼看到不同的中间过程走到同一个终点。
试一试:如果例 2 的第 1 列换成零向量,A = [0 2 3 4; 0 2 4 5],C、F、P 是什么?
从左到右:第 1 列是零向量,跳过(配方全是 0);第 2 列 $(2,2)$ 留下;第 3 列 $(3,4)$ 不是 $(2,2)$ 的倍数,留下;第 4 列 $(4,5)=\tfrac12(2,2)+(3,4)$,跳过。所以 $C=\begin{bmatrix}2 & 3\\ 2 & 4\end{bmatrix}$(第 2、3 列),$F=\begin{bmatrix}0 & \tfrac12\\ 0 & 1\end{bmatrix}$(第 1 列的配方 $(0,0)$、第 4 列的配方 $(\tfrac12,1)$),$P$ 把排好队的 $(a_2,a_3\,|\,a_1,a_4)$ 放回原位,$R=\begin{bmatrix}0 & 1 & 0 & \tfrac12\\ 0 & 0 & 1 & 1\end{bmatrix}$。注意 $F$ 里出现了分数,而且 rref 的第一列全是 0。
每张卡片是 $A$ 的一列,卡片下方是它的「配方」($R$ 的对应列)。点「下一步」分五步走完式 (1):分类 → 排队 → 提出 $C$ → 用 $P$ 放回原位;也可以点「播放」。换个例子,或点「随机拼一个」:用随机的 $C$、$F$、$P$ 造出 $A$,再看消元能否把它们原样找回来。
排队时,配方一起移动:独立列的配方是单位向量,排在前面拼成 $I$;依赖列的配方排在后面拼成 $F$。所以 $\begin{bmatrix}C & CF\end{bmatrix}=C\begin{bmatrix}I & F\end{bmatrix}$ 只是「提出公因子 $C$」。$P$ 不改变任何数,只改变列的位置。「随机拼一个」时,消元找回的 $C$、$F$、$P$ 与拼装用的完全相同——这正是「$C$ 与 $R$ 由 $A$ 唯一确定」。
例 2 中,置换矩阵 P 的作用是什么?
如果 m×n 矩阵 A 的 n 列全都独立(r = n),A = C[I F]P 变成什么?
- $C$ = 从左到右扫描时留下的独立列;$F$ = 依赖列的配方。两者都只由 $A$ 决定,与算法无关。
- $A=\begin{bmatrix}C & CF\end{bmatrix}P=C\begin{bmatrix}I & F\end{bmatrix}P=CR$:$P$ 只负责把列放回原位,独立列在最前面时 $P=I$。
- 依赖列的配方在它右边的独立列上全是 0,所以 $R$ 是台阶形;rref 由「独立列号 + $F$」唯一确定。
§3 用行变换求出 C 与 F 3. Row operations and rref(A)
§2 确认了分解 $A=CR$ 一定存在。可是怎样算出前 $r$ 个独立列(进入 $C$)、以及其余 $n-r$ 列的依赖关系 $CF$?Strang 说:这正是对 $A$ 做行变换的时刻 §3。
三种行变换 Three row operations
为了把 $A$ 化成简化行阶梯形 $Z=\mathrm{rref}(A)$,只允许三种操作 §3:
| 原文 | 操作 | 例子 | 怎样撤销 |
|---|---|---|---|
| (a) | 从一行减去另一行的倍数(另一行在上方或下方都可以) | 例 1:第 2 行 − 3×第 1 行,$(3,7,37,57)\to(0,1,4,6)$ | 加回去:第 2 行 + 3×第 1 行 |
| (b) | 交换两行 | 第 1 列的第一个数是 0 时,换一个非零数上来当主元 | 再交换一次 |
| (c) | 一行除以它的第一个非零数 | 把主元化成 1:$(2,1,1)\div2=(1,\tfrac12,\tfrac12)$ | 再乘回去 |
Strang 打趣说:所有线性代数老师,以及「一个正的比例」的学生,都熟悉这些步骤和它们的结果 $\mathrm{rref}(A)$ §3。三种操作都可以撤销(可逆)——这一点至关重要:可逆意味着不丢信息。
不算。乘以 0 会把一行的信息抹掉,无法撤销,方程组的解也会变。(c) 只允许除以非零数(一行的第一个非零数),(a) 只允许加减另一行的倍数,(b) 只是换位置——每一步都能原样退回去。
rref 的结构:式 (3) Elimination reduces A to Z = rref(A)
做完行变换,$\mathrm{rref}(A)$ 里含有一个 $r\times r$ 的单位矩阵 $I$(每个主元 1 的前面只能是 0)。$I$ 所在的位置,揭示了 $A$ 的前 $r$ 个独立列;而式 (1) 揭示了 $F$ 的意义:它告诉我们 $A$ 的 $n-r$ 个依赖列 $CF$ 怎样由 $C$ 中的独立列组合出来。$A$ 剩下的 $m-r$ 个「依赖的行」必定变成 $Z$ 中的零行 §3:
对照式 (1) 的 $A=C\begin{bmatrix}I & F\end{bmatrix}P$:同一个 $F$、同一个 $P$。也就是说,$Z$ 的上半部分就是 $R$,下半部分是 $m-r$ 行 0。
不一定。主元只要求「一行比一行靠右」,中间可以跳过依赖列。例 2 的第 2 个主元在第 2 行第 3 列;例 1 的主元碰巧在 $(1,1)$、$(2,2)$。所以 $I$ 在 rref 中可能是「散开」的,要靠 $P$ 才能把它收拢成一个整块——这正是式 (3) 里那个 $P$ 的作用。
为什么 rref 能读出 A 的配方 Why the relations among columns survive
关键在于:行变换对每一列做的是同一件事。每一步行变换都等于左乘一个可逆矩阵,做完全部步骤,$Z=MA$,其中 $M$ 可逆。于是 $Z$ 的第 $j$ 列 $=M\times$($A$ 的第 $j$ 列)。
- 如果 $A$ 中 $a_3=3a_1+4a_2$,两边左乘 $M$ 就得到 $z_3=3z_1+4z_2$;反过来,$M$ 可逆,左乘 $M^{-1}$ 又能退回去。所以列之间的线性关系在 $A$ 与 $Z$ 中完全相同:独立列在相同的位置,依赖列的配方也相同。
- 在 $Z$ 里,主元列是单位向量 $(1,0,0)$、$(0,1,0)$……,于是任何一列的配方直接就是这一列的数:$z_3=(3,4,0)=3(1,0,0)+4(0,1,0)$。这就是为什么 $F$ 可以从 $Z$ 里「抄」出来。
为什么每一步行变换都是「左乘一个可逆矩阵」
对单位矩阵 $I$ 做某个行变换得到 $E$,那么对任意 $A$ 做同一个行变换,结果就是 $EA$。例如 3×3 时「第 2 行减去 3×第 1 行」对应
交换两行对应一个置换矩阵(它的逆是它自己),一行除以 $d$ 对应把单位矩阵那一行的 1 换成 $1/d$(逆是乘以 $d$)。所有步骤的乘积 $M=E_k\cdots E_2E_1$ 仍然可逆。
3×4 矩阵的四列都是三维向量。拖动「消元进度」,从 $A$ 一步步走到 $Z=\mathrm{rref}(A)$:每一步行变换都同时移动所有的列,前两列张成的平面(列空间)也跟着转动;但琥珀色的依赖列始终落在「$3\times$第 1 列 $+\,4\times$第 2 列」这个平行四边形的对角上。拖动「旋转」换个角度看;图会自动缩放。
自拟矩阵 $A=\begin{bmatrix}1 & 1 & 7 & 11\\ 2 & -1 & 2 & 4\\ 3 & 0 & 9 & 15\end{bmatrix}$ 与例 1 有相同的 $F$(第 3 列 $=3a_1+4a_2$,第 4 列 $=5a_1+6a_2$),也有「第 3 行 = 第 1 行 + 第 2 行」,只是各列方向更分散,看得更清楚;例 1 的前两列夹角只有约 2°。一开始,$A$ 的列都落在平面 $z=x+y$ 上(因为第 3 行 = 第 1 行 + 第 2 行,每一列的第 3 个分量都等于前两个之和);消元结束时,$Z$ 的列都落在平面 $z=0$ 上——列空间变了。可是在每一个中间时刻,依赖列都恰好是 $3\times$第 1 列 $+\,4\times$第 2 列:配方 $(3,4)$ 从头到尾没有变,到了 $Z$ 里它直接写在第 3 列上。这就是 $F$ 能从 rref 里「抄」出来的原因。
对单位矩阵依次做同样的四步(第 2 行 − 3×第 1 行,第 3 行 − 4×第 1 行,第 1 行 − 2×第 2 行,第 3 行 − 第 2 行),就得到 $M$,而且 $MA=Z$:
看 $M$ 的结构:左上角 $\begin{bmatrix}7 & -2\\ -3 & 1\end{bmatrix}$ 正是 $\begin{bmatrix}1 & 2\\ 3 & 7\end{bmatrix}^{-1}$;最后一行 $(-1,-1,1)$ 说的是「第 3 行 − 第 1 行 − 第 2 行 = 0」。§6 会揭晓:这不是巧合,$M$ 就是分块消元矩阵 $\begin{bmatrix}W^{-1} & 0\\ -JW^{-1} & I\end{bmatrix}$。
原文强调:行变换 (a)(b)(c) 都可逆。在主元行的上方和下方都做消元,就是 Gauss–Jordan 消元(Gauss-Jordan elimination)。不过,把 $A$ 化成阶梯形的那个矩阵 $M$ 并不重要,重要的是它揭示出来的分解 $A=CR$ §3。
- 从第 1 列开始,主元行从第 1 行开始。
- 在当前列里、主元行及其下方找一个非零数;全是 0 → 这一列没有主元(依赖列),换下一列。
- 需要的话用 (b) 把它换到主元行;用 (c) 把它化成 1。
- 用 (a) 把这一列其余各行(上方和下方)全部消成 0;主元行下移一行,处理下一列。
- 结束时:主元所在的列号 → 在 $A$ 中取这些列得 $C$;非零行就是 $R$,其中非主元列拼成 $F$。
选一个例子,或直接改表格里的数(可以输入分数,如 3/4),然后点「下一步」。紫圈是当前主元,琥珀色是这一步被改写的行,绿色是刚被消成 0 的位置,虚线框是本步用到的主元行。把「消元方式」切换成 Gauss(只向下消),比较两种消元的终点与运算量。
Gauss–Jordan 的每个主元最后都变成 1,而且它所在的列上下都被消成 0;结束时主元列拼成 $I$,其余列(琥珀色)就是 $F$。在「需要交换行」的例子里,第 2 列在主元行下方全是 0——它没有主元,是依赖列,直接跳过。切换到 Gauss:只向下消元,停在上三角(阶梯形)$U$,用到的行变换更少——这就是 §5 末尾说的「只解方程时,停在 $U$ 更快」。
试一试:例 2 化成 rref 要几步?每一步是 (a)(b)(c) 中的哪一种?
只要两步,都是 (a):第 2 行 − 第 1 行,得 $\begin{bmatrix}1 & 2 & 3 & 4\\ 0 & 0 & 1 & 1\end{bmatrix}$——第 2 列在第 2 行是 0,没有主元,跳过;第 3 列的主元恰好是 1,不需要 (c);再做第 1 行 − 3×第 2 行,得 $\begin{bmatrix}1 & 2 & 0 & 1\\ 0 & 0 & 1 & 1\end{bmatrix}$。主元已经都是 1、不需要换行,所以 (b)(c) 都没用上。可以在上面的演示里选「例 2」核对。
下面哪一个「不是」允许的行变换?
某个 3×4 矩阵 A 的 rref 是 Z,其中第 1、2 列是主元列,Z 的第 4 列是 (5, 6, 0)。由此可以直接断定 A 的第 4 列等于什么?
- 三种可逆的行变换把 $A$ 化成 $Z=\mathrm{rref}(A)=\begin{bmatrix}I & F\\ 0 & 0\end{bmatrix}P$,式 (3)。
- 行变换 = 左乘可逆矩阵 $M$,对每一列做同样的事,所以列之间的关系不变;在 $Z$ 里主元列是单位向量,依赖列的配方可以直接读出。
- 主元的位置 → $C$ 取 $A$ 的哪几列;非零行 → $R$;非主元列 → $F$;$m-r$ 个依赖的行 → 零行。
§4 逐列构造 rref:新列加入 I 还是 F 4. Column-by-column construction of rref(A)
在用 $A=CR$ 解 $Ax=0$(§5)之前,Strang 先给出一种逐列——从左到右、一次一列——由 $A$ 构造 $\mathrm{rref}(A)$ 的办法 §4。它把 §2 的「从左到右扫描」与 §3 的行变换合二为一:每处理一列,只需回答一个问题。
处理完前 k 列时的样子 After elimination on k columns
对前 $k$ 列做完消元后,矩阵的这一部分已经是它自己的 rref。现在轮到第 $k+1$ 列。把这一新列分成两段:上段 $u$ 位于已经有主元的那些行,下段 $\ell$ 位于其余各行 (4):
下标 $k$ 表示「处理完前 $k$ 列」;$I_k$ 的大小等于这 $k$ 列中独立列的个数,$F_k$ 是已处理的依赖列的配方,$P_k$ 记录这些列在 $A$ 中的位置。
关键问题:加入 I 还是 F?Does column k + 1 join with I_k or F_k?
Strang 称之为「大问题」:新的第 $k+1$ 列是并入 $I_k$,还是并入 $F_k$?答案只取决于 $\ell$ §4:
新列依赖于前 $k$ 列。什么都不用做:上段 $u$ 直接并入 $F_k$,成为 $F_{k+1}$ 的新的一列,然后处理第 $k+2$ 列。
$u$ 就是这一列的配方:它说明新列 = 各主元列按 $u$ 的系数组合。
新列独立于前 $k$ 列。在 $\ell$ 中任选一个非零数(最好选最大的)作主元,把 $A$ 的这一行移到 $\ell$ 的最上面,再用这个主元行把第 $k+1$ 列的其余位置全部消成 0(这一步通常会改变 $k+1$ 之后的各列)。第 $k+1$ 列并入 $I_k$ 成为 $I_{k+1}$,调整 $P_k$,处理第 $k+2$ 列。
为什么「ℓ 全为 0」恰好等于「依赖于前面的列」
当前矩阵中,前 $k$ 列里的主元列都是单位向量,而且前 $k$ 列在 $\ell$ 所在的那些行上全是 0(式 (4) 下方的两块 0)。
- 若 $\ell=0$:新列 $=\begin{bmatrix}u\\ 0\end{bmatrix}$ 正好是各主元列按 $u$ 的系数组合。行变换不改变列之间的关系(§3),所以在 $A$ 中,第 $k+1$ 列也是那些独立列按 $u$ 的系数组合——依赖,且配方是 $u$。
- 若 $\ell\ne0$:前 $k$ 列的任何组合在 $\ell$ 那些行上都是 0,不可能等于新列——所以新列独立于前 $k$ 列。
用分数精确计算时(如本页的演示),选 $\ell$ 中任何一个非零数作主元,最后得到的 rref 都一样——rref 是唯一的(§2)。但计算机用浮点数计算时,除以一个很小的主元会放大舍入误差;选绝对值最大的数作主元,能让主元下方各行要减去的倍数都不超过 1,误差更小。这种做法叫部分主元法(partial pivoting)。
扫描结束:一张「最理想的列号表」A most desirable list of column numbers
消元结束时,我们得到一张最理想的列号表:它列出了 $A$ 的前 $r$ 个独立列。这些列就是 $C$ 的各列,它们在 $A=CR$ 的行因子 $R$ 中产生了 $r\times r$ 单位矩阵 $I_r$ §4。下面的演示把这个过程一列一列地放慢:
每点一次「下一步」处理半步:先看新列(标出上段 $u$ 与下段 $\ell$),再做决定(并入 $F$,或选主元并入 $I$)。左图是当前矩阵(列保持原顺序),右图把已处理的列按 $P_k$ 重排成式 (4) 的样子 $\begin{bmatrix}I_k & F_k\\ 0 & 0\end{bmatrix}$,后面接着新列。勾选「选最大的主元」对比:中间过程不同,结果完全一样。
在例 1 中,第 3、4 列来到时 $\ell$ 都已经是 0:它们的 $u$ 分别是 $(3,4)$ 与 $(5,6)$——正是 $F$ 的两列。注意右图始终保持式 (4) 的形状:左上是单位矩阵,下方是 0。在「选最大主元」的例子里勾选复选框:第 1 列会选 6 而不是 2 作主元,中间的分数完全不同,但最后的列号表和 $F$ 一模一样。
例 1 的逐列记录 The column-by-column record for example 1
把演示里例 1 的四步整理成一张表(「处理前」指处理这一列之前,矩阵中这一列的样子):
| 列 | 处理前的 $u$ | 处理前的 $\ell$ | 判断与动作 | 去向 |
|---|---|---|---|---|
| 1 | (空) | $(1,3,4)$ | $\ell\ne0$:主元 1 在第 1 行;第 2 行 − 3×第 1 行,第 3 行 − 4×第 1 行 | $I_1$ |
| 2 | $(2)$ | $(1,1)$ | $\ell\ne0$:主元 1 在第 2 行;第 1 行 − 2×第 2 行,第 3 行 − 第 2 行 | $I_2$ |
| 3 | $(3,4)$ | $(0)$ | $\ell=0$:依赖,不做任何行变换 | $F$ 的第 1 列 $(3,4)$ |
| 4 | $(5,6)$ | $(0)$ | $\ell=0$:依赖,不做任何行变换 | $F$ 的第 2 列 $(5,6)$ |
注意第 3、4 列的 $u$:它们在处理第 1、2 列时被「顺带」算好了(Strang 说主元那一步「预计会改变后面的各列」),轮到它们时只需看一眼 $\ell$。这也说明了为什么逐列构造与 §3 一次性做完的 Gauss–Jordan 得到同一个结果——它们是同一串行变换,只是记账方式不同。
试一试:对例 2 逐列走一遍,写出每一列的 u、ℓ 和去向
第 1 列:$u$ 为空,$\ell=(1,1)\ne0$ → 主元在第 1 行,第 2 行 − 第 1 行 → 并入 $I$。第 2 列:此时是 $(2,0)$,$u=(2)$,$\ell=(0)$ → 依赖,并入 $F$。第 3 列:此时是 $(3,1)$,$u=(3)$,$\ell=(1)\ne0$ → 主元在第 2 行,第 1 行 − 3×第 2 行 → 并入 $I$。第 4 列:此时是 $(1,1)$,两行都已有主元,$\ell$ 为空 → 依赖,$u=(1,1)$ 并入 $F$。注意第 2 列的配方在最终的 $F$ 里是 $(2,0)$:当时的 $\ell=(0)$ 恰好落在后来的主元行上,补上的就是这个 0。
逐列消元处理第 k+1 列时,发现它的下段 ℓ 全为 0。接下来应该怎么做?
3×6 矩阵逐列消元时,处理完前 4 列后已经有 3 个主元(每一行都有主元了)。第 5、6 列会怎样?
- 逐列消元时,前 $k$ 列已是 $\begin{bmatrix}I_k & F_k\\ 0 & 0\end{bmatrix}P_k$;新列分成主元行上的 $u$ 与其余行上的 $\ell$。
- $\ell=0$ → 依赖,$u$ 并入 $F$;$\ell\ne0$ → 独立,选主元(最好最大)、换行、消元,并入 $I$。
- 最后得到「前 $r$ 个独立列」的列号表:它们就是 $C$,在 $R$ 中产生 $I_r$。
§5 F 给出零空间的基 5. The nullspace from F
把 $A$ 化成 $\mathrm{rref}(A)$ 究竟换来了什么?Strang 的回答是:行空间没有变!于是它的正交补——$A$ 的零空间——也没有变。$CF$ 的每一列说明 $A$ 的一个依赖列怎样由 $C$ 中的独立列组合出来;换个角度看,$F$ 的各列其实告诉了我们 $Ax=0$ 的 $n-r$ 个解 §5。这一节把这句话讲透。
原文的例子:2 个方程,4 个未知数 Solving Ax = 0 for the 3 by 4 example
例 1 的 $Ax=0$ 化简后只剩两个方程(第 3 个方程是前两个之和,自动成立,原文也只写了前两个)§5:
主元列对应的 $x_1,x_2$ 叫主元变量,其余的 $x_3,x_4$ 叫自由变量:自由变量可以随便取,主元变量随之确定——$x_1=-3x_3-5x_4$,$x_2=-4x_3-6x_4$。
- 取 $x_3=1,\ x_4=0$:$x=(-3,-4,1,0)$。注意 3 和 4 来自 $F$($F$ 的第 1 列,带负号)。
- 取 $x_3=0,\ x_4=1$:$x=(-5,-6,0,1)$。5 和 6 是 $F$ 的第 2 列。
这两个解就是 $AX=0$ 中矩阵 $X$ 的两列(这个例子 $P=I$)§5:
$X$ 的 $n-r$ 列是 $A$ 的零空间的一组自然的基:
为什么 AX = 0,而且 X 的列是一组基
$AX=0$:置换满足 $PP^{\mathsf T}=I$,所以 $AX=C\begin{bmatrix}I & F\end{bmatrix}PP^{\mathsf T}\begin{bmatrix}-F\\ I\end{bmatrix}=C\begin{bmatrix}I & F\end{bmatrix}\begin{bmatrix}-F\\ I\end{bmatrix}=C(-F+F)=0$。
独立:在自由变量的位置上,$X$ 的各列恰好是单位矩阵 $I_{n-r}$ 的各列,所以它们的组合只有系数全为 0 时才是零向量。
张成整个零空间:任取 $Ax=0$ 的解 $x$,按它在自由位置上的取值组合 $X$ 的列得到 $y$。则 $x-y$ 仍是解,且自由变量全为 0;而 $\begin{bmatrix}I & F\end{bmatrix}$ 的方程说明此时主元变量也全为 0。所以 $x=y$。
$x=(-3,-4,1,0)$ 在零空间里,说的就是 $-3a_1-4a_2+1\cdot a_3=0$,即 第 3 列 = 3(第 1 列)+ 4(第 2 列)。把依赖列放在一边、把它的配方放在另一边,移项就得到一个零空间向量。所以这 $n-r$ 个解「告诉我们的正是已知的事」:$A$ 的每个依赖列都是 $C$ 中独立列的组合 §5。几何上,零空间向量就是一组让 $A$ 的各列首尾相接后恰好回到原点的系数——下面的演示把这件事画出来。
试一试:例 1 中取 x₃ = 2、x₄ = −1,零空间里对应的 x 是什么?
$x=2\,(-3,-4,1,0)+(-1)(-5,-6,0,1)=(-1,-2,2,-1)$。验证第 1 个方程:$-1-4+22-17=0$ ✓;第 2 个:$-3-14+74-57=0$ ✓;第 3 个是前两个之和,自然也是 0。主元变量 $x_1,x_2$ 不用解方程,直接由 $-F$ 乘自由变量得到:$x_1=-(3\cdot2+5\cdot(-1))=-1$,$x_2=-(4\cdot2+6\cdot(-1))=-2$。
F 同时给出行空间的基:RX = 0 Row space and nullspace from the same F
摘要说 $F$ 揭示了行空间和零空间的基。行空间的基就是 $R=\begin{bmatrix}I & F\end{bmatrix}P$ 的 $r$ 行(§1);零空间的基是 $X=P^{\mathsf T}\begin{bmatrix}-F\\ I\end{bmatrix}$ 的 $n-r$ 列。两者用的是同一个 $F$,而且
$RX=0$ 的每一个元素都是「$R$ 的一行」与「$X$ 的一列」的点积,所以行空间的每个基向量都与零空间的每个基向量垂直——这正是 §1 中「零空间与行空间正交」的具体样子。例 1 中:$(1,0,3,5)\cdot(-3,-4,1,0)=-3+3=0$,$(0,1,4,6)\cdot(-3,-4,1,0)=-4+4=0$,$(1,0,3,5)\cdot(-5,-6,0,1)=-5+5=0$,$(0,1,4,6)\cdot(-5,-6,0,1)=-6+6=0$。维数也对得上:$r+(n-r)=n$,两个空间合起来正好填满 $\mathbb R^n$(第 1 章 P4 的「大图」)。
不是。$F$ 的列只有 $r$ 个分量,而零空间的向量有 $n$ 个分量。基向量是把 $-F$ 的一列(带负号)放在主元变量的位置、把单位向量放在自由变量的位置拼起来的:例 1 中 $F$ 的第 1 列是 $(3,4)$,对应的基向量是 $(-3,-4,1,0)$。忘了负号,$Ax$ 就变成 $2\times$(第 3 列)而不是 0。
有置换时:例 2 When P is not I
例 2 的独立列是第 1、3 列,$F=\begin{bmatrix}2 & 1\\ 0 & 1\end{bmatrix}$。先按「独立列在前」的顺序 $(x_1,x_3,x_2,x_4)$ 写出 $\begin{bmatrix}-F\\ I\end{bmatrix}$,再用 $P^{\mathsf T}$ 把行放回 $(x_1,x_2,x_3,x_4)$ 的顺序(交换第 2、3 行):
检验:$-2(1,1)+1\cdot(2,2)=(0,0)$,即第 2 列 = 2×第 1 列;$-(1,1)-(3,4)+(4,5)=(0,0)$,即第 4 列 = 第 1 列 + 第 3 列 ✓。$P^{\mathsf T}$ 的作用只是把「先排独立列」的变量顺序还原。
图中把 $x_1a_1,\ x_2a_2,\ \dots$ 首尾相接画出来,终点就是 $Ax$。拖动滑块改变两个自由变量,主元变量由 $F$ 自动算出:$x=s\cdot(\text{X 的第 1 列})+t\cdot(\text{X 的第 2 列})$。再拖动「扰动」滑块,给第一个主元变量加一点,看看折线还能不能闭合。三维的例子可以拖动「旋转」滑块换个角度看。
(自拟例子 $A=\begin{bmatrix}2 & 0 & 2 & -1\\ 0 & 1 & 3 & 2\end{bmatrix}$ 的第 3、4 列是 $a_3=a_1+3a_2$、$a_4=-\tfrac12a_1+2a_2$;原文两个例子的各列几乎同向,折线会很「扁」。)只要 $x$ 由 $X$ 的列组合而来(扰动 δ = 0),无论 $s,t$ 取什么,折线都回到原点:$Ax=0$。零空间是一个 $n-r=2$ 维的「系数空间」,自由变量就是它的两个坐标。一旦扰动主元变量,终点就偏离原点(红色箭头),偏离量恰好是 δ 乘以那个独立列——独立列无法被别的列「抵消」。
一个 4×7 矩阵的秩是 3。按 (5) 写出的零空间基矩阵 X 是什么形状?
已知 x = (−5, −6, 0, 1) 满足 Ax = 0。它直接说明了 A 的哪个事实?
只想解方程?停在 U 更快 Gauss versus Gauss-Jordan
原文第 5 段最后提醒了效率问题:通向 $A=CR$ 的 Gauss–Jordan 消元,不如直接解 $Ax=b$ 的 Gauss 消元高效。Gauss 消元停在三角形方程组 $Ux=c$,再用回代(back substitution)求出 $x$;Gauss–Jordan 多出了「向上消元」的代价。如果只想解方程,停在三角分解更快 §5。
多出来的工作有多少?与其背公式,不如亲手数一数:
对一个一般的 $n\times n$ 矩阵(没有 0,不需要换行)做消元,统计每个位置被「乘-减」改写(或在 Gauss–Jordan 中被除以主元)的次数:颜色越深,改写越多。拖动滑块改变 $n$,看两种消元的总次数和它们的比值。
Gauss 中第 $i$ 行第 $j$ 列的数被改写 $\min(i,j)-1$ 次——越靠右下越多,主元上方的数很早就「定型」了。Gauss–Jordan 中第 $j$ 列的每个数都被改写 $j-1$ 次,主元上方也不例外:多出来的正是右上三角那片「向上消元」的工作。总次数分别是 $\tfrac{(n-1)n(2n-1)}{6}\approx\tfrac{n^3}{3}$ 与 $\tfrac{n^2(n-1)}{2}\approx\tfrac{n^3}{2}$,比值随 $n$ 增大趋近 $\tfrac32$——这就是数值线性代数里「Gauss–Jordan 多花约一半」的来历。
求解方程组:用 Gauss($A=LU$,正文 2.3 节「Matrix Computations and $A=LU$」)。看清矩阵的结构——独立列、依赖关系 $F$、零空间的基、$A=CR$——用 Gauss–Jordan(正文 3.2 节「Computing the Nullspace by Elimination: $A=CR$」)。Strang 这篇短文关心的是后者。
- 行变换不改变行空间,所以零空间也不变:$Ax=0$ 与 $\begin{bmatrix}I & F\end{bmatrix}Px=0$ 同解。
- 零空间的基 $X=P^{\mathsf T}\begin{bmatrix}-F\\ I_{n-r}\end{bmatrix}$,$AX=-CF+CF=0$,式 (5);每一列就是「一个依赖列减去它的配方」。
- 只解 $Ax=b$ 时,Gauss 停在 $U$ 再回代更快;Gauss–Jordan 多出向上消元的代价(大 $n$ 时约 $n^3/2$ 对 $n^3/3$)。
§6 分块消元:F = W⁻¹H 6. Block elimination
行变换一次只造出一个 0。站高一点、整块整块地看:rref 里那个 $r\times r$ 的单位矩阵 $I$ 告诉我们——某个 $r\times r$ 矩阵已经被求逆了。顺着这条线索走下去,就得到对消元的一种「矩阵式的理解」§6。
W 可逆时:消元的全部指令都来自 W Elimination takes all its instructions from W
设 $A$ 的前 $r$ 行与前 $r$ 列交叉处的矩阵 $W$ 可逆。那么消元的全部指令都来自 $W$!不论是一次消一个元素,还是用「分块消元」一次完成,$W$ 都会变成 $I$。也就是说,$A$ 的前 $r$ 行会变成 $I$ 和 $F$——这就确定了 $F=W^{-1}H$;而后 $m-r$ 行会变成零行 §6:
为什么后 $m-r$ 行一定变成 0?Strang 说这「只是在表达线性代数的事实」:如果 $A$ 的前 $r$ 行独立、而秩是 $r$,那么其余 $m-r$ 行都是这前 $r$ 行的组合 §6:
这里 $JW^{-1}$ 就是「行的配方」:它的每一行说明 $A$ 的一个下方行由上方 $r$ 行怎样组合。消元时,正是减去这些组合,这 $m-r$ 行才变成零行。
例 1 中 $r=2$,左上角 $W=\begin{bmatrix}1 & 2\\ 3 & 7\end{bmatrix}$,$\det W=7-6=1$,可逆,$W^{-1}=\begin{bmatrix}7 & -2\\ -3 & 1\end{bmatrix}$。于是
$F$ 与 §1 中 rref 的 $F$ 完全一致;而 $JW^{-1}=(1,1)$ 说的正是「第 3 行 = 第 1 行 + 第 2 行」。再验证 $K=JW^{-1}H=(1,1)\begin{bmatrix}11 & 17\\ 37 & 57\end{bmatrix}=(48,74)$ ✓。
分块消元就是左乘一个分块矩阵
把「第一块行左乘 $W^{-1}$」和「第二块行减去 $J$ 乘(新的第一块行)」合起来,就是左乘
右下角 $K-JW^{-1}H$ 一定是 0:下方各行是上方 $r$ 行的组合 $y\begin{bmatrix}W & H\end{bmatrix}$,比较前 $r$ 个分量得 $J=yW$,即 $y=JW^{-1}$,于是 $K=yH=JW^{-1}H$。(这一块叫作 $W$ 在 $A$ 中的 Schur 补(Schur complement);$A$ 的秩恰为 $r$ 时它必为 0。)
试一试:例 1 中改用第 1、3 行作为「上方的 r 行」,W、W⁻¹H、JW⁻¹ 是什么?
$W=\begin{bmatrix}1 & 2\\ 4 & 9\end{bmatrix}$,$\det W=1$,$W^{-1}=\begin{bmatrix}9 & -2\\ -4 & 1\end{bmatrix}$。$H=\begin{bmatrix}11 & 17\\ 48 & 74\end{bmatrix}$,$W^{-1}H=\begin{bmatrix}99-96 & 153-148\\ -44+48 & -68+74\end{bmatrix}=\begin{bmatrix}3 & 5\\ 4 & 6\end{bmatrix}$——还是同一个 $F$。下方只剩第 2 行:$J=(3,7)$,$JW^{-1}=(27-28,\,-6+7)=(-1,1)$,说的是「第 2 行 = −第 1 行 + 第 3 行」,确实如此。$W$ 和 $JW^{-1}$(行的关系)变了,$F$(列的关系)没变。
一般情形:用置换把 W 挪到左上角 Row and column permutations P_r and P_c
一般来说,左上角那个 $r\times r$ 块不一定可逆。但消元会找到 $W$:用行置换 $P_r$ 和列置换 $P_c$ 把它挪到左上角,于是分块消元到简化行阶梯形的完整表达式是 (7)
消元找到的 $W$,就是「主元最终所在的行」与「主元列」的交叉。以例 2 为例:主元列是第 1、3 列,$P_c$ 交换第 2、3 列,$W=\begin{bmatrix}1 & 3\\ 1 & 4\end{bmatrix}$,$W^{-1}=\begin{bmatrix}4 & -3\\ -1 & 1\end{bmatrix}$,$H=\begin{bmatrix}2 & 4\\ 2 & 5\end{bmatrix}$,于是 $W^{-1}H=\begin{bmatrix}2 & 1\\ 0 & 1\end{bmatrix}=F$ ✓(这里 $m=r$,没有 $J$、$K$)。
一行一行地消元,就像一步一步地解 $Wx=$(某一列)。当 $W$ 变成 $I$ 时,同样的步骤作用在 $H$ 上,得到的正是 $W^{-1}H$。所以 rref 里的 $F$ 不是什么新东西:它就是「用 $W$ 去解 $H$ 的每一列」的结果——每一列的解,正是那一列的配方。
四种颜色标出四块:$W$(蓝)、$H$(琥珀)、$J$(绿)、$K$(紫)。点「下一步」:先找到 $W$,再用 $P_r$、$P_c$ 把它挪到左上角,然后第一块行左乘 $W^{-1}$、第二块行减去 $J\times$(新的第一块行)。还可以在「上方的 r 行」里换一组行试试:只要这几行独立,$W^{-1}H$ 都等于同一个 $F$。
只用两步「块运算」就到达 rref:$W\to I$ 的同时 $H\to W^{-1}H=F$;$J\to 0$ 的同时 $K\to K-JW^{-1}H=0$。换一组上方的行(只要它们独立):$W$、$W^{-1}$、$JW^{-1}$ 都变了,但 $W^{-1}H$ 始终等于同一个 $F$——因为 $F$ 是「列的配方」,与用哪几行去求它无关。若选的行不独立,$W$ 不可逆,分块消元就卡住了(§7 会说明:独立的行配独立的列,交叉处一定可逆)。
为什么换一组独立的行,W⁻¹H 仍然等于 F
列固定为主元列(即 $C$ 的列)。由 $A=C\begin{bmatrix}I & F\end{bmatrix}P$,只看所选的 $r$ 行(记这几行组成的 $C$ 的子矩阵为 $C_S$):这几行在主元列上的数是 $W=C_S$,在其余列上的数是 $H=C_SF$。只要这几行独立,$C_S$ 就可逆(§7),于是
$F$ 记录的是「列与列的关系」,用哪几行去求都一样;而 $W$、$W^{-1}$、$JW^{-1}$(行与行的关系)都会随所选的行改变。顺便一提,§3 例子中的消元矩阵 $M=\begin{bmatrix}7 & -2 & 0\\ -3 & 1 & 0\\ -1 & -1 & 1\end{bmatrix}$ 正是这里的 $\begin{bmatrix}W^{-1} & 0\\ -JW^{-1} & I\end{bmatrix}$($W^{-1}=\begin{bmatrix}7 & -2\\ -3 & 1\end{bmatrix}$,$JW^{-1}=(1,1)$)。
在分块消元 [W H; J K] → [I F; 0 0] 中,JW⁻¹ 的含义是什么?
例 1 的四步消元可以合成一个矩阵 M(MA = rref(A))。M 的左上角 2×2 块是什么?
- rref 中的 $I$ 意味着某个 $r\times r$ 子矩阵 $W$ 被求逆了;$F=W^{-1}H$,式 (6)。
- 下方各行是上方 $r$ 行的组合:$\begin{bmatrix}J & K\end{bmatrix}=JW^{-1}\begin{bmatrix}W & H\end{bmatrix}$,所以变成零行。
- 一般情形先用 $P_r$、$P_c$ 把可逆的 $W$ 挪到左上角:$P_rAP_c\to\begin{bmatrix}I & W^{-1}H\\ 0 & 0\end{bmatrix}$,式 (7)。
§7 交叉子矩阵 W 必可逆 7. The r by r intersection W is invertible
§6 引出了一个有趣的问题 §7。$A$ 的秩是 $r$,所以它有 $r$ 个独立的行,也有 $r$ 个独立的列。把这些行组成子矩阵 $B$($r\times n$),这些列组成子矩阵 $C$($m\times r$)。它们的 $r\times r$「交叉」$W$——既在所选行、又在所选列上的那些数——一定可逆吗?
大家都同意:$A$ 的某个地方一定藏着一个 $r\times r$ 的可逆子矩阵。问题是,$B$ 与 $C$ 的交叉 $B\cap C$ 能不能保证就是这样一个子矩阵?$W$ 会不会自动满秩?
「大家都同意」的那一半很容易看出:先任取 $r$ 个独立行组成 $B$;由列秩 = 行秩,$B$ 的列秩也是 $r$,所以 $B$ 中能挑出 $r$ 个独立的列,它们组成的 $r\times r$ 方阵可逆。可这样挑出的列是为 $B$ 量身定做的。§7 要问的是更强的结论:先独立地挑好 $r$ 个独立列(比如消元给出的主元列),再随便配上任意 $r$ 个独立行——交叉还可逆吗?
答案是肯定的。设 $A$ 的秩为 $r$。$A$ 的 $r$ 个独立行与 $r$ 个独立列的交叉,确实是一个秩为 $r$ 的矩阵 $W$。$W$ 可逆。
证明:只有四句话 Proof
Strang 的证明只有四句。下面的步骤播放器一句一句地配图解释,右下方用 4×5 例子的具体数字跟着走一遍(行取第 1、3 行,列取第 3、5 列):
第 1 句:A 的每一列都是 C 的 r 列的组合
$C$ 的 $r$ 列独立,而 $A$ 的列空间只有 $r$ 维,所以这 $r$ 列已经张成整个列空间:$A$ 的第 $j$ 列 $=Cy_j$,系数 $y_j$ 是一个 $r$ 维向量。例:第 4 列 $(5,10,7,17)=3\times$第 3 列 $-1\times$第 5 列,即 $y_4=(3,-1)$。
第 2 句:B 的每一列,是 W 的各列的「同一个」组合
把等式「$A$ 的第 $j$ 列 $=Cy_j$」只看属于 $B$ 的那 $r$ 行:左边变成 $B$ 的第 $j$ 列,右边的 $C$ 只剩下这 $r$ 行——正是 $W$。所以 $B$ 的第 $j$ 列 $=Wy_j$,系数完全相同。例:$(5,7)=3\,(2,3)-(1,2)$ ✓。
第 3 句:B 的秩是 r,它的列空间是整个 ℝʳ
$B$ 的 $r$ 行独立,行秩为 $r$;由 §1 的「列秩 = 行秩」,$B$ 的列秩也是 $r$。$B$ 的列都是 $r$ 维向量,$r$ 个独立的 $r$ 维向量张成整个 $\mathbb R^r$。
第 4 句:W 的列空间也是 ℝʳ,方阵 W 的秩为 r
由第 2 句,$B$ 的每一列都是 $W$ 的列的组合,所以 $W$ 的列空间包含 $B$ 的列空间,也就是整个 $\mathbb R^r$。一个 $r\times r$ 的方阵,列能张成 $\mathbb R^r$,秩就是 $r$——$W$ 可逆。证毕。
两个不能省的条件 Both conditions matter
- 行和列都必须独立。4×5 例子中第 2 行 = 2×第 1 行。只要选了这两行,不管配哪两列,$W$ 的两行都成比例,一定不可逆。列也一样(第 2 列 = 2×第 1 列)。
- 个数必须恰好等于秩 $r$。只挑 $k\lt r$ 个独立行和 $k$ 个独立列,交叉处可能不可逆。反例:$A=\begin{bmatrix}1 & 0 & 1\\ 0 & 1 & 1\\ 1 & 1 & 2\end{bmatrix}$ 的秩是 2;取 $k=1$:第 1 行 $(1,0,1)$ 和第 2 列 $(0,1,1)$ 各自都「独立」(都不是零向量),交叉处却是 $a_{12}=0$。证明在第 1 句就失效了:$k\lt r$ 个列张不成 $r$ 维的列空间,$A$ 的其余各列不一定是它们的组合。
这个定理也解释了 §6:消元找到的 $W$(主元行 × 主元列)只是众多可逆交叉中的一个。任何一组独立行配任何一组独立列都行——下面的实验可以让你亲手验证。
点击行号(左侧)或列号(上方)来选择行和列;被选中的行、列与它们的交叉 $W$ 会着色,右侧显示 $W$ 和它的行列式。按钮可以随机挑选;「做 500 次实验」比较两种挑法:①行与列都独立,②随意挑 $r$ 行 $r$ 列。
只要挑的是 $r$ 个独立行和 $r$ 个独立列,$\det W$ 永远不是 0——500 次实验 500 次可逆。随意挑时,一旦碰上「第 1、2 行」或「第 1、2 列」这样的相关组,$W$ 就不可逆(4×5 例子中约四分之一的挑法如此)。切到「k < r 的反例」,只选第 1 行和第 2 列:两者各自都独立,交叉处却是 0。
试一试:在例 1 中随便挑两行、两列,交叉都可逆吗?
都可逆。例 1 中任意两行都独立(第 3 行 = 第 1 行 + 第 2 行,但没有哪两行成比例),任意两列也都独立(四列两两不成比例),所以 $3\times6=18$ 种挑法全部满足定理的条件,18 个交叉 $W$ 都可逆。例如第 1、3 行 × 第 3、4 列:$\det\begin{bmatrix}11 & 17\\ 48 & 74\end{bmatrix}=814-816=-2\ne0$。在上面的演示中选「例 1」,点「做 500 次实验」,两种挑法都会是全部可逆——和 4×5 例子形成对比。
A 是 5×6 矩阵,秩为 3。任取 A 的 3 个独立行和 3 个独立列,它们交叉处的 3×3 矩阵 W:
§7 的证明在哪一步用到了「列秩 = 行秩」?
- 秩为 $r$ 时,任取 $r$ 个独立行($B$)与 $r$ 个独立列($C$),交叉 $W$ 必可逆。
- 证明:$A$ 的列 $=C\times$ 系数 → 限制到 $B$ 的行:$B$ 的列 $=W\times$ 同样的系数 → $B$ 的列张成 $\mathbb R^r$ → $W$ 的列也张成 $\mathbb R^r$。
- 两个条件缺一不可:行列都要独立,个数要恰好等于秩。
本章小结
一条主线:消元把 $A$ 化成 $\mathrm{rref}(A)=\begin{bmatrix}I & F\\ 0 & 0\end{bmatrix}P$,而 $F$ 就是依赖列的配方。于是:
- §1 消元保住了行空间、零空间和列之间的依赖关系(但不保列空间),并给出 $A=CR$:$C$ 是前 $r$ 个独立列,$R$ 是 rref 的非零行。按列读、按行读 $A=CR$,证明了列秩 = 行秩。
- §2 不需要任何算法也能描述 $C$ 与 $R$:$A=\begin{bmatrix}C & CF\end{bmatrix}P=C\begin{bmatrix}I & F\end{bmatrix}P$,式 (1)。$P$ 只负责把列放回原位;rref 由「独立列号 + $F$」唯一确定。
- §3 三种可逆行变换 (a)(b)(c) 把 $A$ 化成式 (3);行变换 = 左乘可逆矩阵,所以 $Z$ 中一眼可读的配方在 $A$ 中同样成立。
- §4 逐列构造:新列的下段 $\ell=0$ → 依赖,上段 $u$ 并入 $F$;$\ell\ne0$ → 选主元(最好最大),并入 $I$。最后得到前 $r$ 个独立列的列号表,式 (4)。
- §5 零空间的基 $X=P^{\mathsf T}\begin{bmatrix}-F\\ I\end{bmatrix}$,$AX=-CF+CF=0$,式 (5);每个基向量就是「一个依赖列减去它的配方」。只解方程时,Gauss 停在 $U$ 更快。
- §6 分块地看:$P_rAP_c=\begin{bmatrix}W & H\\ J & K\end{bmatrix}\to\begin{bmatrix}I & W^{-1}H\\ 0 & 0\end{bmatrix}$,所以 $F=W^{-1}H$,下方各行 $=JW^{-1}\times$ 上方各行,式 (6)(7)。
- §7 任取 $r$ 个独立行和 $r$ 个独立列,交叉处的 $W$ 一定可逆;两个条件(独立、个数恰为 $r$)缺一不可。
| 对象 | 形状 | 它是什么 | 在例 1 中 |
|---|---|---|---|
| $C$ | $m\times r$ | $A$ 的前 $r$ 个独立列(列空间的基) | 第 1、2 列 |
| $R=\begin{bmatrix}I & F\end{bmatrix}P$ | $r\times n$ | rref 的非零行(行空间的基、所有列的配方) | $(1,0,3,5)$,$(0,1,4,6)$ |
| $F$ | $r\times(n-r)$ | 依赖列的配方;$F=W^{-1}H$ | $\begin{bmatrix}3 & 5\\ 4 & 6\end{bmatrix}$ |
| $P$ | $n\times n$ | 列置换:把排好队的列放回原位 | $I$ |
| $X=P^{\mathsf T}\begin{bmatrix}-F\\ I\end{bmatrix}$ | $n\times(n-r)$ | 零空间的基 | $(-3,-4,1,0)$,$(-5,-6,0,1)$ |
| $W$ | $r\times r$ | 独立行 × 独立列的交叉,可逆 | $\begin{bmatrix}1 & 2\\ 3 & 7\end{bmatrix}$ |
| 行变换之后 | 保持不变? | 理由 |
|---|---|---|
| 行空间 | ✓ | 行的组合,且可撤销 |
| 零空间($Ax=0$ 的解) | ✓ | $Zx=MAx=0\iff Ax=0$($M$ 可逆) |
| 列之间的依赖关系(哪些列独立、配方) | ✓ | 每列都左乘同一个可逆矩阵 $M$ |
| 列空间 | ✗ | 列向量本身变了(例 1 中第 3 分量全变成 0) |
| Gauss | Gauss–Jordan | |
|---|---|---|
| 在哪里造 0 | 只在主元下方 | 主元上方和下方 |
| 终点 | 阶梯形 $U$($A=LU$) | $\mathrm{rref}(A)$($A=CR$) |
| 用途 | 解 $Ax=b$:再回代 | 读出 $C$、$F$、零空间的基 |
| 大 $n\times n$ 的运算量 | 约 $n^3/3$ | 约 $n^3/2$ |
常见疑问 FAQ
rref 和上三角 U 有什么区别?
$U$ 是 Gauss 消元的终点:只在主元下方造 0,主元不必是 1($A=LU$ 的 $U$)。rref 是 Gauss–Jordan 的终点:主元上下都是 0,主元都是 1。只有 rref 能让人「一眼读出」配方 $F$;解方程时用 $U$ 再回代更省(§5)。
为什么 C 取 A 的列,而不取 rref 的列?
因为行变换会改变列向量(列空间变了),只保住了列之间的关系。rref 的主元列是单位向量 $e_1,\dots,e_r$,它们一般不在 $A$ 的列空间里;我们要的是 $A$ 的列空间的基,所以要回到 $A$ 中取出同样位置的列(§1 的误区框、§3 的三维演示)。
P 什么时候等于 I?F 可以是空的吗?
当 $A$ 的 $r$ 个独立列恰好就是前 $r$ 列时,$P=I$(例 1)。当 $r=n$(所有列都独立)时没有依赖列,$F$ 是 $r\times0$ 的空矩阵,$R=I$,$C=A$,零空间只有零向量。
零空间为什么恰好是 n − r 维?
$n$ 个未知数分成两类:$r$ 个主元变量和 $n-r$ 个自由变量。自由变量可以任意取值,取定之后主元变量就被 $\begin{bmatrix}I & F\end{bmatrix}$ 的方程唯一确定。所以零空间里的向量与「自由变量的取值」一一对应,维数是 $n-r$;$X$ 的 $n-r$ 列就是让一个自由变量为 1、其余为 0 时的解。$r+(n-r)=n$:主元列与自由列合起来正好是全部 $n$ 列。
W 一定在左上角吗?一定唯一吗?
都不一定。左上角的 $r\times r$ 块可能不可逆(例 2 中左上角是 $\begin{bmatrix}1 & 2\\ 1 & 2\end{bmatrix}$),这时用 $P_r$、$P_c$ 把一个可逆的 $W$ 挪过去(§6)。可逆的 $W$ 也不唯一:§7 说明任何 $r$ 个独立行与任何 $r$ 个独立列的交叉都可逆。但 $F=W^{-1}H$(列取主元列时)不随所选的行改变。
行变换会不会把一个「独立」的列变成「依赖」的?
不会。行变换等于左乘可逆矩阵 $M$,$Ma=0$ 当且仅当 $a=0$,所以 $c_1a_1+\dots+c_ka_k=0$ 与 $c_1Ma_1+\dots+c_kMa_k=0$ 同时成立或同时不成立:列之间的独立/依赖关系,以及依赖的系数,都原样保留。
符号速查 Notation
| 符号 | 含义 | 出处 |
|---|---|---|
| $m,\ n,\ r$ | 行数、列数、秩(独立列数 = 独立行数 = 主元个数) | §1 |
| $Z=\mathrm{rref}(A)$ | 简化行阶梯形(reduced row echelon form) | §1、(3) |
| $C,\ R$ | $A$ 的前 $r$ 个独立列;rref 的 $r$ 个非零行。$A=CR$ | §1 |
| $F$ | 依赖列的配方,$r\times(n-r)$ | §2、(1) |
| $P$ | 列置换矩阵:$R=\begin{bmatrix}I & F\end{bmatrix}P$ | §2、(1)(2) |
| (a)(b)(c) | 三种行变换:减去另一行的倍数、交换两行、除以第一个非零数 | §3 |
| $I_k,\ F_k,\ P_k$ | 处理完前 $k$ 列时的单位块、配方块、列置换 | §4、(4) |
| $u,\ \ell$ | 新列在主元行上的部分 / 其余行上的部分 | §4、(4) |
| $X$ | 零空间的基 $P^{\mathsf T}\begin{bmatrix}-F\\ I_{n-r}\end{bmatrix}$ | §5、(5) |
| $U$ | Gauss 消元的上三角终点($Ux=c$ 再回代) | §5 |
| $W,\ H,\ J,\ K$ | 分块:$W$ 可逆的 $r\times r$ 块,$H$ 同行其余列,$J,K$ 其余各行 | §6、(6) |
| $P_r,\ P_c$ | 把 $W$ 挪到左上角的行置换、列置换 | §6、(7) |
| $B,\ C$(§7) | $r$ 个独立行组成的子矩阵、$r$ 个独立列组成的子矩阵;交叉 $W=B\cap C$ | §7 |
这些想法在正文哪里展开 Where the book develops these ideas
根据第 6 版的目录,这篇短文的每个想法在正文里都有对应的小节(页码为原书页码):
| 本章 | 正文小节 |
|---|---|
| §1 $A=CR$、列秩 = 行秩 | 1.4 Matrix Multiplication $AB$ and $CR$(p. 27);3.5 Dimensions of the Four Subspaces(p. 120) |
| §1、§3 消元与行变换 | 2.1 Elimination and Back Substitution(p. 40);2.2 Elimination Matrices and Inverse Matrices(p. 49) |
| §2 置换矩阵 $P$ | 2.4 Permutations and Transposes(p. 64) |
| §3–§5 rref、零空间的基 | 3.2 Computing the Nullspace by Elimination: $A=CR$(p. 84);3.3 The Complete Solution to $Ax=b$(p. 95) |
| §4 独立列与基 | 3.4 Independence, Basis, and Dimension(p. 106) |
| §5 Gauss 与 $A=LU$ | 2.3 Matrix Computations and $A=LU$(p. 57) |
| 全文 | 附录 9 Elimination and Factorization(p. 410) |
综合例题:一个 4×5 矩阵走完全章 One matrix through all seven sections
把 §1–§7 串起来用一遍。矩阵用 §6、§7 演示里的 4×5 矩阵(秩 2;第 2 行 = 2×第 1 行,第 4 行 = 2×第 1 行 + 第 3 行):
① 行变换(§3)
第 2 行 − 2×第 1 行、第 3 行 − 第 1 行、第 4 行 − 3×第 1 行,得到 $\begin{bmatrix}1 & 2 & 2 & 5 & 1\\ 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 1 & 2 & 1\\ 0 & 0 & 1 & 2 & 1\end{bmatrix}$。第 2 列在主元行下方全是 0——没有主元。第 3 列的非零数在第 3 行,(b) 交换第 2、3 行;再用新的第 2 行消去第 1 行和第 4 行的第 3 列:
② A = CR(§1)
主元在第 1、3 列,秩 $r=2$。$C$ 取 $A$ 的第 1、3 列,$R$ 取 rref 的两个非零行:
按行读:$A$ 的第 2 行 $=2\times(R\text{ 第 1 行})+4\times(R\text{ 第 2 行})=(2,4,4,10,2)$ ✓。两个独立列、两个独立行:列秩 = 行秩 = 2。
③ F 与 P(§2)
$F=\begin{bmatrix}2 & 1 & -1\\ 0 & 2 & 1\end{bmatrix}$,三列依次是第 2、4、5 列的配方:
验证 $a_4$:$(1,2,1,3)+2(2,4,3,7)=(5,10,7,17)$ ✓。独立列在第 1、3 列,所以 $P$ 把排好队的列 $(a_1,a_3\,|\,a_2,a_4,a_5)$ 放回 $1,2,3,4,5$ 的顺序。注意 $a_2$ 的配方 $(2,0)$ 在「第 3 列」那一项上是 0——它在 $a_3$ 之前。
④ 逐列构造(§4)
| 列 | $u$ | $\ell$ | 去向 |
|---|---|---|---|
| 1 | (空) | $(1,2,1,3)$ | $\ell\ne0$ → $I$(主元行 1) |
| 2 | $(2)$ | $(0,0,0)$ | $\ell=0$ → $F$ 的列 $(2,0)$ |
| 3 | $(2)$ | $(0,1,1)$ | $\ell\ne0$ → 第 3 行换上来作主元 → $I$ |
| 4 | $(1,2)$ | $(0,0)$ | $\ell=0$ → $F$ 的列 $(1,2)$ |
| 5 | $(-1,1)$ | $(0,0)$ | $\ell=0$ → $F$ 的列 $(-1,1)$ |
列号表:1、3。
⑤ 零空间的基(§5)
$n-r=3$ 个基向量,自由变量是 $x_2,x_4,x_5$:
第 2 列 $(-1,0,-2,1,0)$ 说的是 $-a_1-2a_3+a_4=0$,即 $a_4=a_1+2a_3$;第 3 列说的是 $a_5=-a_1+a_3$。
⑥ 分块消元(§6)
消元找到的 $W$ 是第 1、3 行 × 第 1、3 列:
下方两行(第 2、4 行):$JW^{-1}=\begin{bmatrix}2 & 4\\ 3 & 7\end{bmatrix}W^{-1}=\begin{bmatrix}2 & 0\\ 2 & 1\end{bmatrix}$,即第 2 行 = 2×第 1 行,第 4 行 = 2×第 1 行 + 第 3 行 ✓。
⑦ 交叉子矩阵(§7)
任取两个独立行与两个独立列,例如第 3、4 行 × 第 4、5 列:$W=\begin{bmatrix}7 & 2\\ 17 & 4\end{bmatrix}$,$\det W=28-34=-6\ne0$ ✓。反之,第 1、2 行(第 2 行 = 2×第 1 行)配任何两列,例如第 3、4 列:$\begin{bmatrix}2 & 5\\ 4 & 10\end{bmatrix}$,$\det=0$。在全部 $6\times10=60$ 种「2 行 × 2 列」的挑法中,恰有 45 种行、列都独立,它们的交叉全部可逆,其余 15 种全都不可逆。
对照原文:十二句关键话 Key sentences of the paper
以后读英文原文时,抓住这几句就抓住了全文(左列是原文,右列是本章的说法):
| 段 | 原文 | 意思 |
|---|---|---|
| Abstract | F multiplies those first r independent columns of A to give its n−r dependent columns. | $F$ 乘前 $r$ 个独立列,得到其余 $n-r$ 个依赖列——$F$ 是依赖列的配方。 |
| §1 | Simplify the matrix A without losing the information it contains. | 化简 $A$,而不丢失它包含的信息——消元的初衷。 |
| §1 | Elimination factors A into C times R = (m × r) times (r × n). | 消元把 $A$ 分解成 $C$ 乘 $R$。 |
| §1 | Column rank equals row rank. | 列秩 = 行秩:$A=CR$ 附带的「第一个伟大定理」。 |
| §2 | Then the other n − r columns of A must be combinations CF of those independent columns in C. | 其余各列一定是独立列的组合 $CF$,与算法无关。 |
| §2 | This uniquely defines Z in equation (3). | 独立列号 + $F$ 唯一确定 rref。 |
| §3 | The position of I reveals the first r independent columns of A. | $I$ 的位置揭示了前 $r$ 个独立列。 |
| §4 | Does this new column k + 1 join with Ik or Fk? | 新列加入 $I$ 还是 $F$?看 $\ell$ 是否全为 0。 |
| §5 | The columns of F are telling us n − r solutions to Ax = 0. | $F$ 的各列给出 $Ax=0$ 的 $n-r$ 个解。 |
| §5 | If we only want to solve equations, stopping at a triangular factorization is faster. | 只解方程时,停在三角分解更快。 |
| §6 | That output I tells us that some r by r matrix has been inverted. … Elimination takes all its instructions from W! | $I$ 说明某个 $r\times r$ 矩阵被求逆了;消元的指令全部来自 $W$,于是 $F=W^{-1}H$。 |
| §7 | The intersection of r independent rows of A with r independent columns does produce a matrix W of rank r. W is invertible. | $r$ 个独立行与 $r$ 个独立列的交叉 $W$ 可逆。 |
自测
先用一个随机练习热身:它每次生成一个新矩阵,你自己找独立列、读出 $F$,演示会逐列告诉你对错和原因。然后是 4 道综合选择题(前面各节已经穿插了 14 道)。
第 1 步:点击列号($a_1,a_2,\dots$),选出你认为的「前 $r$ 个独立列」,点「核对独立列」。第 2 步:在出现的表格里填 $F$(依赖列的配方,可以填分数如 1/2),点「核对 F」。卡住了就点「看答案」,或「换一题」。提示:从左到右,一列一列地问「它是前面各列的组合吗?」
判断独立列只需要「从左到右」:第 1 列只要不是 0 就独立;之后每一列,看它能否由前面已选出的独立列组合出来。填 $F$ 时,每个依赖列的配方只用到它左边的独立列,右边独立列对应的位置一定是 0。
某矩阵的 rref 是 [1 0 2; 0 1 −1; 0 0 0]。A 的第 3 列与第 1、2 列是什么关系?
下面哪个矩阵「不可能」是任何矩阵的 rref?
把例 1 中 A 的元素 48 改成 49(第 3 行第 3 列),rref 中的 F 会变成什么?
一个 6×9 矩阵的秩是 4。下面哪组形状是对的?
习题
原文没有习题;下面 11 道题按 §1–§7 的顺序自拟,每题附提示与完整解答。建议先动手算,再对照演示检查。
提示
先消第 1 列;注意第 2 列在主元行下方会全部变成 0——它是依赖列。可以把矩阵输入 §3 的演示核对。参考解答
第 2 行 − 2×第 1 行 → $(0,0,1,3)$;第 3 行 − 第 1 行 → $(0,0,1,3)$;第 3 行 − 新第 2 行 → 0。第 2 列在主元行下方全为 0(依赖),第 3 列有主元。得
独立列是第 1、3 列,所以 $P$ 交换第 2、3 列:$\begin{bmatrix}I & F\end{bmatrix}P=\begin{bmatrix}1 & 0 & 3 & 2\\ 0 & 1 & 0 & 3\end{bmatrix}P=\begin{bmatrix}1 & 3 & 0 & 2\\ 0 & 0 & 1 & 3\end{bmatrix}=R$。$F$ 的第 1 列 $(3,0)$:第 2 列 $=3\times$第 1 列;第 2 列 $(2,3)$:第 4 列 $=2\times$第 1 列 $+3\times$第 3 列。验证:$2(1,2,1)+3(0,1,1)=(2,7,5)$ ✓。
提示
先按 $(x_1,x_3,x_2,x_4)$ 的顺序写 $\begin{bmatrix}-F\\ I\end{bmatrix}$,再交换第 2、3 行。参考解答
$A$ 乘第 1 列:$-3(1,2,1)+(3,6,3)=0$,对应「第 2 列 = 3×第 1 列」。$A$ 乘第 2 列:$-2(1,2,1)-3(0,1,1)+(2,7,5)=(0,0,0)$,对应「第 4 列 = 2×第 1 列 + 3×第 3 列」。两列在自由位置(第 2、4 个分量)上是单位矩阵,所以独立;$n-r=2$,它们是零空间的基。
提示
$A$ 的第 $j$ 列 $=C\times$(第 $j$ 列的配方);独立列的配方是单位向量。参考解答
(a) $a_1=(1,1,2)$,$a_3=(0,1,1)$,$a_2=2a_1=(2,2,4)$,$a_4=a_1+4a_3=(1,5,6)$,所以 $A=\begin{bmatrix}1 & 2 & 0 & 1\\ 1 & 2 & 1 & 5\\ 2 & 4 & 1 & 6\end{bmatrix}$。
(b) 第 2 列排在第 3 列(独立列)之前。如果它的配方里用到了 $a_3$(第二个数不为 0),它就不是「前面各列」的组合,从左到右扫描时会被当作独立列——与「独立列在第 1、3 列」矛盾。这正是 rref 里「主元 1 的左边只能是 0」。
(c) $\mathrm{rref}(A)=\begin{bmatrix}1 & 2 & 0 & 1\\ 0 & 0 & 1 & 4\\ 0 & 0 & 0 & 0\end{bmatrix}$:主元列放单位向量,依赖列放配方,最后补 $m-r=1$ 个零行。(检验:第 3 行 = 第 1 行 + 第 2 行,确实会被消成 0。)
提示
2×2 矩阵 $\begin{bmatrix}a & b\\ c & d\end{bmatrix}$ 的逆是 $\frac{1}{ad-bc}\begin{bmatrix}d & -b\\ -c & a\end{bmatrix}$。参考解答
$W=\begin{bmatrix}2 & 1\\ 4 & 3\end{bmatrix}$,$\det W=2$,$W^{-1}=\begin{bmatrix}3/2 & -1/2\\ -2 & 1\end{bmatrix}$。$H=\begin{bmatrix}3 & 4\\ 7 & 10\end{bmatrix}$,
$JW^{-1}=(1,1)$:第 3 行 = 第 1 行 + 第 2 行(确实 $(2,1,3,4)+(4,3,7,10)=(6,4,10,14)$)。所以 $\mathrm{rref}(A)=\begin{bmatrix}1 & 0 & 1 & 1\\ 0 & 1 & 1 & 2\\ 0 & 0 & 0 & 0\end{bmatrix}$。
提示
$A$ 的第 $i$ 行是 $u_iv^{\mathsf T}$,第 $j$ 列是 $v_ju$,交叉处 $a_{ij}=u_iv_j$。参考解答
第 $i$ 行 $=u_iv^{\mathsf T}$ 非零,而 $v\ne0$,所以 $u_i\ne0$。第 $j$ 列 $=v_ju$ 非零,而 $u\ne0$,所以 $v_j\ne0$。于是 $a_{ij}=u_iv_j\ne0$。当 $r=1$ 时,「独立的 1 行」就是非零行,「独立的 1 列」就是非零列,$1\times1$ 的 $W=[a_{ij}]$ 可逆即 $a_{ij}\ne0$。
提示
(a) $W$ 的行是所选各行的一部分分量。(b) 试试本章 §7 演示中的 3×3 矩阵。参考解答
(a) 若所选各行满足某个非平凡关系 $\sum c_i(\text{第 }i\text{ 行})=0$,只看所选的那 $r$ 列,同样的关系对 $W$ 的各行也成立,所以 $W$ 的行不独立,$W$ 不可逆。
(b) $A=\begin{bmatrix}1 & 0 & 1\\ 0 & 1 & 1\\ 1 & 1 & 2\end{bmatrix}$ 的秩是 2。取 $k=1$:第 1 行 $(1,0,1)$ 与第 2 列 $(0,1,1)$ 都非零(各自独立),交叉处却是 $a_{12}=0$。若取 $k=r=2$,例如第 1、2 行与第 2、3 列,$W=\begin{bmatrix}0 & 1\\ 1 & 1\end{bmatrix}$,$\det W=-1\ne0$,符合定理。
提示
(b) 看 $CR$ 的第 $(i,j)$ 个数:$\sum_k c_{ik}r_{kj}$。参考解答
(a) 第 2 列 $=2\times$第 1 列,第 3 列 $=3\times$第 1 列,秩 1:$C=\begin{bmatrix}1\\ 2\end{bmatrix}$,$R=\begin{bmatrix}1 & 2 & 3\end{bmatrix}$。按行读:第 1 行 $=1\times R$,第 2 行 $=2\times R$,系数就是 $C$ 的两行。行秩 $=1=$ 列秩。
(b) $(CR)_{ij}=\sum_{k=1}^{r}c_{ik}r_{kj}$,而 $\big((C\text{ 的第 }k\text{ 列})(R\text{ 的第 }k\text{ 行})\big)_{ij}=c_{ik}r_{kj}$,对 $k$ 求和即得。每一项「一列乘一行」都是秩 1 矩阵(各列都是同一列的倍数),所以 $A$ 是 $r$ 个秩 1 矩阵之和。例 1:$A=\begin{bmatrix}1\\ 3\\ 4\end{bmatrix}\begin{bmatrix}1 & 0 & 3 & 5\end{bmatrix}+\begin{bmatrix}2\\ 7\\ 9\end{bmatrix}\begin{bmatrix}0 & 1 & 4 & 6\end{bmatrix}$。
提示
先说明 $B=WR$:$B$ 的行就是 $A=CR$ 中对应的那几行。参考解答
$A=CR$。只取 $B$ 那几行:$B=C_SR$,其中 $C_S$ 是 $C$ 的对应行,恰好就是交叉 $W$(行取自 $B$、列是主元列)。由 §7,$W$ 可逆,所以 $R=W^{-1}B$,代回得 $A=CR=CW^{-1}B$。例 1:$W=\begin{bmatrix}1 & 2\\ 3 & 7\end{bmatrix}$,$W^{-1}B=\begin{bmatrix}7 & -2\\ -3 & 1\end{bmatrix}\begin{bmatrix}1 & 2 & 11 & 17\\ 3 & 7 & 37 & 57\end{bmatrix}=\begin{bmatrix}1 & 0 & 3 & 5\\ 0 & 1 & 4 & 6\end{bmatrix}=R$ ✓,再乘 $C$ 就回到 $A$。这说明:$A$ 完全由它的 $r$ 个独立列、$r$ 个独立行和交叉 $W$ 决定。
提示
一列是否「依赖于前面的列」,只取决于 $A$ 本身。参考解答
中间过程会变:例子 $A=\begin{bmatrix}2 & 4 & 1 & 3\\ 4 & 8 & 3 & 7\\ 6 & 12 & 2 & 8\end{bmatrix}$ 中,选第一个非零数时主元是 2,不交换行;选最大数时主元是 6,要交换第 1、3 行,中间出现 $\tfrac13$、$\tfrac53$ 之类的分数。但结果不变:第 $k+1$ 列是否依赖于前 $k$ 列($\ell$ 是否全为 0)是 $A$ 本身的性质,与选哪个主元无关,所以列号表(第 1、3 列)和 $C$ 不变;$F$ 是依赖列用 $C$ 表示的唯一系数,也不变:$F=\begin{bmatrix}2 & 1\\ 0 & 1\end{bmatrix}$,两种做法的 rref 都是 $\begin{bmatrix}1 & 2 & 0 & 1\\ 0 & 0 & 1 & 1\\ 0 & 0 & 0 & 0\end{bmatrix}$。
提示
对 2×2 单位矩阵依次做同样的行变换。主元列是第 1、3 列。参考解答
步骤:第 2 行 − 第 1 行,得 $\begin{bmatrix}1 & 2 & 3 & 4\\ 0 & 0 & 1 & 1\end{bmatrix}$;第 1 行 − 3×第 2 行,得 $R=\begin{bmatrix}1 & 2 & 0 & 1\\ 0 & 0 & 1 & 1\end{bmatrix}$。对 $I$ 做同样两步:$\begin{bmatrix}1 & 0\\ -1 & 1\end{bmatrix}\to\begin{bmatrix}4 & -3\\ -1 & 1\end{bmatrix}=M$。主元列是第 1、3 列,$W=\begin{bmatrix}1 & 3\\ 1 & 4\end{bmatrix}$,$W^{-1}=\begin{bmatrix}4 & -3\\ -1 & 1\end{bmatrix}=M$ ✓。这里 $m=r=2$,没有 $J$、$K$,分块消元矩阵就只剩 $W^{-1}$:$MA=W^{-1}A$ 把 $A$ 的主元列变成 $I$,其余列变成 $W^{-1}H=F$。
提示
第 $k$ 步(第 $k$ 个主元)改写哪些位置?只数主元列右边的数。参考解答
Gauss:第 $k$ 步只改写第 $k$ 行下方、第 $k$ 列右边的数,即 $i\gt k$ 且 $j\gt k$。位置 $(i,j)$ 被改写的步数 = 满足 $k\lt i$ 且 $k\lt j$ 的 $k$ 的个数 $=\min(i,j)-1$。总数 $\sum_{k=1}^{n-1}(n-k)^2=\tfrac{(n-1)n(2n-1)}{6}$。
Gauss–Jordan:第 $k$ 步改写第 $k$ 列右边所有行的数(第 $k$ 行是除以主元,其余行是乘-减),即所有 $i$、所有 $j\gt k$。位置 $(i,j)$ 被改写的步数 = 满足 $k\lt j$ 的 $k$ 的个数 $=j-1$。总数 $n\sum_{j=1}^{n}(j-1)=\tfrac{n^2(n-1)}{2}$。
比值 $\dfrac{n^2(n-1)/2}{(n-1)n(2n-1)/6}=\dfrac{3n}{2n-1}\to\dfrac32$。例如 $n=3$:5 次对 9 次;$n=6$:55 次对 90 次(与 §5 的演示一致)。
中英术语表
汇总各章术语卡片(共 46 条),方便对照英文原书。输入中文或英文即可筛选;点击章号跳到对应小节。
| 中文 | English | 释义 | 章 |
|---|---|---|---|
| 列向量 | column vector | 竖着排成一列的一组数。有 3 个分量的列向量对应三维空间中的一个点,也可画成从原点出发的箭头。 | 1 |
| 零向量 | zero vector | 所有分量都是 0 的向量,是向量图的中心点(原点)。任何一组向量乘以全 0 系数再相加都得到它。 | 1 |
| 线性组合 | linear combination | 先数乘、再相加得到的向量 $ca_1+da_2$;系数 $c,d$ 可以是任何数(负数、分数都行)。 | 1 |
| 矩阵 | matrix | 把 $n$ 个列向量并排放在一起得到的 $m\times n$ 数表($m$ 行、$n$ 列;先说行数)。 | 1 |
| 列空间 | column space | 矩阵各列的所有线性组合,也就是所有 $Ax$ 组成的集合。$m\times n$ 矩阵的列空间在 $\mathbb R^m$ 里。 | 1 |
| 线性无关(独立 | linearly independent | 只有「全部乘 0」这一种组合能得到零向量;等价地,没有哪一列是其他列的组合,每一列都带来新方向。 | 1 |
| 秩 | rank | 矩阵独立列的个数 $r$(也等于独立行的个数);$A=CR$ 中 $C$ 的列数。 | 1 |
| 列-行分解 A = CR | column-row factorization | $C$:$A$ 的前 $r$ 个独立列;$R$:把 $C$ 的列组合成 $A$ 每一列的系数($r\times n$)。 | 1 |
| 行空间 | row space | 各行的所有组合;位于 $\mathbb R^n$,维数 $r$。 | 1 |
| 零空间 | nullspace | $Ax=\mathbf 0$ 的所有解 = 与每一行都垂直的向量;位于 $\mathbb R^n$,维数 $n-r$。 | 1 |
| Aᵀ 的零空间 | nullspace of Aᵀ | 与每一列都垂直的向量($A^{\mathsf T}y=\mathbf 0$ 的解);位于 $\mathbb R^m$,维数 $m-r$。 | 1 |
| 维数 | dimension | 一个空间里独立方向的个数:过原点的直线是 1,平面是 2,$\mathbb R^3$ 是 3,只含零向量的空间是 0。 | 1 |
| 线性代数基本定理 | Fundamental Theorem of Linear Algebra | 四个子空间的维数 $r,\ n-r,\ r,\ m-r$ 与两对垂直关系;独立列数 = 独立行数;第 7 章补上四个子空间的特殊基。 | 1 |
| 转置 | transpose | 把矩阵的行变成列得到 $A^{\mathsf T}$;$m\times n$ 矩阵的转置是 $n\times m$。 | 1 |
| 正交矩阵 | orthogonal matrix | 各列是互相垂直的单位向量的方阵;乘它不改变长度,例如旋转矩阵。 | 1 |
| 下三角 / 上三角矩阵 | lower / upper triangular matrix | 对角线上方全为 0 的是下三角(如 $L$),对角线下方全为 0 的是上三角(如 $U$、$R$)。 | 1 |
| 对称矩阵 | symmetric matrix | 满足 $S^{\mathsf T}=S$ 的方阵;可以分解成 $S=Q\Lambda Q^{\mathsf T}$。 | 1 |
| 特征值与特征向量 | eigenvalue & eigenvector | $Sq=\lambda q$:矩阵作用在特征向量 $q$ 上只把它伸缩 $\lambda$ 倍。对称矩阵的特征值都是实数。 | 1 |
| 奇异值分解 | singular value decomposition (SVD | $A=U\Sigma V^{\mathsf T}$:$U$、$V$ 正交,$\Sigma$ 对角且为正奇异值;对每个矩阵都成立。$Av_k=\sigma_ku_k$。 | 1 |
| 奇异值 | singular value | $\Sigma$ 对角线上的正数 $\sigma_1\ge\sigma_2\ge\dots$;几何上是单位圆(球)被 $A$ 变成的椭圆(椭球)的半轴长。 | 1 |
| 深度学习 | deep learning | 从数据中学出输入-输出规则的方法;核心是构造学习函数 $F(x,v)$ 并求出权重 $x$。 | 1 |
| 分段线性函数 | piecewise linear function | 由若干直线段在折点处连成的函数:每段简单,整体通用。深度学习中学习函数的首选。 | 1 |
| ReLU | rectified linear unit | $\mathrm{ReLU}(t)=\max(0,t)$:只在 0 处折一次的最简单的分段线性函数。 | 1 |
| 训练数据 / 测试数据 | training data / test data | 训练数据用来确定权重;测试数据没参与训练,用来检验 $F$ 在新数据上是否仍然接近正确。 | 1 |
| 马尔可夫矩阵 | Markov matrix | 每一列都是加起来为 1 的非负概率;描述状态之间的一步转移。反复相乘趋向稳定分布(特征值 1 的特征向量)。 | 1 |
| 关联矩阵 | incidence matrix | 图的矩阵:每行一条边,每列一个节点;边的起点记 −1、终点记 +1,其余为 0。 | 1 |
| 傅里叶矩阵 | Fourier matrix | 把一串数据变换到频率上的矩阵,揭示数据中含有哪些频率、各有多强。 | 1 |
| 协方差矩阵 | covariance matrix | 对角线是各变量的方差,非对角线是两两之间的协方差;描述变量之间的依赖。它是对称矩阵。 | 1 |
| 优化 | optimization | 求函数的最小值;变量很多时,「导数 = 0」变成一个矩阵方程。深度学习中计算权重靠它(第 9 章)。 | 1 |
| 消元 | elimination | 用行变换系统地制造 0,把 $Ax=b$ 化成同解但更简单的方程组;最古老的线性代数算法。 | 2 |
| 简化行阶梯形 | reduced row echelon form (rref | 消元的终点:主元都是 1、主元列其余全是 0、零行在最下面。$\mathrm{rref}(A)=\begin{bmatrix}I & F\\ 0 & 0\end{bmatrix}P$,且唯一。 | 2 |
| 主元 | pivot | 每个非零行的第一个非零数(在 rref 中化为 1);主元个数 = 秩 $r$。 | 2 |
| 满列秩 / 满行秩 | full column rank / full row rank | 所有列互相独立(秩 = 列数)/ 所有行互相独立(秩 = 行数)。$A=CR$ 中 $C$ 满列秩,$R$ 满行秩。 | 2 |
| 置换矩阵 | permutation matrix | 单位矩阵的各列重新排序;右乘 $P$ 重排列,左乘重排行;$PP^{\mathsf T}=I$。 | 2 |
| 依赖列 | dependent columns | 是前面各列组合的列;在 $A=CR$ 中它们组成 $CF$,配方写在 $F$ 里。 | 2 |
| 行变换 | row operations | (a) 减去另一行的倍数;(b) 交换两行;(c) 一行除以它的第一个非零数。都可逆,等于左乘一个可逆矩阵。 | 2 |
| Gauss–Jordan 消元 | Gauss-Jordan elimination | 在主元行的上方和下方都消元,并把主元化成 1,一直做到 rref。 | 2 |
| 主元列 / 自由列 | pivot columns / free columns | rref 中含主元的列(对应 $A$ 的独立列,拼成 $I$)/ 其余的列(对应依赖列,拼成 $F$)。 | 2 |
| 部分主元法 | partial pivoting | 在候选位置中选绝对值最大的数作主元,以减小浮点运算的舍入误差;不影响最后的 rref。 | 2 |
| 零空间的基(特殊解 | nullspace basis (special solutions | $X=P^{\mathsf T}\begin{bmatrix}-F\\ I\end{bmatrix}$ 的 $n-r$ 列:令一个自由变量为 1、其余为 0 时 $Ax=0$ 的解。 | 2 |
| 自由变量 / 主元变量 | free variables / pivot variables | 对应自由列 / 主元列的未知数;自由变量任取,主元变量由 $F$ 确定(带负号)。 | 2 |
| 回代 | back substitution | 解上三角方程组 $Ux=c$:从最后一个方程解出最后一个未知数,再逐个往上代。 | 2 |
| 分块消元 | block elimination | 把一整块当作一个「数」来消元:$\begin{bmatrix}W & H\\ J & K\end{bmatrix}\to\begin{bmatrix}I & W^{-1}H\\ 0 & K-JW^{-1}H\end{bmatrix}$。 | 2 |
| 可逆矩阵 | invertible matrix | 存在 $W^{-1}$ 使 $W^{-1}W=I$ 的方阵;等价于各列独立(满秩)。 | 2 |
| 子矩阵 | submatrix | 从矩阵中选出若干行、若干列,保留交叉处的数得到的矩阵;§7 中的 $W=B\cap C$。 | 2 |
| 交叉子矩阵定理 | intersection of independent rows and columns | 秩为 $r$ 的矩阵中,$r$ 个独立行与 $r$ 个独立列交叉出的 $r\times r$ 子矩阵 $W$ 一定可逆。 | 2 |