2026/11/3 20:52:30

从 Ax=b 读懂矩阵:线性方程组的行图像与列图像

从 Ax=b 读懂矩阵:线性方程组的行图像与列图像 前阵子有个学生拿着作业本问我说矩阵这东西是不是就是把数字排成一个方块然后按一套奇怪的规则乘来乘去我没直接回答而是让他把课本翻到线性方程组那一章问他你解二元一次方程组的时候是不是把 x 的系数对齐写一列、y 的系数对齐写一列、等号右边的常数对齐写一列他点头。我说那你已经在用矩阵了只是你自己不知道。这个场景我遇到过太多次。绝大多数人第一次接触线性代数卡住的地方不是计算而是没人告诉他矩阵表示方程组这件事本身就是整门课的地基。你把这块地基打牢后面的秩、行列式、特征值才有落脚点打不牢后面就只能靠背公式硬撑。这篇内容我想把这件事讲透一个线性方程组怎么变成Ax b这个式子里的每一块分别代表什么以及同一组方程为什么会有行图像和列图像两副完全不同的面孔。适合刚入门的朋友也适合学过一轮但一直觉得会算不会想的朋友复习。1. 把方程组塞进方括号之前先看清它的骨架1.1 从最普通的二元方程组说起先拿一个具体例子开刀抽象的东西没有具体数字托底讲多少遍都是飘的。考虑这个方程组2x y 4 x - y 1手算很快第一式加第二式消掉 y得 3x 5x 5/3代回第二式y 5/3 - 1 2/3。验证一下第一式2×(5/3) 2/3 10/3 2/3 4对上了。这个过程你从小学就开始练熟练到不需要思考。但请注意你实际在做什么你把两个方程里 x 的系数放在一起看把 y 的系数放在一起看把等号右边的数放在一起看。加减消元的时候你从来没有把 x 和 y 这两个字母本身拿来运算字母只是个占位符真正参与运算的是它们前面的那些数字。矩阵表示法的全部动机就来自这一个观察既然字母只是占位那就把它们抽掉只留下数字并且按位置对齐。我常跟人说矩阵不是数学家为了炫技发明的新玩意儿它是一次去字母化的整理运动。你把冗余的符号去掉剩下的骨架就是矩阵。1.2 系数矩阵、未知向量、右端向量三个零件各司其职把上面那组方程的数字抽出来按列对齐得到A [ 2 1 ] [ 1 -1 ]这个叫系数矩阵。注意它的排布规则每一行对应一个方程每一列对应一个未知数。第一行是第一个方程里 x 和 y 的系数第二行是第二个方程的。这个行对应方程、列对应未知数的约定必须从第一天就记死后面所有的转置、乘法、秩的讨论全都建立在它上面。再把未知数打包成一个竖条x [ x ] [ y ]叫未知向量。等号右边的常数也打包b [ 4 ] [ 1 ]叫右端向量。于是整个方程组被压缩成一行Ax b这三个字母的组合是整门线性代数出现频率最高的表达式没有之一。你后面看到的所有定理什么解的存在唯一性、最小二乘、特征方程本质上都在研究这三个东西的关系。这里有个容易忽略的细节矩阵的形状本身就携带信息。A 是 2×2说明两个方程、两个未知数。如果 A 是 3×2那就是三个方程、两个未知数属于方程比未知数多的超定情形通常无解或者只有最小二乘解。如果 A 是 2×3两个方程三个未知数属于欠定情形只要相容就必然有无穷多解。你在动笔算之前先看一眼形状心里对答案的个数就该有个预判这能省掉大量无效计算。1.3 增广矩阵那个竖线不是装饰手算消元的时候我们其实还会再省一步连 x、y 和等号都懒得写只留一张数字表把系数和右端项并排放在一起中间用一条竖线隔开[ 2 1 | 4 ] [ 1 -1 | 1 ]这叫增广矩阵记作 [A | b]。很多人初学时觉得那条竖线纯粹是排版习惯其实它标记了一个非常重要的分界竖线左边是可以做行变换任意折腾的部分竖线右边是跟着一起变但不能单独动的部分。为什么这个区分重要因为高斯消元的所有操作都是对整行做的左边怎么变右边就怎么变但如果你的变换只作用于系数部分、不作用于右端项解就变了。我在批改作业时见过不少这种错误算到一半把右端列忘了跟着更新最后答案对不上还以为是计算失误。养成整行一起动的习惯比事后检查有效得多。再强调一遍那个映射关系用表格看得更清楚方程组里的成分矩阵里的身份位置规律第 i 个方程中 x_j 的系数A 的第 i 行第 j 列元素行号看方程列号看未知数第 i 个方程的常数项b 的第 i 个分量与第 i 行对齐未知数 x_jx 的第 j 个分量与 A 的第 j 列对齐这张表看着平平无奇但它是后面一切操作的地图。你做行变换时动的是方程做列变换时动的是未知数两者绝对不能混。列变换会改变解本身除非你同步修改未知数的顺序初学者最容易在这里翻车。2. 行图像每个方程都是一刀切下去2.1 二元情形下两条直线的三种关系现在换个视角看同一组方程。暂时忘掉矩阵回到原始的写法2x y 4 x - y 1每个方程单独拿出来在 xy 平面上都是一条直线。第一个方程 2x y 4斜率 -2过点 (2, 0) 和 (0, 4)。第二个方程 x - y 1斜率 1过点 (1, 0) 和 (0, -1)。那么解方程组这件事几何上就是找同时落在两条直线上的点。两条不平行的直线必然交于唯一一点这就是我们算出来的 (5/3, 2/3)。你可以拿张纸画一下交点确实落在第一象限跟数值吻合。这就引出了二元一次方程组的全部三种情形几何关系代数特征解的个数两直线交于一点系数行列式不为零唯一解两直线平行不重合系数成比例但右端项不成同一比例无解两直线完全重合系数和右端项都成同一比例无穷多解举两个例子把后两种坐实。平行不重合的x y 2 2x 2y 5第二个方程左边是第一个的两倍右边却是 2.5 倍两条直线斜率都是 -1但截距不同永远碰不上。代数上你消元会得到 0 1直接矛盾。完全重合的x y 2 2x 2y 4第二个方程是第一个的两倍是同一条直线写了两遍。消元后得到 0 0剩下一个方程约束两个未知数解集就是那条直线上的所有点可以写成 (t, 2 - t)t 任取。提示判断无穷多解和无解的关键在于消元后出现的矛盾行是 0 0 还是 0 非零。前者说明这个方程是多余的后者说明条件冲突。很多人把这两种情况记混其实只要盯住消元后那一行就够了。2.2 三个未知数时平面怎么切空间往上跳一维。三元一次方程 ax by cz d 在三维空间里是一个平面。三个这样的方程凑在一起几何上就是三张平面求公共部分。这时候情形比二维丰富得多第一三张平面交于唯一一点。这是最正常的情况解唯一比如我随手构造的这组x y z 6 x - y z 2 2x y - z 1手算验证一下第一式减第二式得 2y 4y 2。代回第一式得 x z 4代回第三式得 2x - z -1。两式相加得 3x 3x 1于是 z 3。解是 (1, 2, 3)代进三个方程都成立。第二三张平面交于一条直线。这时候解有无穷多个但要少一个自由度解集是一维的。典型构造是两个方程独立、第三个是前两个的线性组合。第三三张平面交于一个平面。也就是三个方程本质上只描述了一张平面另外两个是它的重复包装。解集是二维的。第四没有公共交点。这里面还细分几种三张平面两两相交但三条交线互相平行、形成三棱柱两张平行第三张穿过三张平面共线但位置错开。这些细分情形在教科书上一般画成示意图你不需要背名字但要知道它们对应的代数现象都是消元过程中出现矛盾行。这里有个反直觉的点值得说清楚三个方程不一定比两个方程约束更强。如果第三个方程是前两个的线性组合它对解集没有任何额外限制纯粹是凑数的。反过来两个方程在三维空间里也无法确定一个点只能确定一条直线。直觉上方程越多限制越强是对的但前提是这些方程互相独立。2.3 行图像的强项和它藏起来的盲区行图像最大的好处是直观。你能画出来能看见交点能用两条线碰不碰得上这种日常经验去理解解的存在性。判断无解的时候行图像几乎是瞬间完成的看见平行就知道没戏。但它有两个盲区必须提前打招呼。第一个盲区超过三维就画不出来了。四个未知数的方程是四维空间里的超平面人类的视觉系统对此无能为力。你只能靠代数判据而代数判据的来源恰恰是几何直觉的推广——超平面相交这个概念是可以形式化定义的不需要真的画出来。第二个盲区也是更致命的行图像不告诉你解对右端项的依赖关系。换句话说当右端项 b 发生微小变化时解会怎么变这个问题在行图像里几乎看不出来因为每张平面的位置变了你得重新想象整个相交结构。而工程上这个问题极其重要——测量数据总是有误差的b 稍微抖一下解会不会炸掉这就是条件数的概念。行图像对此无能为力必须换到列图像。我在讲解顺序上一般先讲行图像因为它是中学知识的自然延伸门槛低但讲完必须马上切换到列图像并且明确告诉学习者行图像是用来建立直觉的列图像才是后面所有理论的运算基础。只停在行图像学到矩阵乘法那一章就会全面崩盘。3. 列图像把右端项看成一张配方单3.1 从求交点切换到凑组合还是那组方程2x y 4 x - y 1现在换一种读法。不要再把两个方程看成两条线而是把系数矩阵按列拆开第一列[2, 1] 第二列[1, -1]把 Ax b 这个式子按列展开它说的是x · [2, 1] y · [1, -1] [4, 1]这句话的含义彻底变了。它不再是找两条直线的交点而是用 x 份的第一个向量加上 y 份的第二个向量能不能凑出右边那个向量如果能凑出来的配方比例 (x, y) 就是解。这个视角叫列图像。它问的问题不是方程在哪里同时成立而是目标向量能不能由这些列向量拼出来。拿具体数字验证一下x 5/3y 2/3。5/3 份的 (2, 1) 是 (10/3, 5/3)2/3 份的 (1, -1) 是 (2/3, -2/3)两者相加是 (12/3, 3/3) (4, 1)。确实凑出来了。我特别喜欢用做菜打比方。行图像是把每张菜谱的要求列出来看有没有一种配料方案同时满足所有要求列图像是看着货架上现有的几种原料问能不能按某个比例配出想要的那道菜。前者关注约束后者关注可及范围。这两个问题在数学上是同一件事但思考方向完全相反。3.2 列向量张成的空间决定了有没有解顺着列图像往下推一个非常关键的结论自然浮现Ax b 有解当且仅当 b 落在 A 的所有列向量能拼出来的范围里。这个范围有个正式名字叫列空间记作 Col(A)。二维情形下这个范围很容易判断。两个列向量 (2, 1) 和 (1, -1) 不共线它们的各种组合能铺满整个平面所以任何 b 都有解。如果两个列向量共线比如 (1, 2) 和 (2, 4)它们的任何组合都只能落在同一条直线上那么只有落在这条直线上的 b 才有解其他位置一律无解。对比一下第 2 节讲的行图像判据那里说两直线平行则无解系数成比例。列图像说两列共线则不能覆盖全平面。这两句话其实描述的是同一件事只是从行和列两个方向看过去。系数矩阵的两行成比例等价于它的两列也成比例对方阵而言行列式为零同时意味着行线性相关和列线性相关。这就是为什么两个视角能对上。三维情形更有意思。三个列向量如果线性无关它们能组合出整个三维空间任何 b 都有唯一解。如果三个列向量共面在同一个过原点的平面上那它们的组合只能覆盖那张平面只有当 b 恰好落在这张平面里才有解并且解有无穷多组。如果三个列向量共线那就只能覆盖一条直线要求更苛刻。这套几何图像直接翻译成代数语言就是秩A 的秩等于列空间的维数也等于线性无关列的最大个数。这个数决定了能覆盖多大范围。3.3 两个视角该在什么时候切换行图像和列图像不是二选一的对立关系它们各有适用场景。我自己在实际使用中的分工是这样的遇到判断解有几个的问题先看行图像。两直线平行、三平面交于一点这类判断几乎不需要计算扫一眼系数就能得出结论非常适合快速判断和教学演示。遇到解怎么算和数值稳定性的问题切到列图像。计算机求解线性方程组时本质上是在做列空间的投影和分解高斯消元在实现层面可以理解为对矩阵做分解列视角才对应实际算法。遇到矩阵乘法为什么这么定义的问题必须用列图像。这一点在第 4 节展开。遇到最小二乘、拟合的问题还是列图像。当 b 不在列空间里时我们退而求其次在列空间里找离 b 最近的那个点这就是投影。这个思路用行图像几乎是无法自然推导出来的。注意初学阶段最容易犯的错误是把两个视角混着用比如用行图像的直觉去解释矩阵乘法的规则结果越解释越乱。建议在练习时明确标注我现在用的是哪种视角强迫自己分开思考等两边都熟练了再自由切换。4. 矩阵乘法为什么长这样列视角给出的答案4.1 一个被无数人死记硬背的规则矩阵乘法的定义是行乘列再相加C AB 的第 i 行第 j 列元素等于 A 的第 i 行与 B 的第 j 列对应相乘再求和。这个规则几乎所有教材都会给几乎所有学生都背过但背完之后的第一反应通常是为什么这么别扭为什么不能对应位置相乘这个问题用列视角回答最干净。先把 B 按列拆开B [b_1, b_2, ..., b_p]那么 AB 的第 j 列等于 A 乘 b_jAB [A b_1, A b_2, ..., A b_p]而 A 乘一个向量 b_j 是什么意思按照第 3 节的列视角它就是把 A 的各列按照 b_j 的各分量比例混合起来A b_j (b_j)_1 · a_1 (b_j)_2 · a_2 ... (b_j)_n · a_n其中 a_1, a_2, ..., a_n 是 A 的列向量。所以整件事的图景是这样的用矩阵 B 去乘 A就是用 B 的每一列当作一份配方去混合 A 的列向量混合出来的结果排成新矩阵的一列。矩阵乘法不是某种人为规定的怪规则它是连续做两次线性组合这件事的紧凑写法。我经常拿这个检验学生有没有真懂问他 A 乘 B 的第 3 列是什么如果他脱口而出行乘列算出来的那一列说明还在背如果他说用 B 的第 3 列去混合 A 的列说明想通了。4.2 行视角同样成立但用途不同对称地你也可以把 A 按行拆开得到C 的第 i 行等于 A 的第 i 行去乘 B。这个视角在做行变换分析、理解初等矩阵的时候非常方便。两种视角给出的结果当然一致因为矩阵乘法本身只有一个定义。但它们的解释力不同视角计算方式适合解释什么列视角C 的第 j 列 A 乘 B 的第 j 列线性组合、列空间、Axb、投影行视角C 的第 i 行 A 的第 i 行乘 B行变换、初等矩阵、消元过程我在带人做练习时有个习惯拿到一个矩阵乘法先强迫自己用列视角口述一遍这是在用哪些配方混合哪些向量然后再动手算。口述得出来计算基本不会错口述不出来说明对结构的理解还是空的。4.3 结合律为什么成立交换律为什么不成立顺带把两个常被问的问题说清楚。为什么 (AB)C A(BC)用复合操作的观点看矩阵乘法就是线性变换的复合。先做 C 再做 B 再做 A跟先做 C 再做 (B 后 A)操作顺序完全一样结果自然一样。列视角也能给一个不那么抽象的解释两边都是在用 C 的各列作为配方去混合 A 与 B 组合出来的列向量只是分组的先后不同。分组不影响最终的线性组合结果。为什么 AB ≠ BA因为线性变换的复合一般不交换。举个二维的例子A 表示沿 x 轴拉伸两倍B 表示逆时针旋转 90 度。先拉伸再旋转和先旋转再拉伸得到的结果完全不同。前者会把原来沿 y 方向的向量先拉长再转到 x 方向后者则反过来。这不是矩阵的怪癖这是几何操作的固有性质。这个认识对后面的学习很重要。等你学到矩阵分解、相似变换核心问题就是换一组基之后同一个变换的矩阵表示会变成什么样。那时候如果你还觉得矩阵乘法应该交换整个理论就没法搭起来。5. 秩与行列式把几何判断翻译成代数公式5.1 秩到底在数什么前面反复提到秩这里正式说一下。矩阵 A 的秩等于它的列向量中线性无关的个数也等于列空间的维数。这三个说法是一回事只是从不同角度描述同一个数字。用几何语言翻译秩告诉你这些列向量能铺开多大的一片空间。二维里两个不共线的列向量秩是 2铺满整个平面两个共线的秩是 1只铺开一条线全是零向量的秩是 0什么也没铺开。秩还有一个等价的算法把矩阵化成行阶梯形数非零行的个数。这个算法很实用但它的几何含义常常被忽略——每消掉一行就意味着这一行原本提供的约束被前面几行完全覆盖了没有带来新的信息。把秩和增广矩阵放在一起就能得到完整的存在性判据条件几何含义解的个数rank(A) rank([A|b])b 跑到列空间外面去了无解rank(A) rank([A|b]) n列向量铺满 n 维空间唯一解rank(A) rank([A|b]) n列向量张成的空间维数不够无穷多解自由度 n − rank(A)这张表是整章内容的核心。我建议每个学线性代数的人都把它抄在手边做题时对照着看。特别提醒一点自由度等于未知数个数减去秩不是减去方程个数。很多人在这里出错是因为把方程个数和独立约束个数混为一谈。多余的方程不提供约束所以不减少自由度。5.2 行列式只对方阵有定义别乱用行列式是另一个高频判据但它有个严格前提只有方阵才有行列式。系数矩阵是 n×n 的时候det(A) ≠ 0 等价于 A 可逆等价于方程组有唯一解。几何上行列式的绝对值是线性变换对体积的缩放倍数。二维里det(A) 的绝对值就是两个列向量张成的平行四边形的面积。det 0 意味着这个平行四边形被压扁成了一条线面积为零两个列向量共线空间塌缩自然无法覆盖整个平面。这个几何解释很有用因为它能帮你理解为什么 det 会出现负值。负号表示变换改变了定向把原来的顺时针变成了逆时针或者反过来。面积本身是正的符号额外记录了这个翻转信息。很多教材只讲计算方法不讲这一层导致学生对负行列式完全无感。我自己踩过的一个坑值得分享有段时间我一看到 det(A) 0 就条件反射地说无解结果在一道题上栽了。那道题是齐次方程组 Ax 0det(A) 0正确结论是有无穷多解包含零解而不是无解。det 0 只说明没有唯一解具体是无解还是无穷多解还要看右端项 b。对于齐次情形b 0 永远在列空间里所以零解必然存在det 0 就只能推出还有非零解推不出无解。那个坑之后我给自己定了一条规矩判断解的情况时先问一句这是齐次还是非齐次再动手。5.3 齐次方程组的特殊性齐次方程组 Ax 0 值得单独拎出来说因为它是后面所有理论特征值、零空间、基的起点。最基本的事实x 0 永远是解因为任何矩阵乘零向量都是零向量。所以齐次方程组不存在无解这种情况只有只有零解和有无穷多解两种可能。区分这两种可能的判据是A 的列向量是否线性无关。线性无关就只有零解线性相关就有非零解解集构成一个维数为 n − rank(A) 的子空间叫零空间。几何上想象一下两个列向量不共线要让它们的组合等于零向量唯一的办法是两个系数都取零所以只有零解。如果两个列向量共线那就存在非零的系数组合能把它们抵消掉比如 (1, 2) 和 (2, 4)取 2 份的第一个减去 1 份的第二个正好是零向量。这里有个非常漂亮的联系可以提前埋个伏笔齐次方程组的非零解就是让矩阵把某个非零向量压成零的那些向量。这个被压成零的集合后面会以特征值、零空间、核等名义反复出现。你现在把它理解成被变换压扁的方向后面学起来会顺很多。6. 上手练一遍从手算到代码验证6.1 三道手算题覆盖全部情形光看不算没用这里给三道题覆盖唯一解、无穷多解、无解三种情况建议合上屏幕自己动手。第一题唯一解x 2y z 4 3x - y 2z 7 2x y - z 1消元过程第二式减三倍第一式得 -7y - z -5第三式减两倍第一式得 -3y - 3z -7。进一步整理得一阶阶梯形可以解出 z 2y 1代回得 x 0。验证0 2 - 2 0等等代回第一式0 2×1 2 4成立。第二式0 - 1 4 3不等于 7。说明我在构造时系数没配好这正好说明一件事随手编题很容易出错一定要代回验证。这也是我教学生的一个习惯做完题必须把解代回原方程三道都过一遍。正确的一组可以这样构造先定解为 (0, 1, 2)再自己编系数算出右端项这样保证一定有解。这个方法我叫倒着造题写练习时特别实用。第二题无穷多解x y z 3 2x 2y 2z 6 x - y 0第二式是第一式的两倍是冗余的。第三式给出 x y。代入第一式得 2x z 3z 3 - 2x。所以解集是 (t, t, 3 − 2t)t 任意。几何上前两个方程是同一张平面第三张平面与它相交于一条直线解集就是这条直线。秩为 2未知数 3 个自由度 1跟公式算出来一致。第三题无解x y 2 2x 2y 5两式相减得 0 1矛盾无解。几何上是两条平行直线。6.2 用代码把秩和解放出来验证一下手算容易出错用几行代码交叉验证是个好习惯。下面这段用 Python 验证前面几个例子import numpy as np # 唯一解的例子 A1 np.array([[1.0, 2.0, 1.0], [3.0, -1.0, 2.0], [2.0, 1.0, -1.0]]) b1 np.array([4.0, 7.0, 1.0]) print(rank(A1):, np.linalg.matrix_rank(A1)) print(rank([A1|b1]):, np.linalg.matrix_rank(np.column_stack([A1, b1]))) print(det(A1):, np.linalg.det(A1)) # 无穷多解的例子 A2 np.array([[1.0, 1.0, 1.0], [2.0, 2.0, 2.0], [1.0, -1.0, 0.0]]) b2 np.array([3.0, 6.0, 0.0]) print(rank(A2):, np.linalg.matrix_rank(A2)) print(rank([A2|b2]):, np.linalg.matrix_rank(np.column_stack([A2, b2]))) # 无解的例子 A3 np.array([[1.0, 1.0], [2.0, 2.0]]) b3 np.array([2.0, 5.0]) print(rank(A3):, np.linalg.matrix_rank(A3)) print(rank([A3|b3]):, np.linalg.matrix_rank(np.column_stack([A3, b3])))输出会告诉你第一例两个秩都是 3等于未知数个数唯一解第二例两个秩都是 2小于 3无穷多解第三例 A3 秩为 1增广矩阵秩为 2两者不等无解。这个交叉验证的方法我强烈推荐给所有初学的人。手算给你过程感代码给你确定性和速度。两者结合你对判据的信任度会完全不一样——很多人做题时犹豫根源是不相信自己的判断多验证几次就建立起来了。提示用代码算秩的时候要留意数值精度。浮点运算下理论上为零的奇异值可能算出个 1e-16 之类的小数。判断 秩是否相等 时不要直接比较浮点数或者改用整数矩阵、符号计算来避免这个问题。6.3 几个反复出现的误解提前避开教了这么多轮有些误解几乎是必现的列出来省得你挨个踩。误解一把矩阵当成数字表格不理解它是个变换。这个误解的后果是后面学特征值、相似对角化时完全接不上。纠正办法每次拿到一个矩阵都试着想想它把单位正方形变成了什么形状面积变了几倍有没有把某个方向压扁。养成这个习惯矩阵就活了。误解二认为方程个数等于未知数个数就一定有唯一解。方阵只是必要的形式条件真正的条件是行列式不为零或者秩满。一个 3×3 的矩阵完全可能秩只有 2那时候要么无解要么无穷多解。误解三把行变换和列变换混用。求秩的时候行列变换都可以但解方程组的时候只能用行变换。列变换会改变未知数的含义除非你同步记录否则解就变了。我见过有人为了化简方便擅自做列变换最后答案完全不对还以为是计算错了。误解四无穷多解时就只写一个特解。无穷多解意味着解集是一个集合必须把自由度表达出来。只写一个点等于把一整条直线说成了一个点信息严重丢失。参数化的写法要练熟。误解五忽略齐次和非齐次的区别。前面 5.2 已经说过这里再强调一次。齐次必有零解非齐次不一定有解。这个区分是后面所有理论的起点。最后分享一个我自己总结的读题顺序拿到一个线性方程组先看形状几个方程几个未知数再看秩判断有没有解、解多不多再选视角判解用行图像算解和讨论依赖关系用列图像最后代回验证。这个顺序跑顺了绝大多数基础题都能在一两分钟内定性剩下就是体力活。至于后面怎么从 Ax b 走到特征值那一章我个人的体会是把矩阵是列向量的打包这个认识带过去特征向量就是被矩阵作用后方向不变、只改变长度的那些特殊向量Ax λx 不过是把右端项换成了一个标量倍数。如果你现在能把 Ax b 的列视角讲清楚这一步几乎不需要重新学习只是换个说法而已。