← 返回知识卡片总目录

DS1号 · 自学教材系列 | 线性代数

第 9 章 矩阵的秩

一个矩阵里到底藏着多少「独立的信息」?秩(rank)用一个数把这个问题的答案提炼出来。它一头连着「线性无关」(第 2 章),一头连着「解的存在与唯一」(第 6 章),是全书承上启下的枢纽。

🎯 本章学习目标

  1. 理解秩 = 矩阵线性无关的列(或行)的最大个数。
  2. 理解几何意义:秩 = 列向量张成空间的维数。
  3. 掌握「列秩 = 行秩」这一重要事实。
  4. 用秩完整判定方程组的解:唯一解 / 无穷解 / 无解。
  5. 会用「行阶梯形的主元个数」快速求秩。
  6. 会用增广矩阵的两个秩(rank(A) 与 rank([A|b]))判定方程组:唯一解 / 无穷解 / 无解。
  7. 能说出 rank(A)、rank([A|b])、未知数个数 n 三者在三种解情形下的大小关系。

9.1动机:矩阵里有多少独立信息

看这个矩阵 A = [[1,2,3],[2,4,6]]。它的第二列是第一列的 2 倍,第三列是第一列的 3 倍——三列其实都在同一条直线上,真正「独立」的信息只有 1 个方向。

再看矩阵 B = [[1,0],[0,1]],两列 (1,0)、(0,1) 互相独立,谁也不是谁的倍数,有 2 个独立方向。

直觉上,A「信息含量低」,B「信息含量高」。秩,就是量化「信息含量」的那个数——它数一数矩阵里到底有多少个「真正独立」的列。

核心思想 秩 = 矩阵中线性无关列的最大个数,衡量这个矩阵「实际撑起了几维的空间」。

把「独立」二字再咬文嚼字一遍:新的一列要「带来新方向」才算数。A 的情况是——第 2 列没有新方向(它是第 1 列的 2 倍),第 3 列也没有(它是第 1 列的 3 倍)。它们不是「错」,只是「冗余」:知道第 1 列,它们的信息就白送了。B 的两列则各管一个方向,谁也替代不了谁。于是「信息含量」可以严格化为「线性无关列的最大个数」——这就是秩。数数这件事从「模糊的感觉」升级为「可计算的定义」,这正是数学的标准动作:先有直觉,再把直觉钉死。

📐 例题 1 一眼看出第三列「白送」:三种视角交叉验证

A = [[1,0,2],[0,1,3],[1,1,5]],不化简,直接观察:第 3 列能不能由前两列拼出来?并从行视角与几何视角复核,最后确认 rank(A)。

思路 盯住第 3 列 (2,3,5):它与前两列 (1,0,1)、(0,1,1) 长得「亲」。试着拼:2×第 1 列 + 3×第 2 列 = (2,0,2) + (0,3,3) = (2,3,5)——命中。

解 列视角:第 3 列 = 2·第 1 列 + 3·第 2 列,三列最多两列独立。

行视角复核:第 1 行 (1,0,2) + 第 2 行 (0,1,3) = (1,1,5),恰好是第 3 行——行也有冗余,且同样「冗掉 1 个」。

几何视角:三列全在由 (1,0,1)、(0,1,1) 张成的平面上,张成空间是二维平面而非三维空间。

程序复核:消元后非零行 2 个(机器算 rank(A) = 2),三个视角同声相应。前两列谁也不是谁的倍数,是极大无关组,rank(A) = 2。

答:第 3 列 = 2·col1 + 3·col2,是「白送」的;rank(A) = 2。 ⚠ 易错点:别把「有一列相关」误推「只有一列独立」——冗余的只是第三列,前两列依然独立;另外行冗余数与列冗余数一定相等(这里都是 1),这是「列秩=行秩」的第一次露面。

工程应用:传感器的「有效通道数」

机载大气数据系统装三支温度传感器,读数矩阵一列一支。若第 2 支永远读「第 1 支的 1.01 倍」、第 3 支是前两支的平均,那三列近似落在一个方向上——有效通道数约等于 1。冗余不是罪:三支独立安装的传感器即便读数高度相关,仍在故障隔离(一支坏了另两支兜底)与降噪(多路平均)上价值巨大;但「有效信息维度」要按秩来算,不能按采购数量来算。这正是数据分析里「特征维度高、信息维度低」的经典处境——数据挖掘、主成分分析(PCA)处理的就是这类「列多但秩小」的矩阵,它们的口诀是:别数有几列,要数有几维。

辨析:低秩是常态,不是错误

初学者常把「秩小」当「矩阵出了问题」。恰恰相反:一张 1000×1000 的自然图像,秩往往只有几十——邻近像素高度相关,是大自然的平滑性使然;一张用户评分表,用户口味常被几十个「偏好主题」支配,秩也远小于行列数。低秩 = 信息结构紧凑 = 可压缩、可预测。秩的正确姿势不是「越高越好」,而是「测得准、用得上」:建模时先问「这堆数据实际撑起几维」,答案常常出乎意料地小。

