矩阵方程 Ax=b 图解:解方程就是问 b 能不能由 A 的列拼出来
拿到一个代数题,我们通常先问"怎么算"。但矩阵方程 Ax=b 不是一道算术题,它是一句能在纸上画出来的提问。整篇笔记只回答一个问题:解 Ax=b 到底在问什么? 答案是 "b 能不能由 A 的列拼出来、能拼出几种"。这个答案一旦想明白,你会看见这个方程背着一张地图,本章、下一章所有内容都在这张地图上走。
我们从一个看似与线性代数无关的地方出发:配平化学方程式。
为什么配平化学方程式,会引出一个矩阵方程?
假设你面前有一场化学反应:乙烯(C₂H₄)与氧气(O₂)燃烧生成二氧化碳(CO₂)和水(H₂O)。化学家要你做的,是给每一种物质前面配上一个系数,让反应式两边的每种原子数量相等。这是一个必须"把未知数解出来"的问题,而它天生就是线性代数的形状。
一种物质一个未知数,一种元素一条等式
先设四种物质各一个系数:左边是 x₁·C₂H₄ 和 x₂·O₂,右边是 x₃·CO₂ 和 x₄·H₂O。守恒要求说的是"元素不能凭空出现"。数一数碳(C):每分子 C₂H₄ 含 2 个碳原子、每分子 CO₂ 含 1 个碳原子,守恒要求 2x₁ = x₃。氢(H)与氧(O)同理,各得一条等式:
$$2x_1 = x_3,\qquad 4x_1 = 2x_4,\qquad 2x_2 = 2x_3 + x_4$$
把系数整理进一个表,行是元素、列是物质,格子填"这种物质含这种元素几个原子",就得到所谓化学组成矩阵(composition matrix):
| 元素 | C₂H₄ | O₂ | CO₂ | H₂O |
|---|---|---|---|---|
| C | 2 | 0 | 1 | 0 |
| H | 4 | 0 | 0 | 2 |
| O | 0 | 2 | 2 | 1 |
把它写成矩阵 $A=\begin{bmatrix}2&0&1&0\4&0&0&2\0&2&2&1\end{bmatrix}$。要让"两边原子数相等"变成矩阵方程的样子,只需定一条符号约定:把产物移项到等号左边、系数取负号(本例即 CO₂ 与 H₂O 的系数记作负)。于是一个"求系数让原子守恒"的问题,就等价成了求让 $Ax=0$ 成立的向量 $x=[x_1,x_2,-x_3,-x_4]$。取 $x=[1,3,-2,-2]$ 时,A·x 的三个分量分别是 $2\cdot1-2=0$、$4\cdot1-2\cdot2=0$、$2\cdot3-2\cdot2-2=0$,恰好全为零,对应的配平式就是 1·C₂H₄ + 3·O₂ → 2·CO₂ + 2·H₂O。这就是"配平化学方程式会引出一个矩阵方程"的含义。chemnull
这里的真实痛点在于试凑。配平这一题,靠观察也许能找到一组(1·C₂H₄ + 3·O₂ → 2·CO₂ + 2·H₂O 就是一组),但试凑永远回答不了两个问题:还有没有别的配法?到底有几种? 而"解 Ax=0 到底问什么"恰恰就是把"还有没有、有几种"翻译成一套能系统判断的框架。canadatext
把配平化学方程式写成矩阵方程,这件事并非凭空发明。它的系统化做法常被追溯/引用到 L. R. Thorne 2010 年发表于 The Chemical Educator 的一篇奠基性论文(arXiv 编号 1110.4321);Thorne 本人并未宣称是首创这套做法的第一人。我们会在最后一章回来用线性代数的语言收口它。thorne
但是这套框架长什么样,现在还没法读。要读得懂 Ax=0,先得看懂"矩阵乘向量"到底在做什么。下一章我们补上这把钥匙。
A 乘 x 是什么?——把 A 的列缩放、再相加
在动笔算 Ax 之前,先想清楚它"意味着"什么。这里需要一个从初中就熟的坐标系来做比喻:在直角坐标系里,坐标 (3, −2) 的意思是"沿 x 轴方向走 3、沿 y 轴方向走 −2"。换句话说,一个坐标就是把两个方向的箭头各自缩放(乘一个数)再加起来。
线性组合:缩放两个向量再相加
把这个想法从"坐标"推广到"任意几个向量",定义就出现了。取两个向量 $v_1$、$v_2$,各自乘一个数字 $c_1$、$c_2$(允许负数或零),再把结果相加得到 $c_1v_1 + c_2v_2$。这种"缩放几个向量再相加"的操作,就叫做这些向量的一个线性组合(linear combination,线性组合)。eolabasis
光有能"组合"这个动作还不够。把这句话反过来问:给了一组向量,用它们的所有可能线性组合,能"到达"哪些点?张成(span) 就是指这组向量的所有线性组合能到达的点的集合,起点一律从原点出发。给定一组向量,它们的张成就是它们能拼出来的全部范围。ila
张成的形状很好画,它完全取决于这些向量"是不是在同一个方向上"。把常见的几种情形列成一张表:
| 向量集合 | 张成的形状 | 为什么 |
|---|---|---|
| 单个非零向量 | 过原点的一条直线 | 只沿一个方向伸缩 |
| 两个共线向量 | 仍只是同一条过原点的直线 | 第二个没带来新方向 |
| 两个不共线向量 | 整张平面 | 两个独立方向铺满一面 |
| 三个共面向量 | 仍只是那张平面 | 第三个躺在前两个张成的面里 |
| 三个不共面向量 | 整个空间 | 三个独立方向撑开全部 |
规律一句话:只有带来"新方向"的向量,才会把张成撑大。共线的、共面的,都只是给已有范围添倍数,张成不再变化。这个直觉是全篇最重要的地图,第 4 章和第 7 章都要回来用它。eolabasis
关键落点:Ax 就是把 x 的分量当缩放倍数,作用在各列上
现在把上面的话接回矩阵。设 $A=[a_1\ a_2\ \cdots\ a_n]$,即 A 的列分别是 $a_1,\dots,a_n$。那么 A 乘 x 的定义不是空降的,它就是:
$$Ax = x_1a_1 + x_2a_2 + \cdots + x_na_n$$
也就是说,把 A 的每一列想成坐标系的"去向",Ax 就是把 x 的分量当缩放倍数,作用在 A 的各列上再相加。这是一句看起来像死规定的定义,其实它只是把"缩放相加"这个直觉套在矩阵的每一列上。这也是 Gilbert Strang 在 MIT 18.06 课上反复强调的那句原话:"A 乘 x 是 A 各列的组合"。strang
所以看见一个矩阵乘法,别急着算,先问一句:"A 的列能组合到哪里去?" 这一问等价于"b 落在不落在 A 的列张成的范围里",而它正是后面第 4、7 章的钥匙。这一章先看清这张地图,解方程的道路就铺开了。
同一个方程组,三种写法、两种算法,解的同一个
有了"列的组合"这个视角,我们来看一道具体的 2×2 方程,它是线性代数里的经典名场面。这道题是:$2x-y=0$,$−x+2y=3$,一眼能看出解是 (1, 2)。但它怎么"看"出这个解,有两种截然不同的眼镜。
行图 vs 列图:同一道题的两副眼镜
行图(row picture):一次只看一行(一个方程)。$2x-y=0$ 在平面上是一条直线,$−x+2y=3$ 是另一条线,解就是两条线的交点。行图把你熟悉的"解方程组=找交点"直接搬过来。
列图(column picture):这次看矩阵的列。把方程改写,左边是 $x\cdot\binom{2}{-1} + y\cdot\binom{-1}{2}$,右边是 $b=\binom{0}{3}$。列图问的是:把第一列按 x 缩放、第二列按 y 缩放,能不能凑出 b?解 (1,2) 的意思是"第一列取 1 倍、第二列取 2 倍相加,正好到达 b"。strang
Strang 点破两者的分工:行图在 2×2 时很好用(两条线),可一旦到 3×3,"三个平面交于一点"就不那么清楚,到 4 维更是没法画。所以他更偏爱列图。而对我们要讨论的"有没有解"这个问题,列图天生更合适,后面会看到原因。strang
三种写法是同一件事
一个线性方程组可以用三种写法表达:线性方程组(一行一行的等式)、向量方程(左边写成列的线性组合等于 b)、以及矩阵方程 Ax=b。这三者在 Lay 教材 §1.4 里被整理成定理 3(PPT 标号):它们有完全相同的解集。换写法、换算法,都不改变方程本身,只是三副眼镜,其中列图这副最适合用来想"有没有解"。layila
两种算法:列组合 vs 行点积
同是一个 Ax,怎么算?第 2 章的"列组合视角"是理解意义的算法;另有一个"逐行点积"的手算规则:Ax 的第 i 个分量 = A 的第 i 行与 x 逐项相乘再求和。拿一个具体例子把两条路算同一个东西:
| Ax | 列组合展开 | 逐行点积 |
|---|---|---|
| $\begin{bmatrix}1&2&3\end{bmatrix}\begin{bmatrix}-2\4\3\end{bmatrix}$ | $(-2)\begin{bmatrix}1\end{bmatrix}+4\begin{bmatrix}2\end{bmatrix}+3\begin{bmatrix}3\end{bmatrix}$ | $1(-2)+2(4)+3(3)=15$ |
两条路得到的都是 15。列组合让你看见"缩放了什么",行点积让你能快速落纸面。canadatext
顺带认识两个小工具。单位矩阵(identity matrix,单位阵) 是主对角线上全为 1、其余全为 0 的方阵,记作 I,它满足最基本的性质 Ix = x(乘上它向量不变)。此外 Ax 还有一条线性性质:$A(u+v)=Au+Av$、$A(cu)=c(Au)$(Lay 教材 §1.4、PPT 标号定理 5),可以从"线性组合"的定义直接认出来,这里不展开证明。canadatext
这一章把语言的工具备齐了:三种写法、两种算法、列图这副眼镜。但还有一个关键问题没回答。我们问"b 能不能被列拼出来",可列能拼到的范围到底有多大?有没有 b 是无论如何凑不出来的?这正是下一章的提问。
Ax=b 什么时候有解?——看 b 落不落在 A 的列张成的范围里
"有没有解"这个问题,可以用两个等价的问法来问。几何版:b 能被 A 的列向量拼出来吗?也就是 b 落不落在 A 的列张成的那个范围(直线/平面/整个空间)里。代数版:把增广矩阵 $[A\mid b]$ 行化简之后,会不会冒出一行 $0$=非零(也就是 $b$ 列成了主元列、捅出矛盾)?
这两个问法说的是同一件事:Ax=b 有解,当且仅当 b 是 A 各列的线性组合,等价地说,b 落在 A 的列张成里。ila
两种情形看得明明白白
拿第 2 章的二维地图来比。假如 A 的列是平面里两个不共线的向量,它们的张成是整张平面。此时随便给一个 b,一定落在平面里,于是 对任何 b 都有解。反过来,如果 A 只有一列(或两列共线),它的张成只是一条过原点的直线,那么一个不在直线上的 b 就落不进张成,那便无解。
| b 的位置 | 几何含义 | 结论 |
|---|---|---|
| b 在列张成内 | b 能被各列缩放相加凑出 | 有解 |
| b 在列张成外 | 怎么缩放凑都到不了 | 无解 |
这就是"有没有解"的地图直觉。代数版的检查动作是看主元:把 A 行化简后,每一行都必须有主元(pivot,主元),才能保证对每个 b 都有解(这是 Lay 教材 §1.4、PPT 标号定理 4 的四种等价命题之一,这里用文字转述)。ila
行化简补给站
要判断"每行有没有主元",需要行化简这套动作。它是本讲的前置知识(Lay 教材 §1.2–1.3),零基础读者不熟,这里补一句。所谓行化简,就是把增广矩阵(把 b 拼在 A 右边)通过行运算逐步整理成阶梯形,直到最简单形。整理后,哪些列含有主元,就称主元列;其余不含主元的列,对应自由变量(free variable,自由变量),也就是"可以随便取值"的未知数。用一个数值例感受一下:
$$A=\begin{bmatrix}1&2&3\1&5&9\2&4&6\end{bmatrix}\ \rightarrow\ \text{行化简}\ \rightarrow\ \begin{bmatrix}1&0&-1\0&1&2\0&0&0\end{bmatrix}$$
这里有两个主元(前两列),故 rank=2,第三列没有主元,是自由列。canadatext
再把"无解"钉死:如果行化简后冒出一行 "0 = 非零"(比如 0=2),那这个方程无解,几何上就是 b 落在了列张成之外,够不着。
但到这里又冒出一个新问题:就算 b 落在张成里、方程有解,解也可能不止一个。那解的全集到底长什么样?这要钻进解集内部,看它的形状。下一章我们从齐次方程 Ax=0 看起。
Ax=0 的解:自由变量让解从一点长成过原点的一条线(或一张面)
先看等号右边是零的情形,即齐次方程 Ax=0。它永远有一个解:x=0(全零向量),这叫平凡解(trivial solution,平凡解)。真正的问题是:除了零解,还有没有别的非平凡解?
判断方法很干净:Ax=0 有非平凡解,当且仅当这个方程里有自由变量。所谓自由变量,就是行化简后那些非主元列对应的未知数,它可以取任意值,每取一个值就给出一个新解。ila
参数向量形式:怎么把"一整族解"写出来
要看见"解的全体长什么样",需要一个命令式写法叫参数向量形式(parametric vector form)。拿一个具体方程走一遍:$x+4y+3z=0$ 和 $3x+12y+9z=0$。行化简后第二行全为零,只有 x 是主元,y 和 z 都是自由变量。把自由变量移到等式右边,用它们表出主元变量,得到 x=−4y−3z。于是通解可以写成:
$$\begin{bmatrix}x\y\z\end{bmatrix} = y\begin{bmatrix}-4\1\0\end{bmatrix} + z\begin{bmatrix}-3\0\1\end{bmatrix},\qquad \text{记 } y=s,\ z=t$$
$$x = s\begin{bmatrix}-4\1\0\end{bmatrix} + t\begin{bmatrix}-3\0\1\end{bmatrix}$$
这个式子的几何含义一目了然:两个自由变量 s、t,把两个固定向量各自伸缩再相加,扫过一整张过原点的平面。canadatext
这一"四步拆参数"其实就是前面「行化简补给站」那个行化简的自然延伸。我们把它连起来看:
拆完的固定向量,就是能生成整条线/整张面方向的"骨架"。ila
自由变量个数决定解的几何
规律很干净:1 个自由变量 → 过原点的一条直线(比如 x=t·v);2 个自由变量 → 过原点的一张平面(比如 x=s·u+t·v)。这是因为第 2 章说过:张成是过原点的线或面。齐次解集恰恰就是从原点长出来的线或面。这也是 Strang 在课堂上说的"零空间是若干特殊解的线性组合",含义与此相同。strang
特别要注意"过原点"三个字,它是齐次方程的标志。回到开头的化学配平:一组配平系数正是 Ax=0 的一个非平凡解,等我们讲完整套语言就明白为什么它常常不止一种。
但现实问题很少是右边全为零的。如果右边换成某个非零的 b(即非齐次方程 Ax=b),解的全体又是什么形状?这就是下一章。带上"过原点的线或面"这张图,答案只差一步平移。
Ax=b 的解:把齐次解集整体平移——一个特解 p 加上齐次的方向
上一章我们看到,Ax=0 的解集是过原点的一条线或一张面。现在右边换成非零向量 b,即非齐次方程 Ax=b(假设它确实有解,即前面说的 b 落在列张成里)。它的解集不是另起炉灶,而是把齐次那条线(或面)整体平移到一个新位置。
完整解 = 一个特解 + 任意齐次解
这一结论在 Lay 教材 §1.5 里是定理 6(PPT 标号):若 Ax=b 相容,且 p 是它的一个特解,那么 Ax=b 的所有解都形如
$$x = p + v_h$$
其中 $v_h$ 是齐次方程 Ax=0 的任意解。Strang 在课堂上的说法更接地气:"完整解 = 一个特解 + 零空间里的任意向量",是同一件事的两个版本。strangila
几何上,这条线(或面)经过了 p,但不过原点,并且与过原点的齐次解集互相平行。这里可以借一个中学的对照,很多人熟悉且确实对应得上:过原点的直线像 $y=kx$,平移后像 $y=kx+b$。这里的 b(轴向截距)就扮演了"把整条线抬起来"的特解 p 的角色:$y=kx$ 的所有点加上偏移 p=(0,b),就得到 $y=kx+b$。对应的映射关系讲到这里为止,不用再展开。
拿一个 3×3 的具体例子走一遍。取 $A=\begin{bmatrix}2&-1&0\-1&2&-1\0&-3&4\end{bmatrix}$,$b=\begin{bmatrix}0\-1\4\end{bmatrix}$。先找一个特解:这一例里 A 的第三列恰好等于 b,所以取 p=(0,0,1) 就是一个现成的特解。再叠加上齐次解的方向,就得到 Ax=b 的全解。strang
把"齐次"与"非齐次"并排看,差别只在要不要平移:
| 情形 | 解的形式 | 几何位置 |
|---|---|---|
| 齐次 Ax=0 | x = s·u + t·v | 过原点 |
| 非齐次 Ax=b | x = p + s·u + t·v | 平移过 p、不过原点 |
所以解的形状从齐次解集就已经完全决定了,非齐次只是把它搬到 p 的位置。写参数向量形式的四步(行化简 → 主元变量用自由变量表出 → 写成向量 → 按自由变量拆参数)与此前完全一致,唯一的差别是多了那个特解 p。ila
现在自然生出最后一个问题:为什么有的方程交出唯一一个解,有的却交出整整一条线(或一张面)?这跟 A 的列是不是"各干各的、互不拖累"有关。这就是全篇的收口章。
为什么解常不止一种?——列的冗余:线性相关与线性无关
一路走下来,我们反复遇到同一个现象:有时解是唯一一个点,有时是一整条线。差别在哪?答案藏在 A 的列之间的关系里,它被总结成线性相关 / 线性无关这两个词。
从几何直觉到正式定义
先给直觉。考虑三个向量:如果第三个向量恰好躺在前两个张成的那个面或那条线里,那么它没有带来新方向,是个"多余"的向量,我们说这三个向量线性相关;反之,如果每个向量都带来新方向、把张成撑大,就称它们线性无关。eolabasis
落成正式定义(Lay 教材 §1.7):一组向量 ${v_1,\dots,v_p}$ 线性无关,当且仅当方程 $c_1v_1+\cdots+c_pv_p=0$ 只有平凡解(所有 c 全为零);如果存在一组不全为零的 c 使该式成立,则线性相关。ila
把"向量集合"换成"矩阵 A 的列",定义就自动升级为:A 的列线性无关,当且仅当 Ax=0 只有平凡解。判定动作就是解一次 Ax=0,这正好把我们第 5 章的东西整个接上了。ila
三条快速判据可以省很多力气,每一条都配着一句几何理由:
| 判据 | 情形 | 几何理由 |
|---|---|---|
| 两个向量互不为倍数 | 无关 | 一个不是另一个的伸缩版,方向不同 |
| 向量个数多于维数(p>n) | 必相关 | 方向不够多,必有冗余(Lay §1.7 定理 8,PPT 标号) |
| 集合含零向量 | 必相关 | 零向量躺在任何向量张成里(Lay §1.7 定理 9,PPT 标号) |
用数值例找找手感。取 $R^2$ 里的三个向量 ${[1,4]^T,\ [2,3]^T,\ [3,2]^T}$。个数 3 大于维数 2,按判据必然相关。果然可以验证 $(-1)[1,4]^T + (2)[2,3]^T = [3,2]^T$,第三个向量恰好落在前两个的张成中。canadatext
把判定顺序串起来,就成了一张小流程图:
收口:这解释了为什么配平常常不止一种
现在回看第一章的化学配平。一组配平系数就是 Ax=0 的一个非平凡解;而"有几个自由变量",正决定了"有几族本质不同的配平"。thorne
| 配平情形 | 自由变量个数 | 含义 |
|---|---|---|
| 乙烯燃烧 C₂H₄+O₂→CO₂+H₂O | 1 | 恰一族本质配平(可整体乘倍数) |
| 复合反应 CO+CO₂+H₂→CH₄+H₂O | ≥2 | 可拆成几族独立子反应,任意倍数叠加仍配平 |
| 超定反应(如 FeS₂+HNO₃) | 0 | 配不平,需补物种(如 H₂O)才能配 |
乙烯燃烧那题,组成矩阵是 3×4、秩 3,故自由变量数 = 4−3 = 1,恰好一族本职配平,唯一变化是整体乘倍数。而复合型反应可拆成多族独立的子反应,这些"独立子反应"在线性代数里正是线性无关的齐次解;多族配平能线性叠加,正是因为 A 的列之间有冗余、自由变量不止一个。chemnull
把全篇连成一句话:一个矩阵方程的解存不存在、长成什么形状、有几种,都被 A 的列"能不能独立撑开空间"写死。列之间一旦有冗余(一个能被其余的拼出来),解就从"唯一"变成"一整族";每一列都带来新方向,解就唯一。线性无关与否,决定了解的多与少。
读到这里,你应该已经能:说明线性方程组、向量方程、矩阵方程三种写法是同一回事,并用列组合与行点积两种算法手算小规模的 Ax;把"Ax=b 有解"翻译成"b 落在 A 的列张成里",用"每行有主元"作代数验证;把齐次 Ax=0 与非齐次 Ax=b 的解集写成参数向量形式,并说出它们是过原点的线/面及其沿特解 p 的平移;再用"c₁v₁+…+cₚvₚ=0 是否只有平凡解"判断一组向量的线性无关性,并解释了化学配平系数为何有时恰一族、有时多族可叠加。若想趁热巩固,可去 Khan Academy 的线性代数课程看线性组合与 span、线性无关、零空间对应的短视频自查,其向量数乘与相加小节配有可跟练的交互练习。khan
参考文献
本专题引用的核心资料如下,建议深入学习时阅读原文:
- Lay《Linear Algebra and Its Applications》6th edition(Pearson) — https://www.pearson.com/en-us/subject-catalog/p/linear-algebra-and-its-applications/P200000006235
- MIT OCW 18.06 Linear Algebra(Gilbert Strang) — https://ocw.mit.edu/courses/18-06-linear-algebra-spring-2010/
- 3Blue1Brown:Linear combinations, span, and basis vectors — https://www.3blue1brown.com/lessons/span/
- Interactive Linear Algebra(Margalit & Rabinoff, Georgia Tech) — https://textbooks.math.gatech.edu/ila/
- Linear Algebra and Its Application(Amira Alkeswani, Cañada College, LibreTexts) — https://math.libretexts.org/Courses/Canada_College/Linear_Algebra_and_Its_Application
- The null space's insight into chemical balance(Dylan Holmes) — http://logical.ai/chemistry/html/chem-nullspace.html
- An Innovative Approach to Balancing Chemical-Reaction Equations(L. R. Thorne) — arXiv:1110.4321
- Khan Academy — Linear Algebra — https://www.khanacademy.org/math/linear-algebra