我是线性代数教学工作第 11 个年头的教师,学院里学生都叫我“沈矩”。刚开始教书那几年,我最常听到的一句话就是——
“老师,矩阵能不能别算了,做一题就怀疑人生。”
如果你点进来是因为在做矩阵题时脑袋发涨、步骤乱成一团,那你其实和我教过的大多数学生状态一模一样:知道要做初等行变换、列变换,也会“照书抄步骤”,就是算得又慢又不稳,还经常算到一半怀疑自己化简方向是不是错了。
这篇文章,我想做一件简单但很具体的事:把我这些年给学生“改造计算习惯”时常用的那些矩阵初等变换化简技巧,原封不动地拆给你,而且是站在“内部人”的视角——什么地方学生最容易翻车,我都见过,也知道怎么绕过去。
文章是给三类人写的:正在啃线代的大学生、要考研的同学、以及需要在工程或数据分析里用到矩阵计算的朋友。你不需要看完所有线性代数,只要知道行列式、秩、线性方程组这些词,下面的内容就能直接派上用场。
我在课后习题上做过一个小统计:从 2023 秋季到 2025 秋季,我每学期随机抽 3 班的期中卷子,把所有涉及矩阵初等变换的题分错误类型,大致有这么几类(样本大概 860 人次):
- 步骤没问题,运算错:占 41%
- 乱用变换,把“行变换”和“列变换”混着用:占 27%
- 瞎选主元,导致算到一半数越来越难看:占 22%
- 完全不会下手,只写了个“略”:占 10%
你会发现,多数人不是“不会”,而是会得很原始。
初等变换的理论早就很稳定了,出现在任何教材里的核心内容都差不多,所以网上大部分说法也高度一致:行变换不改变行空间,列变换不改变列空间,可逆矩阵等价于能化成单位阵,等等。这些观点本身没争议,区别只在于——有没有教你怎么把这些理论变成手上真正好用的步骤。
所以接下来我不会再重复“初等行变换有三种”这类书上原话,而是围绕你最容易错的环节,给一些更接地气的操作习惯。
很多学生做题时的画面是这样的:题目说“用矩阵初等变换求解”,他就一股脑开始把某一行乘以多少、减去多少,但没有一个明确的“主线策略”。我一般会在课上要求大家先给自己一个不变的规则,例如:
“只做行变换,不做列变换;
要做列变换时一定在草稿旁边写清楚自己在求什么(比如求列空间、求特征向量就慎用列变换)。”
原因其实很现实:你一旦在解线性方程组时同时使用行、列变换,大多数人都会混乱,甚至搞不清哪些操作会改变解集。教过这么多年,我更倾向于让学生在 90% 的题型里只用行变换打天下,等你足够熟练,再去玩更灵活的组合。
实战里可以用这样一套“懒人规则”:
- 求解线性方程组、求矩阵的秩:只做行变换。
- 求可逆矩阵的逆:行变换配合增广矩阵
[A | I],不碰列。 - 分析列空间、求一组列向量的基:用行变换把矩阵行简化形式做出来,但解释结果时记得回到原列。
这么做的好处是——你随时知道自己在干嘛,不会因为把行列混在一起,最后连“我做的这一步是不是允许”都说不清。
同样是做高斯消元,有人写满一页纸算不完,有人两三行就收工。差别往往不在“会不会”,而在于主元选择的习惯。
课本会讲“选非零元做主元就行”,但在考试、比赛或者工程计算中,大家更推崇一种叫“部分选主元”(partial pivoting)的习惯——不是谁先出现就用谁,而是在当前列里选绝对值最大的那个做主元,然后把对应的行换上来。
在数值计算里,这样做的好处是减少舍入误差;在手算里,有一个额外的好处:你经常可以避开分数,减少运算量。
举个常见的小套路:
有一个子矩阵:
[ begin{pmatrix} 1 & 2 3 & 7 end{pmatrix} ]
很多人会直接用第一行的 1 做主元,让第二行减 3 倍第一行,于是马上会出现 7 - 6 = 1,还算凑合。但如果是:
[ begin{pmatrix} 1 & 2 3 & 8 end{pmatrix} ]
你照样这么做,就会得到 8 - 6 = 2,表面看也还好。问题是题目一旦稍微大一点、系数更复杂,你这种“顺眼就用”的方式,很容易让中间步骤出现大量分数。
我在课上一般会要求学生养成一个“条件反射”:
- 在当前列里,只要有 ±1、±2 这种好看的数字,优先把它调到上面当主元。
- 没有好看的整数,就找绝对值较大、能约掉分母的那个。
对 3×3、4×4 的手算题来说,先抬头扫一眼再动笔,往往能少掉三分之一的运算量。这个细节,极少有教材会强调,但在我这几年带的考研班里,几乎是所有高分学生的“共识技巧”。
很多人以为自己不善于计算,其实是太“老实”。矩阵初等变换里有一些非常“投机取巧”的习惯,只要你愿意用,精准度往往更高,算得也更快。
一是善用“凑 0”而不是“凑 1”。大多数人做消元,目标都是把对角线外的元素变成 0,把对角线上的元素凑成 1。其实在中间步骤,你并不需要每一步都追求 1,当有些地方出现 2、3 时,不妨先凑 0,再整体除一下。
在实际教学里,我会鼓励学生在做阶梯形时这样想:
- “我能不能让某一列除了主元,其余都是 0,不管主元是不是 1?”
- “等完全化成阶梯形再一次性把对角线除成 1。”
这种做法在 4×4、5×5 题目里特别省力,不容易被小数或分数拖垮。
二是行多的时候,先用“批量清理”。我带过一届竞赛班,有个学生做题特别快,他有一个习惯:遇到矩阵时,先看有没有某一行或某一列能一口气帮他清理很多非零元素。
例如某个矩阵包含一行:
[ (1, 1, 1, 1, 1) ]
还有一行:
[ (1, 2, 3, 4, 5) ]
他不会一列列去减,而是直接把第二行减第一行,得到:
[ (0, 1, 2, 3, 4) ]
这时再对第二行做变换,能顺带影响后面所有列,相当于批量简化。
你可以养成一个小习惯:在动笔前扫描一下矩阵,有没有那种“简单但覆盖面很广”的行/列,先用它去扫其他行/列,可以一次减少一堆复杂元素。
三是能拆就拆,别硬算整体。在工程、数值分析和机器学习场景里,矩阵往往是由几个结构简单的小块拼起来的。比如上三角块、对角块、稀疏块。在这种情况下,很多人还是会把整个大矩阵硬搬上来做消元,这其实非常吃亏。
行业里的惯常做法更偏向于:
- 识别矩阵是否接近上三角、块对角等结构;
- 用初等变换时尽量保持这种结构,不要把“原本就很规整”的部分搞乱。
在数值软件里(比如 2025–2026 年更新的一些 LAPACK 实现和 GPU 线性代数库),专门针对结构化矩阵的算法能把运算量压到普通算法的几分之一。你在手算时未必需要做到这么极致,但只要有意识地不去破坏已有结构,就等于少做很多无用功。
理论讲多了很容易飘,我更习惯直接拿题型说话。
从 2022 到 2024 年,全国硕士研究生数学一、数学二里的线性代数题有一个持续的趋势:矩阵化简依然是核心,但更喜欢和应用背景、计算效率绑在一起。2025 年部分自命题高校延续了这个倾向:不仅要求你会做初等变换,还会通过题目暗示你“这道题如果这么算会很慢,你能不能换一种更聪明的化简方式”。
比如常见的组合题型:
- 给定一个 n 阶矩阵 A,已知某些特征(比如上三角,有特定模式),要求判断是否可逆、求秩或求某个线性方程组的解。
- 题目会刻意给出一些“看起来很麻烦但实际很规整”的行或列,鼓励你用“批量化简”的思路。
在我最近一轮(2025–2026 考研季)的辅导里,能在这些题目上拿到满分的学生,往往有几个共同点:
- 化简之前会先“扫一眼结构”,不急着写。
- 习惯只用行变换,且每一步都会在草稿边上写个简短注释:
R2 <- R2 - 3R1,防止乱掉。 - 出现分数时不会慌,会尝试通过替换主元、重新排行来把分数变回整数。
而在工程场景里(比如 2026 年常见的机器学习框架里做小规模自定义算子),矩阵初等变换更多是用来理解和验证数值结果。你可能不会真的手算一个 1000×1000 矩阵,但你需要通过“小矩阵手算+初等变换”的方式,确认自己的模型设定、线性约束是否有问题。
当你在纸上练习这些化简技巧时,其实是在训练一种很底层的能力:看到一个矩阵时,能快速判断出什么是应该保留的结构、什么是可以用变换扫掉的冗余。这层能力会在不同场景里反复出现,不会局限在考试。
回到开头的问题:这篇文章到底想帮你达成什么目的?
不是让你从此“秒杀一切矩阵题”,那不现实。更实际的目标,是让你在看到“用矩阵初等变换化简”这几个字时,脑子里不再一片空白,而是自动跳出一套大致清晰的习惯:
- 我今天是不是只用行变换?
- 这个矩阵有没有某一行/列特别适合作为“扫把”,先帮我批量清理?
- 主元能不能选择得更聪明一点,让自己少遇到分数?
- 我现在做的这一步,究竟是为了凑 0,还是为了保持某种结构?
当这些问题变成你的“下意识”,你就已经从“靠感觉瞎算”迈向了“稳准快”的那一步。矩阵初等变换看上去是纯计算,其实背后是一种对结构的敏感度,而这种敏感度,是可以被训练出来的。
如果你现在正被某道矩阵题卡住,可以试着把上面提到的其中一两个小技巧,直接用在那道题上。哪怕只是先从“统一只用行变换、不乱动列”这种小事做起,你会发现自己的步骤开始变得清爽起来,错误率肉眼可见地往下掉。
等到哪天你也能在纸上,把一个看起来凶神恶煞的矩阵,几步化简得干干净净,或许你会像我很多学生那样,悄悄在草稿旁边写一句:
“矩阵也没那么可怕。”