深化:冗余不是浪费——白送列的三重价值

批评完「白送」,得给冗余列说句公道话:容错——关键通道旁边挂一路备份列(主传感器 + 备用传感器读数几乎相同),坏一路另一路顶上,可用性大增;校验——两列本该严格成比例,实际读数却渐渐偏离,偏差本身就是故障信号(轴承磨损、传感器漂移在「冗余列的不冗余」处现形);降噪——对同一物理量多次独立测量取平均,列越多方差越小。秩告诉你「信息维度」,冗余度则告诉你「安全余量」——前者管模型的容量,后者管系统的韧性,两个数都要盯。

读法说什么本章对应
独立列数有几列带新方向9.1 的直觉起点
独立行数有几行带新信息9.2 定义(与列数相等)
列空间维数输出能铺满几维9.3 几何意义
主元个数阶梯形非零行数9.5 算法读数

四种读法、一个数字——这正是「不变量」的威力:形式千变万化,答案始终如一。本章其余部分就沿着这四条路反复上下,最后你会发现自己看任何矩阵,四个视角同时在心里亮起。

给本章立一句总纲:秩数的是「方向」,不是「东西」。列可以有一百个,方向可能只有一个;数据可以有一万行,独立模式也许只有十来种。学习秩,就是把注意力从「数量」挪到「维度」——这个视角切换,是线性代数从计算走向洞察的第一道门,后面主成分分析、数据降维、模型可辨识性的讨论,全都踩在这道门的门槛上。

9.2秩的定义:独立列的个数

正式定义:

定义 矩阵 A 的列秩,是 A 的列向量中线性无关的最大个数;行秩,是行向量中线性无关的最大个数。两者一定相等(这是重要定理),统称为 矩阵的秩,记作 rank(A)。

「列秩 = 行秩」听起来不可思议——行和列是不同方向的东西,凭什么独立行数和独立列数一定一样?直觉上,可以把矩阵想象成一张「信息表」:无论横着看还是竖着看,它承载的独立信息总量是固定的。这个定理保证我们从行或列任意一个角度数,结果都一样。

回到开头的 A=[[1,2,3],[2,4,6]]:三列共线,独立列只有 1 个,rank(A)=1。两行也共线(第二行是第一行的 2 倍),独立行也是 1 个——果然一致。

定义里有个容易放过的细节:「最大个数」。独立组不是唯一的——同一堆列里,你可以选这组独立列,我选那组,谁也不服谁;但定理保证无论怎么选,独立列的个数都一样多。这叫「良定义」:答案不依赖选择。于是 rank(A) 这个数才有资格被当作矩阵本身的属性,而不是「某一次挑选」的结果。

「列秩 = 行秩」的证明思路值得走一遍,它比结论本身更值钱:

这个证明的副产品极有价值:它顺手证明了求秩的算法(化阶梯形、数主元),还给「矩阵是不变量」的哲学上了生动一课——横看竖看角度不同,独立信息的总量纹丝不动。数学里专有一门「不变量」的学问:把纷繁的表现形式底下那个不变的数挖出来,秩就是线性代数贡献的第一个标准不变量。

📐 例题 2 挑一个最大无关组,并验证「换一组也一样多」

A = [[1,2,1],[2,4,3],[3,6,4]],求一个最大线性无关组,并验证另选一组时个数不变。

思路 逐列检查「新列是否带来新方向」:第 2 列是第 1 列的 2 倍吗?第 3 列能由前两列拼出吗?先拼第 2 列:2×(1,2,3) = (2,4,6)——命中,第 2 列白送。再试第 3 列 (1,3,4):若能拼出,须 a·(1,2,3) + b·(2,4,6) = (1,3,4),从第 1 分量看 a+2b=1,第 2 分量 2a+4b=3——左半边是第 1 个方程的 2 倍、右半边却不是(2≠3),矛盾。第 3 列带来新方向。

解 列视角:第 2 列 = 2·第 1 列;{col1, col3} 线性无关,是最大无关组,rank(A) = 2。

换组验证:扔掉第 1 列改选 {col2, col3}——第 2、3 列也互相独立(程序验证秩为 2),仍是两个。组的「成员」可以换,「个数」雷打不动——良定义不是空话。

行视角复核:第 1 行 + 第 2 行 = (1+2, 2+4, 1+3) = (3, 6, 4) = 第 3 行。行也冗掉一个,独立行数同样是 2。列秩 = 行秩,第二次应验。

几何复核:三列全躺在 (1,2,3) 与 (1,3,4) 张成的平面上,列空间是二维平面。

答:{col1, col3}(或 {col2, col3})是最大无关组,rank(A) = 2。 ⚠ 易错点:检查「第 3 列能否拼出」时,别只看一个分量就下结论——必须整条向量逐分量对齐,差一个分量就是独立;另外「最大无关组」不唯一,个数才唯一,答案写「一个」最大无关组即可,别误以为有唯一的标准答案。

工程应用:仓库盘点与「扫码枪数 SKU」

把矩阵想成一张出入库记录表:每列是一个商品在每天的销售量。若「泡面」与「火腿肠」总是 1:1 同涨同跌(捆绑销售)、「可乐」是泡面销量的 3 倍(促销联动),那这三列近似只撑起一个方向。盘库存的意义不在「有几列」(几种商品),而在「几个独立 SKU」(几类彼此独立的需求)——后者才是补货、预测、定价时真正要盯的变量数。电商平台的商品动辄百万种,独立需求维度却常常几十个:这就是为什么推荐系统能用几十维的「偏好向量」大体刻画百万种商品的行为——秩小,是它能被压缩、被理解的原因。

辨析:两两独立 ≠ 整组独立

「最大个数」的陷阱在这里:u、v、u+v 这三个向量,任何两个都线性无关(u 与 v 独立,u 与 u+v 独立,v 与 u+v 独立——两两独立),但整组一看,第 3 个恰好是前两个之和,三者线性相关。所以「独立性」是整组性质,不能两两分批验收。工程对应物:三台仪表两两对照都「测得不一样」,却可能联合起来只测了一个物理量。线性代数反复训练的正是这种「整组视角」——局部两两没事,整组照样塌。

深化:挑极大无关组的流水线——从左到右逐列扫描

「最大无关组」听起来要试遍所有组合,其实有个免思考的流水线:列从左到右逐个过闸,过闸标准只有一条——「用已入选的列拼不拼得出我」。拼得出就丢弃并记下配方,拼不出就入选。例题 2 走的正是这条线:第 1 列入选;第 2 列 = 2×第 1 列,丢弃;第 3 列拼不出,入选。走到头,入选者 {col1, col3} 天然构成极大无关组,配方的记录本还顺手写成「每列怎么由主元列凑出」——9.5 节的行最简形其实就是这本记录表的机器版。这套「扫描—记配方」的流程,是理解主成分分析、稀疏表示等进阶方法的直系祖先。

📦 数学史小注:一个数横扫一切

19 世纪 70 年代,弗罗贝尼乌斯(Frobenius)给出矩阵秩的现代定义,把此前散落在行列式、方程组、不变量研究里的「独立量计数」提炼成一个干净利落的数。有趣的是,「列秩 = 行秩」这类结果在此前后被人们从不同方向反复撞见——因为它本来就在那里,像物理定律一样等着被发现。今天,这个「不起眼的数」站在搜索引擎排序、数据压缩、控制理论的最底层,每秒钟都在地球的机房里被计算亿万次。

9.3几何意义:列空间(张成空间)的维数

还记得第 2 章的「张成空间 span」吗?矩阵的所有列向量做线性组合,能张成一个子空间,叫 列空间。

那么:

几何解释 秩 = 列空间的维数。rank=1 说明列向量只张成一条线;rank=2 说明张成一个平面;rank=3 说明张成整个三维空间。

秩的几何意义 左边矩阵列共线,秩为1,列空间是一条线;右边矩阵列独立,秩为2,列空间是整个平面。 rank = 1:列都挤在一条线上 三列共线 rank = 2:列铺满整个平面 两列铺满平面
图 9-1秩 = 列空间的维数:rank=1 的列只张成一条线,rank=2 的列铺满整个平面。

于是,第 2 章「张成空间」、第 7 章「行列式是否为零」、本章「秩」,被统一起来了:det=0 意味着列线性相关、列空间塌缩、秩小于列数。

深化:列空间 = 可达集——输入、输出与维数守恒

把矩阵放回「变换」的语言:Ax 是「各列按 x 的分量加权混合」,所以无论 x 怎么挑,输出 Ax 只能在列空间里。输入端有 n 个自由度(x 有 n 个分量),输出端的可达维度却是 rank(A)——变换最多保住 rank(A) 个维度的信息。满秩时「进多少出多少」(维数守恒),亏秩时「进得多出得少」(维数亏损)。秩亏掉的维数去哪了?被压扁了:不同的输入挤到同一个输出上,这正是第 7 章「压扁」的精确计数版。

于是,第 7 章 det 与本章 rank 的分工也清楚了:det 是一枚0/1 开关——只回答「塌没塌」(det≠0 没塌,det=0 塌了);rank 是一把刻度尺——精确读出「塌完还剩几维」(rank=2 剩平面、rank=1 剩直线、rank=0 只剩一个点)。开关管「有没有」,刻度尺管「有多少」。二阶以上的方阵、以及一切非方阵,刻度尺都是更通用的仪表。

📐 例题 3 三个向量撑起几维?顺路用 det 复核

u = (1,2,3),v = (2,4,6),w = (0,1,1)。这三列(排成 3×3 矩阵 M)撑起几维空间?求 rank(M),并用行列式复核。

思路 逐列问「带来新方向吗」:v 一眼是 2u(每分量都翻倍)——白送。w 与 u 明显不成比例——新方向。

解 列视角:v = 2u;{u, w} 线性无关(一个不是另一个的倍数),撑起一个二维平面;rank(M) = 2。

det 复核:M = [[1,2,0],[2,4,1],[3,6,1]],按第一行展开 det(M) = 1×(4×1−1×6) − 2×(2×1−1×3) + 0 = −2 + 2 = 0。det=0 说明三列共面(塌),刻度尺进一步读出「塌剩 2 维」——开关与刻度尺各司其职。

几何复核:三个向量全在 u、w 张成的平面内,列空间是这个平面而非整个三维空间。

答:rank(M) = 2,det(M) = 0。 ⚠ 易错点:det=0 只告诉你「相关」,不告诉你「剩几维」——别拿开关当刻度尺;同时「两列不成比例」就足以断定它们独立(二维情形),但三列的独立必须整组检验,见上节的两两独立陷阱。

工程应用:机械臂的可达空间

平面机械臂有三个关节角 θ₁、θ₂、θ₃,末端位置 x = f(θ) 线性化后是 x = Aθ。若第三个关节与第二个共轴(或因机械约束总与前两个联动),A 的秩只有 2——三个输入变量实际只指挥两个独立方向,末端永远被锁在一个二维区域内。设计者读 rank 就知道「这串机构给了几个自由度」,而不用逐个关节摆弄。机器人学把这叫「有效自由度」,自动驾驶把它叫「可控维度」:参数再多、通道再繁,能动几维由秩说了算。

辨析:复合不增秩—— rank(AB) ≤ min(rank(A), rank(B))

变换串联(先 B 后 A)后,独立信息只减不增:B 的输出再被 A 加工,能到达的空间维数不可能超过 B 张成的维数,也不可能超出 A 自己的可达维数。两边一夹:rank(AB) ≤ rank(A) 且 rank(AB) ≤ rank(B)。直观印证:先压扁到平面(rank 2),再怎么三维地旋转平移,输出仍困在平面里。「复合保秩」不存在,「复合掉维」家常便饭——滤波、投影、降采样在工程里全是「掉维」动作,级联多了,最后只剩一条线甚至一个点的情形并不罕见。

深化:满秩 = 双射——把第 8 章的「一一对应」翻译成秩

用秩重读第 8 章的「一一对应」:变换 x ↦ Ax 要「不丢不重」,必须既单射(不同输入不撞车 ⇔ Ax=0 只有零解 ⇔ 列线性无关 ⇔ rank = n)又满射(任何输出都够得着 ⇔ 列铺满目标空间 ⇔ rank = m)。方阵 m = n 时两个条件合并成一个:rank = n ⇔ 可逆——第 8 章的判据到此全部翻译成秩的语言。非方阵则注定顾此失彼:「瘦高」矩阵(m > n)单射有余、满射无缘(输出空间太宽,列填不满);「矮胖」矩阵(m < n)满射有余、单射无缘(输入太多,撞车不可避免)。两头都占的只有方阵满秩——这就是为什么「可逆」是方阵的专利。

行列式 det秩 rank
适用范围只对方阵有定义任何形状的矩阵都有
回答什么塌没塌(0/1 开关)塌剩几维(刻度尺)
怎么算展开公式 / 化上三角连乘主元化阶梯形,数主元
几何直觉体积缩放率(零 = 压扁)可达空间的维数
方程组判据方阵:det≠0 ⇒ 唯一解任意形状:三分类全判

两件工具是同一件事的粗细两档:方阵问「塌没塌」,det 一锤定音;任何矩阵问「剩多少」,rank 精确读数。先学会用 det 快速裁决方阵问题,再掌握 rank 通吃一般问题——工具箱升级的顺序,正是教材第 7 章到第 9 章的展开顺序。

9.4秩与解的关系

现在用秩,把第 6 章「解的三类结果」讲得滴水不漏。考虑方程组 Ax=b,设未知数个数为 n,增广矩阵为 [A | b]。

用秩判定方程组解
条件结论直觉
rank(A) = rank([A|b]) = n唯一解列铺满空间,每个 b 都有唯一落点
rank(A) = rank([A|b]) < n无穷多解列张成低维空间,b 在里面,有多余自由度
rank(A) < rank([A|b])无解b 落在列空间「外面」,怎么也够不着

关键的判据就一句话:b 是否落在 A 的列空间里?

因为 Ax 本质是「A 的各列做线性组合」,它只能到达列空间内的点。b 在列空间外,就永远够不着。

🧠 一句话记忆 b 在列空间内 → 有解(满秩则唯一,不满秩则无穷多);b 在列空间外 → 无解。

表格读法再提炼一下:秩的判据其实拆成两个正交的问题——存在性问「b 在不在列空间里」,由 rank(A) 与 rank([A|b]) 是否相等裁决;唯一性问「即便够得着,落点是不是只有一个」,由 rank(A) 是否等于未知数个数 n 裁决(等于 n 即满秩,落点唯一;小于 n,就多出 n − rank(A) 个自由度,落点连成一片)。两问一横一竖,答案拼出三格:够得着且唯一 → 唯一解;够得着但不唯一 → 无穷解;够不着 → 无解。

📐 例题 4 同一副骨架,三种结局:把三个增广矩阵的秩算出来

① A₁ = [[1,1],[1,2]],b = (3,4);② A₂ = [[1,2],[2,4]],b = (3,6);③ A₃ = [[1,2],[2,4]],b = (3,7)。分别求 rank(A)、rank([A|b]),判定解的情况。

思路 n = 2。逐个算两个秩,对着「相等且 = n → 唯一;相等但 < n → 无穷;不等 → 无解」三行判据念。

解 ① det(A₁) = 1×2 − 1×1 = 1 ≠ 0,rank(A₁) = 2;增广后秩不变(列已铺满,b 添不出新方向),rank([A₁|b]) = 2。两秩相等且等于 n → 唯一解。直接解:x + y = 3,x + 2y = 4,两式相减得 y = 1,x = 2,即 x = (2, 1)。

② 第二行是第一行的 2 倍:rank(A₂) = 1。b = (3,6) 恰好满足第二方程 = 2×第一方程(2×3 = 6),增广不添秩,rank([A₂|b]) = 1。两秩相等但 < n=2 → 无穷解。通解:x + 2y = 3,取 y = t,得 x = 3 − 2t,x = (3−2t, t)——整条直线上的点全是解。

③ rank(A₃) = 1。但 b = (3,7) 的第二分量该是 6 才能凑成 2 倍关系,7 ≠ 6,b 掺了「够不着」的方向,rank([A₃|b]) = 2。两秩不等 → 无解:x + 2y = 3 与 2x + 4y = 7 要求第二个方程左边恒为第一个的 2 倍、右边却不是,铁定矛盾。

三行的几何图景:①列铺满平面,(3,4) 必然可达且只有一个落点;②列挤在一条线上,(3,6) 恰好在线上,落点沿线滑动取之不尽;③列还是同一条线,(3,7) 站在线外,永远够不着。

答:① rank 2 = 2 → 唯一解 (2,1);② rank 1 = 1 < 2 → 无穷解 (3−2t, t);③ rank 1 < 2 → 无解。 ⚠ 易错点:②③系数矩阵完全相同,结局全由 b 决定——「解的存在性」不是矩阵 A 单方面的属性,别只盯 A 不看 b;另外「无穷解」要写成通解(带自由参数),只给一个点不算完。

📐 例题 5 三阶「亏一」方程组:特解 + 自由方向 = 通解

A = [[1,2,3],[4,5,6],[7,8,9]],b = (3,9,15)。判断解的情况;若有解,写出通解并验证。

思路 n = 3。先消元看 A 的秩:r₂ − 4r₁ = (0,−3,−6),r₃ − 7r₁ = (0,−6,−12)——后者恰是前者的 2 倍,第三行被彻底消空。主元 2 个,rank(A) = 2。

解 增广后同步消:b 分量 9 − 4×3 = −3,15 − 7×3 = −6——第三行的 b 分量也是第二行 b 分量的 2 倍(−6 = 2×(−3)),增广不添新秩,rank([A|b]) = 2。两秩相等但 < n=3 → 无穷解,自由度 = 3 − 2 = 1。

找特解:令 z = 0,解 x + 2y = 3、4x + 5y = 9 → 两式联立解得 x = 1,y = 1,特解 (1,1,0)。回代验证:1+2+0 = 3 ✓,4+5+0 = 9 ✓,7+8+0 = 15 ✓。

找自由方向(零空间):解 Ax = 0,消元后等价于 x + 2y + 3z = 0、−3y − 6z = 0,即 y = −2z、x = z,取 z = 1 得方向 (1,−2,1)。验证:1·1 + 2·(−2) + 3·1 = 0 ✓,4·1 + 5·(−2) + 6·1 = 0 ✓,7·1 + 8·(−2) + 9·1 = 0 ✓。

通解 = 特解 + t·自由方向:x = (1,1,0) + t(1,−2,1),t 取遍全体实数。抽查 t = 1:x = (2,−1,1),A(2,−1,1) = (2−2+3, 8−5+6, 14−8+9) = (3,9,15) ✓;再抽查 t = −2:x = (−1,5,−2),同样命中 (3,9,15)。

几何图景:A 的列张成一个斜置平面(rank 2),b = (3,9,15) 恰好落在平面内;解集是三维空间里一条整线——「落点不唯一」不是「乱」,而是整齐地沿零空间方向平移的一串点。

答:rank(A) = rank([A|b]) = 2 < 3,无穷解;通解 x = (1,1,0) + t(1,−2,1)。 ⚠ 易错点:「特解 + 自由方向」两件缺一不可——只交特解丢了整条直线,只交方向又丢了落点;验证时至少抽查两个不同的 t,零方向的验证(Ax = 0)与特解的验证(Ax = b)要分开做。

b 在列空间内与外的两种命运 左侧 b 落在列空间平面内,方程组有解;右侧 b 悬在平面外,方程组无解。列空间用斜置平行四边形表示。 有解:b 在列空间内 列空间(rank=2 的平面) b ✓ 落点可达 → 有解 满秩则唯一,亏秩则无穷 无解:b 在列空间外 列空间(同一个平面) b ✗ 列组合只够到平面内 b 悬在平面外 → 无解
图 9-2解的存在性一目了然:b 落在列空间内,Ax = b 有解(唯一或无穷由 rank 是否等于 n 决定);b 悬在列空间外,无解。

工程应用:测量平差——「无解」的正确打开方式

工程里最常见的却是「超定方程组」:传感器读数比未知数还多。给三组坐标测得七个距离、用五个温度点拟合两个参数——m 个方程、n 个未知数且 m > n,读数又带噪声,b 几乎必然悬在列空间外,按判据「无解」。但工程师不会摊手说「无解」,而是问:离列空间最近的可解点是哪个?把 b 投影到列空间,按投影后的 b′ 解出 x——这就是最小二乘,拟合、定位、参数辨识的通用解法。秩判据在这里的角色是「体检报告」:先算清楚可达空间是几维,再谈「最近」。

辨析:无解 ≠ 无穷解——「没有」与「太多」都不是「恰好」

三分类的口语对应物:唯一解 = 恰好一个;无穷解 = 太多(信息不足,欠定);无解 = 没有(模型与数据互相打架,超定)。工程诊断时两者含义天差地别:「太多」通常是自由度没约束够(补传感器、加先验),「没有」通常是模型错了或数据有坏点(修模型、剔除野值)。把「没有」误诊为「太多」或反之,都会把力气花错地方——所以报告里永远要写清「是哪一种」而不是一句「解不出来」。

最后把三分类与第 8 章对齐:方阵满秩(rank = n ⇔ det ≠ 0 ⇔ 可逆)时,任何 b 都落在列空间里(列铺满全空间),且落点唯一——这正是「A 可逆 ⇒ Ax=b 有唯一解 x = A⁻¹b」的秩语言版。于是第 8 章的「五条判据」在方阵情形与本章的三分类严丝合缝地咬合:可逆处理「恰好一个」的黄金情形,秩的判据则把「太多」与「没有」一并纳入管辖。线性代数的方程组理论至此合龙。

深化:自由度的物理感——「太紧」与「太松」

把三分类再翻译成工程手感:rank(A) = n 是「设计过定」——每个未知数都被钉死,没有讨价还价的余地,解恰好一个;rank(A) < n 是「设计欠定」——约束没盖满所有自由度,还剩 n − rank(A) 个「活动关节」,解集因此是一个能滑动的点集(例题 5 里那条直线,例题 6 里若求 Ax=0 则是一张平面);无解则是「约束打架」——不是自由度问题,是彼此矛盾,得改模型。结构工程师加支撑、控制工程师加传感器,干的都是「把欠定变成恰好确定」的活;而「约束打架」则要靠排查矛盾来源。诊断对路,药才有效——三分类给的就是这份诊断书。

补一块拼图:齐次方程组 Ax = 0 的解集(零空间)本身也是个子空间,其维数恰好是 n − rank(A)(秩 + 零空间维数 = 未知数个数,这是「秩–零化度」定理的教科书形式)。用本章例题复核:例题 5 的 A(rank 2,n = 3)零空间维数 3 − 2 = 1,是一条过原点的直线——通解里的自由方向 (1,−2,1) 正是这条线的方向;例题 6 的 A(rank 2,n = 4)零空间维数 4 − 2 = 2,是一张过原点的平面——两个自由列对应两个自由参数。第 8 章的齐次判据(可逆 ⇔ Ax=0 只有零解)也归位了:零空间维数为 0 ⇔ rank = n。至此,「特解 + 零空间」的通解结构有了完整的维度账本:非齐次把解集平移出原点,零空间决定它能滑动的全部方向。

9.5怎么求秩:数主元

秩的求法,和第 6 章高斯消元完美复用:

  1. 把 A 化为行阶梯形;
  2. 数一数非零行的个数(即主元的个数)。

这个数就是 rank(A)。为什么?因为消元是等价变形,不改变行的独立关系;阶梯形里每个主元行都互相独立(各有自己的「领头的 1」),非零行数恰好就是独立行的个数。

求秩公式 rank(A) = 行阶梯形中非零行(主元)的个数。它同时等于:独立列数、独立行数、列空间维数。

例如 A=[[1,2,3],[2,4,6]] 消元后变成 [[1,2,3],[0,0,0]],只有 1 个非零行,rank=1。B=[[1,0],[0,1]] 已是阶梯形,2 个非零行,rank=2。和前面的判断完全一致。

🧠 一句话记忆 求秩 = 化成阶梯形 + 数主元。

数主元的合法性值得多说两句,因为整个算法的公信力都押在「消元不改秩」上。行变换只有三种:换位、倍乘(非零)、倍加。换位与倍乘只是给行「重新排队、统一量纲」,独立关系分毫不动;倍加最微妙——若某行原本能被其余行凑出,加减一轮后依然能被凑出(凑出的配方同步加减即可),若原本凑不出,倍加也不会突然让它「凑得出」(否则逆着做一遍倍加就「凑不出了」,独立性来回横跳显然荒谬)。三招都保秩,消元全由三招组成,于是阶梯形的秩 = 原矩阵的秩,而阶梯形的非零行一目了然互相独立——每个主元都站在前一行主元的更右边,谁也代替不了谁的「领地」。数格子就数出了独立行数。

顺带一提:行最简形(每个主元归一、主元列其余全清零)还有一个漂亮的性质——同一个矩阵的行最简形唯一。这意味着「秩」不依赖你消元的路径、不依赖运气:殊途必然同归。数值世界里这叫数值秩:浮点运算没有干净的零,只有「小到某个程度就当零」,实践中靠设定容差阈值来判(NumPy 的 matrix_rank 走的是奇异值分解:数一数超过容差 σ 的奇异值个数)。工程报告里的 rank 与课本手算的 rank 之间,隔着的是「精确算术 vs 浮点算术」的边界——概念同一,尺度随场景。

📐 例题 6 四列三行:消元、数主元、读秩

A = [[1,2,3,4],[2,4,6,8],[1,1,1,1]],化行阶梯形求 rank(A),并指出自由列是哪几个。

思路 对行做消元(别动列),把主元逐个立起来,然后数非零行。自由度 = 列数 − 秩,顺手一起算。

解 第一步:r₂ − 2r₁ → (0,0,0,0)——第 2 行整行归零,它整个是第 1 行的 2 倍。

第二步:r₃ − r₁ → (0,−1,−2,−3)——第 3 行获得自己的主元。

得阶梯形 [[1,2,3,4],[0,−1,−2,−3],[0,0,0,0]]:两个主元(第 1 行领头在列 1、第 2 行领头在列 2),非零行 2 个 → rank(A) = 2。

行最简形:再把第 2 行归一化得 (0,1,2,3),第 1 行减去它的 2 倍得 (1,0,−1,−2),于是 RREF = [[1,0,−1,−2],[0,1,2,3],[0,0,0,0]]——自由列上的数字直接给出「凑列配方」。

列的账本:主元列是第 1、2 列。RREF 第 3 列的系数 (−1, 2) 读作 col3 = −col1 + 2col2,第 4 列的系数 (−2, 3) 读作 col4 = −2col1 + 3col2。数值验证:−1×(1,2,1) + 2×(2,4,1) = (3,6,1) = col3 ✓;−2×(1,2,1) + 3×(2,4,1) = (4,8,1) = col4 ✓。自由列是第 3、4 列,自由度 = 4 − 2 = 2。

程序复核:matrix_rank(A) = 2,与手算一致。

答:rank(A) = 2;主元列第 1、2 列,自由列第 3、4 列,自由度 4 − 2 = 2。 ⚠ 易错点:别把「非零行 2 个」误数成 3 个——第 2 行消完是整行零,它还在表里但不再贡献维度;也别忘了核对自由度公式:秩 + 自由变量个数 = 未知数(列)个数。

行阶梯形与主元 阶梯形的每个非零行有一个主元,主元像台阶一样逐行右移,零行沉在底部;非零行数就是秩。 阶梯形:主元像台阶,一层比一层靠右 1 2 3 4 0 −1 −2 −3 0 0 0 0 主元(teal):2 个 非零行 2 行 → rank = 2 零行沉底,不数它 自由列(gold 第 3、4 列) 自由度 = 4 − 2 = 2 RREF 读列:col3 = −col1 + 2col2,col4 = −2col1 + 3col2
图 9-3例题 6 的阶梯形:主元逐行右移(1 → −1),零行沉底;非零行数 2 即秩,第 3、4 列是自由列,自由度 = 列数 − 秩 = 2。

工程应用:把「数主元」交给机器,把「读含义」留给自己

实际数据动辄上万行,手数主元不现实,一行调用 matrix_rank(A) 就出结果。但工程师读这份输出时心里要有两杆秤:其一,机器算的是数值秩——带容差的判断,传感器噪声的量级若与容差不匹配,结果可能「差之毫厘、谬以千里」;其二,秩的用途不是「报告一个数」而是「回答一个问题」——降维该留几个主成分、方程组是唯一/无穷/无解、模型有多少独立参数,都等这个数落地。机器算秩,人读秩:算力解决「是多少」,理解力解决「所以呢」。

辨析:保秩的是「等价变形」,不是所有操作

消元(行变换)保秩,但别的操作未必:删掉一行或一列,秩可能降(也可能不变——取决于删的是不是「冗余」);取子矩阵(抽几行几列组成新矩阵),秩最多不增、可能降;矩阵乘法秩只减不增(上节已证)。一句话:「等价变形」保秩是消元法的专利——它像压缩打包,全程不丢信息;而抽取、投影、复合都可能是「有损操作」。做数据清洗或模型简化时先问一句「这一步是等价变形还是有损变形」,能避免大量莫名其妙的丢维。

深化:手算求秩的「四步流水」与两个易错点

把算法固化成肌肉记忆:①定基准——写下矩阵,心里记住列数 n(秩的上限);②消元——只做行变换,主元从左到右、从上到下逐个立起,遇到全零行直接跳过它往下找;③数主元——非零行数即 rank;④验自由度——自由列 = 非主元列,个数应为 n − rank,对不上就回头查漏。易错点一:主元「不许换列」——行变换合法、列变换在求秩时不许用(除非单独记账,且本章不需要);易错点二:分数恐惧症——中途出现分数是正常现象(例:1/2 作主元完全合法),不要为了「保整数」偷偷改用列变换,那是犯规。流程 + 两条军规,手算求秩就再无悬念。

程序小注:NumPy 的 matrix_rank 底层走奇异值分解——把矩阵拆成一串「强度递减的奇异值」,再把「明显大于零」的个数数出来;默认容差由矩阵的最大奇异值、尺寸和机器浮点精度共同决定,所以同一份数据在噪声环境不同时,机器报出的秩可能波动(这正是「数值秩」与「数学秩」的差别)。实践中拿到 rank 结果,经验做法是顺手看一眼奇异值的衰减曲线:悬崖式衰减说明秩清晰可判,缓慢衰减则要警惕「秩不敏感」,此时结论别下太死。

收束:用开篇那副矩阵,把四条读法各走一遍。回头看 9.1 的 A = [[1,0,2],[0,1,3],[1,1,5]]:读独立列——第 3 列是 2·col1 + 3·col2,独立列 2 个;读独立行——第 3 行 = 第 1 行 + 第 2 行,独立行 2 个;读几何——三列张成一个二维平面;读算法——消元后非零行 2 个、主元 2 个。四个视角、同一答案 rank(A) = 2——这正是「不变量」的全部含义:换一个角度,不换答案。往后拿到任何矩阵,请习惯性地让四个视角在心里各报一次数;四个数对上了,你对它的理解就算落了地。

本章小结

  1. 秩 = 线性无关列(= 线性无关行)的最大个数。
  2. 几何上,秩 = 列空间的维数(张成线的维数)。
  3. 列秩 = 行秩,从行或列数都一样。
  4. 解判定:rank(A)=rank([A|b])=n → 唯一解;两者相等但 <n → 无穷解;不等 → 无解。
  5. 求秩:化行阶梯形,数主元。
  6. 方阵满秩四合一:rank=n ⇔ 列独立 ⇔ det≠0 ⇔ 可逆——第 7、8、9 章在此会师。
  7. 通解结构:亏秩有解时,通解 = 特解 + 零空间方向的全体组合;自由度 = n − rank(A)。
  8. 数值秩:浮点世界按容差判「小即零」,机器给秩、人读含义。

读完本章,你应该能……

思考题

1. rank([[1,2,3],[2,4,6]]) 是多少?为什么?

提示:三列共线、两行共线,独立列/行都只有 1 个,rank=1。

2. 为什么「列秩 = 行秩」?用「信息表」的直觉说一说。

提示:矩阵承载的独立信息总量固定,横看竖看都一样;消元不改变独立行数,而独立列数又等于独立行数。

3. 若 rank(A) < rank([A|b]),方程组 Ax=b 是什么情况?

提示:b 落在列空间外,无论怎么组合 A 的列都够不到 b,无解。

4. 满秩(rank=n)的 n×n 矩阵,行列式是否为 0?可逆吗?

提示:满秩 = 列线性无关 = det≠0 = 可逆。四者等价。

5. rank([[1,1],[2,2],[3,3]]) 是多少?

提示:两列分别是 (1,2,3) 与 (1,2,3)——完全相同的两列,独立方向只有 1 个,rank=1。行视角复核:三行 (1,1)、(2,2)、(3,3) 全挤在一条线上,独立行也只有 1 个。列秩=行秩,又应验一次。

6. 一个 4×4 矩阵 det=0,它的 rank 可能是哪些值?

提示:det=0 排除满秩,rank ∈ {0,1,2,3}。进一步若已知它有一个 3 阶子式非零,rank 恰为 3——「低一格满秩」的矩阵(rank 3,det 0)最常骗到人:只差一点点就满秩,但差这一点与差很多在「可逆与否」上同样致命。

7. 5×3 矩阵(5 行 3 列)的秩最大是多少?为什么?

提示:秩 ≤ min(行数, 列数) = 3。三列最多撑起三维,五行的独立行数又被列的方向数卡住(列秩=行秩)。所以「瘦高」矩阵天然不满「满」——它的秩天花板由列数决定;反之「矮胖」矩阵的天花板由行数决定。