尧图精选

子式、余子式与代数余子式:行列式展开到伴随矩阵

🕒 发布时间:2026/10/1 6:19:46 📁 来源:尧图网络
行列式算到一定阶段很多人会突然卡在两个词上子式和余子式。课本上定义写得干净利落可真到自己动手划行划列的时候符号错、位置错、漏项错就全冒出来了。我当初学这一块也是这样三阶还能靠对角线法则硬算一升到四阶就开始心虚因为压根不知道从哪一行展开最省事也不知道那个正负号到底凭什么这么定。这篇就接着“线性代数的学习和整理”这个系列往下聊专门把子式、余子式、代数余子式这条链路从头捋一遍把定义、记号、手算细节、掉坑经验和进阶用法全部铺开讲清楚。适合刚学到行列式展开的同学也适合学过一遍但当时囫囵吞枣、现在想补课的人。你看完之后四阶行列式应该能自己挑一行展开算完也能明白伴随矩阵和克拉默法则里的那些符号是怎么来的。1. 为什么要在行列式里挖掉一块子式与余子式的来龙去脉1.1 从二阶三阶的展开式里找规律二阶行列式的展开很熟悉主对角线相乘减去副对角线相乘两项。三阶行列式按对角线法则展开是六项每一项都是从不同行不同列各取一个元素相乘再配上正负号。到这一步很多人是靠口诀记的什么“沙路法”“斜线补零”记是记住了但没意识到这六项背后有一个更大的结构。我后来复盘的时候发现真正值得盯住的问题不是“怎么算出六项”而是“如果我只想研究其中一个元素所在的那一部分该怎么拆”。比如三阶行列式里元素 a11 出现在两项里a11·a22·a33 和 -a11·a23·a32。把 a11 提出来剩下的是 a22·a33 - a23·a32这正好是划掉第 1 行第 1 列之后剩下的二阶行列式。这就是整条链路的起点把某个元素“提”出来剩下的那一块就是它的余子式。一旦看懂了这一点“划行划列”这个动作就不再是死记硬背的操作而是有明确动机的拆解。顺着这个思路再往下走你会自然想到元素 a12 出现在哪两项里把它提出来之后剩下的又是什么答案是 -a12·(a21·a33 - a23·a31)也就是 -a12 乘以划掉第 1 行第 2 列后的二阶行列式。注意这里多了一个负号而这个负号正是后面“代数余子式”里那个 (-1)^(ij) 的雏形。整个拉普拉斯展开的思想到这里其实已经完整了把一个 n 阶行列式拆成若干个“元素 × 划掉后的低阶行列式”的和剩下的只是把符号系统地整理出来。1.2 子式的定义与记号k 阶子式到底是什么东西先把“子式”这个词拎清楚因为后面所有的概念都建立在它上面。给定一个 m 行 n 列的矩阵任取 k 行、任取 k 列行和列交叉位置上的 k² 个元素按原来的相对顺序排成一个 k 阶行列式这个行列式就叫矩阵的一个k 阶子式。注意两个关键词任取、相对顺序。任取意味着一个矩阵往往有很多个子式相对顺序意味着你不能随便打乱元素的位置。这里容易混淆的地方在于子式是从矩阵的角度定义的而余子式是从行列式的角度定义的。行列式本身可以看成方阵的一种“函数值”所以一个行列式也有它的 k 阶子式就是在这个方阵里任取 k 行 k 列组成的 k 阶行列式。两者的说法差异只是视角不同本质上是一回事。举个具体的例子给你一个 3 行 4 列的矩阵取二阶子式有多少个选 2 行有 C(3,2)3 种选 2 列有 C(4,2)6 种两两组合就是 3×618 个二阶子式。这个数字很多人第一次算会愣住因为直觉上觉得没那么多。但如果你按“先选行、再选列”的思路走一遍就会发现每个组合确实对应一个独立的子式。理解了子式的“可枚举性”后面学矩阵的秩、判定秩的定义式存在非零 r 阶子式且所有 r1 阶子式全为零就不会觉得突兀因为秩的定义本质上就是在问“最大的非零子式是多少阶的”。注意子式是一个行列式的值不是一个矩阵。很多人写着写着会把它当成一个“小矩阵”来用还去给它做行列变换那就跑偏了。它算出来是一个数。1.3 余子式与代数余子式那个 (-1)^(ij) 到底从哪来余子式的定义非常直白在一个 n 阶行列式 D 中把元素 a_ij 所在的第 i 行和第 j 列全部划掉剩下元素按相对顺序组成的 n-1 阶行列式就是 a_ij 的余子式记作 M_ij。这一步没有符号纯粹是“划掉之后剩下的东西”。真正让人头大的是代数余子式把余子式乘上一个符号因子A_ij (-1)^(ij) · M_ij。这个 (-1)^(ij) 很多人是硬背的甚至有人用“左正右负、上正下负”这种半对半错的口诀结果算四阶的时候频繁翻车。要理解这个符号最有效的类比是棋盘。把行列式的元素想象成国际象棋的棋盘格左上角 (1,1) 位置放正号相邻格换号一正一负交替铺满整个棋盘。于是符号矩阵长这样| - - ... | | - - ... | | - - ... | | - - ... |这个棋盘下面藏着一条等价描述从左上角走到 (i,j)向右走 j-1 步向下走 i-1 步每走一步换一次号一共走了 (i-1)(j-1) 步所以符号是 (-1)^((i-1)(j-1)) (-1)^(ij-2) (-1)^(ij)。这就是那个指数的完整来历不是谁拍脑袋定的而是沿着展开式里“每换一行或换一列符号就翻一次”这个规律自然推出来的。再回头对照三阶展开a11 的符号是正a12 的符号是负a13 的符号是正第一行走完正好是“正负正”。第二行则是“负正负”。这个交替节奏和棋盘完全吻合。把这个规律吃透比背口诀管用得多因为到五阶六阶时口诀会失效但棋盘的推法永远成立。提示写代数余子式时先写符号再抄划掉后的行列式。顺序反过来最容易把符号漏掉尤其是 M_ij 算得很累的时候脑子会自动“保护”自己把符号这一步省掉。2. 手工计算的核心技巧如何又快又不出错地求余子式2.1 划行划列的操作规范与常见手滑点余子式的正确写法我在草稿纸上摸索出一套固定流程用了很久没出大错。第一步把原行列式工工整整抄一遍每个元素之间留足空隙不要挤在一起。第二步用一条斜线划掉第 i 行用另一条方向的斜线划掉第 j 列两个方向不同是为了让你一眼看清哪条是行、哪条是列尤其行列数多的时候不容易看串。第三步是把剩下的元素重新抄成一个新的、少了 1 阶的行列式。这一步是出错重灾区。剩下的元素必须保持原来的相对位置关系也就是说原来在 a_23 右边的元素划掉某列之后依然在它右边只是列号整体前移了。我见过太多人抄的时候顺手“挤”了一下把不在同一列的元素放到了同一列结果整个行列式算出来毫无意义。还有一类手滑点是在行列数接近时看错行号列号。比如要算 A_34结果眼睛一花看成了 A_43。这两个余子式划掉的行列正好互换算出来的值一般不同。我的做法是在草稿纸空白处先写下“划第 3 行、第 4 列”这几个字再动手划给手一个明确的指令比默认靠眼睛判断靠谱得多。注意算之前先确认你要求的到底是余子式 M_ij还是代数余子式 A_ij。如果是后者算完 M_ij 之后必须补上符号这个补符号的动作建议放在最后一步单独做不要一边算行列式一边算符号。2.2 三阶行列式按第一行展开的完整算例光说方法不够直接上一个能对照着算的例子。给一个三阶行列式D | 2 1 3 | | 0 4 1 | | 5 -2 1 |按第一行展开公式是 D a11·A11 a12·A12 a13·A13。先算三个余子式。M11划掉第 1 行第 1 列剩下| 4 1 | | -2 1 |它的值是 4×1 - 1×(-2) 4 2 6。M12划掉第 1 行第 2 列剩下| 0 1 | | 5 1 |它的值是 0×1 - 1×5 -5。M13划掉第 1 行第 3 列剩下| 0 4 | | 5 -2 |它的值是 0×(-2) - 4×5 -20。接下来补符号。第一行对应的符号是正、负、正所以 A11 6A12 -(-5) 5A13 -20。最后代回去D 2×6 1×5 3×(-20) 12 5 - 60 -43。为了确认没算错我用对角线法则独立验算一遍主对角线方向三项是 2×4×18、1×1×55、3×0×(-2)0副对角线方向三项是 3×4×560、1×0×10、2×1×(-2)-4带负号后是 -60、-0、4。所以 D 8 5 0 - 60 - 0 4 -43。两边一致说明展开过程没问题。这个例子说明一件事三阶行列式用展开法虽然比对角线法则慢一点但它是可推广的。对角线法则到四阶就失效了展开法却能一路用到 n 阶。所以三阶阶段就要把展开法练熟别图快一直用对角线法则否则四阶会很不适应。2.3 符号因子的记忆法三种方法对比关于 (-1)^(ij)我在不同阶段用过三种记法各有优劣整理成表格方便你挑一个顺手的。记忆方法具体做法优点缺点棋盘法从左上角开始正负交替铺满直观不依赖行号列号计算阶数大时容易画错行列计数法看 (ij) 的奇偶偶为正、奇为负精确任何阶都能用需要心算加法快算时易错首元素平移法把目标元素移到左上角看移动步数奇偶有几何直觉移动步骤多时容易数错我现在的做法是行列计数法为主棋盘法辅助验证。算 A_ij 时先算 ij偶数写正号奇数写负号然后心里默画一下那个位置的棋盘符号对不对。两种方法同时给出相同答案基本可以确认符号没问题。这种“双通道验证”看起来多花两秒但比算完整个四阶行列式再回头检查要省事得多。提示一个很实用的自查法则是“对角线上的符号永远为正”。也就是 A_ii 的符号恒为 1因为 ii2i 一定是偶数。如果你算出 A_ii 带负号百分之百是哪里搞错了。3. 从余子式到拉普拉斯展开把高阶行列式拆成低阶3.1 按行展开与按列展开为什么结果一样拉普拉斯展开定理的完整表述是n 阶行列式 D 等于它的任意一行的各元素与其对应代数余子式乘积之和也就是 D a_i1·A_i1 a_i2·A_i2 … a_in·A_in。同样地按任意一列展开也成立D a_1j·A_1j a_2j·A_2j … a_nj·A_nj。很多人对“任意一行任意一列都可以”这件事是半信半疑的因为课本往往只证明按第一行展开然后一句“同理可证”带过。我给你一个理解角度行列式有一个基本性质把第 i 行换到第 1 行、第 j 列换到第 1 列每次交换会引入一个负号但同时展开式里各元素对应的符号也会跟着变两边的负号互相抵消最终结果保持不变。所以“任意一行”这件事本质上是行列式的行交换性质在起作用。这个结论的实际价值非常大你不需要非按第一行展开可以挑最好算的那一行或那一列。这是从“会算”到“算得快”最关键的一步跨越。3.2 选零多的行或列降低计算量的实战策略选行选列的基本原则只有一条优先选零最多的那一行或那一列。原因很简单展开式里每一项都要乘一个元素如果这个元素是零整项就是零余子式根本不用算。一个四阶行列式按一般行展开要算 4 个三阶行列式但如果某一行有 3 个零那只需要算 1 个三阶行列式工作量降了四分之三。这里有个细节要提醒零在行列式里往往不是“天然存在”的而是通过行列变换“造”出来的。常见做法是用某一行去消另一行的元素把目标行的某些位置变成零同时记录下行变换对行列式值的影响。比如“把第 2 行加上第 1 行的 k 倍”这类操作不改变行列式的值是安全的而“交换两行”会改变符号“某行乘以常数”会改变数值这些都要记账。我自己的操作习惯是先用行变换在某一列造出尽可能多的零再按那一列展开。比如下面这个四阶行列式第一列已经有现成的零用起来就很舒服。D | 1 0 2 0 | | 3 1 0 4 | | 0 5 1 2 | | 2 0 3 1 |第一行有两个零第三行有一个零在第一位第四行有一个零。单看零的个数第一行最划算直接按第一行展开。3.3 四阶行列式的完整展开过程接着上面的例子算下去。按第一行展开公式是 D a11·A11 a12·A12 a13·A13 a14·A14。因为 a12 0、a14 0只需要算 A11 和 A13。A11 的符号是 (-1)^(11) 1所以 A11 M11。划掉第 1 行第 1 列| 1 0 4 | | 5 1 2 | | 0 3 1 |按第一行展开这个三阶行列式1×(1×1 - 2×3) - 0×(5×1 - 2×0) 4×(5×3 - 1×0) 1×(1-6) - 0 4×15 -5 60 55。所以 A11 55。A13 的符号是 (-1)^(13) 1所以 A13 M13。划掉第 1 行第 3 列| 3 1 4 | | 0 5 2 | | 2 0 1 |按第一行展开3×(5×1 - 2×0) - 1×(0×1 - 2×2) 4×(0×0 - 5×2) 3×5 - 1×(0-4) 4×(-10) 15 4 - 40 -21。代回原式D 1×55 0 2×(-21) 0 55 - 42 13。为了确认我再用化三角的方式独立验算。原矩阵第一行第一列是 1用它去消第二行和第四行的第一列第二行减第一行的 3 倍变成 (0, 1, -6, 4)第四行减第一行的 2 倍变成 (0, 0, -1, 1)。此时矩阵是| 1 0 2 0 | | 0 1 -6 4 | | 0 5 1 2 | | 0 0 -1 1 |再用第二行去消第三行的第二列第三行减第二行的 5 倍变成 (0, 0, 31, -18)。矩阵变成| 1 0 2 0 | | 0 1 -6 4 | | 0 0 31 -18 | | 0 0 -1 1 |现在上三角部分看出来了吗最后两行是 (31, -18) 和 (-1, 1)它们的二阶行列式是 31×1 - (-18)×(-1) 31 - 18 13。加上前面两个 1整个行列式等于 13。两种方法结果一致说明展开法这条路走得通。提示像上面这种“展开法 化三角法”交叉验证的习惯在考试或者严肃推导里非常值得养成。单独用一种方法一旦中途有个符号写错你很难发现两种方法给出同一个答案可信度就高很多。3.4 展开法的复杂度直觉展开法的计算量随着阶数增长得非常快。一个 n 阶行列式按定义展开需要算 n 个 (n-1) 阶行列式每个又要算 n-1 个 (n-2) 阶的总量大致是 n! 级别的。五阶就是 120 项左右的量级六阶直接逼近 720手工基本不可能。这也是为什么实际计算里高阶行列式几乎都靠化三角法或者用计算工具展开法的价值在于理论推导和低阶手算。理解这一点你就能合理安排精力三阶四阶把展开法练熟五阶以上优先上三角化别硬扛。计算量这个概念听起来抽象但只要你手工算过一个五阶的按行展开就会立刻明白为什么大家都转投三角化。4. 代数余子式的进阶用法伴随矩阵、逆矩阵与克拉默法则4.1 伴随矩阵代数余子式矩阵的转置把行列式 D 的每个元素 a_ij 都换成它的代数余子式 A_ij得到一个同阶矩阵再把这个矩阵转置得到的就叫伴随矩阵记作 adj(A) 或者 A*。这里最容易错的就是“转置”这一步。很多人算完代数余子式之后直接排成一个矩阵就当伴随矩阵用了结果求逆矩阵时怎么都对不上。为什么定义里要转置这跟逆矩阵公式 A^(-1) adj(A)/|A| 的推导有关。核心恒等式是 A · adj(A) |A| · I。要证明这个式子需要用到两件事一是“同乘求和等于行列式”也就是按行展开二是“异乘变零”也就是错位相乘等于零。加上转置这一下正好让每一行和对应位置的代数余子式组合起来凑出对角线上是 |A|、其余位置是 0 的结构。所以转置不是随手加的是为了让乘法合得上。一个二阶的例子最直观。设 A [[a, b], [c, d]]代数余子式分别是 A11 d、A12 -c、A21 -b、A22 a。按原位置排是 [[d, -c], [-b, a]]转置之后是 [[d, -b], [-c, a]]。用这个去乘以 A正好得到 [[ad-bc, 0], [0, ad-bc]]也就是 |A|·I。你可以自己乘一遍验证比看十遍定义管用。4.2 用代数余子式求逆矩阵的步骤与适用规模用伴随矩阵求逆的标准流程是这样的第一步算行列式 |A|如果等于零就说明不可逆直接停。第二步逐个算出所有代数余子式 A_ij组成代数余子式矩阵。第三步把这个矩阵转置得到 adj(A)。第四步用 1/|A| 乘上去。这套方法在二阶、三阶上非常顺手三阶九个数挨个算一遍工作量可控。但到了四阶就是 16 个三阶行列式五阶是 25 个四阶行列式计算量爆炸。所以实际做题时三阶以内用伴随矩阵四阶以上基本改用初等行变换A 和 I 并排把 A 化成 I右边的 I 就变成 A^(-1)。这一点要早点认清别傻乎乎地用伴随矩阵硬啃四阶。不过伴随矩阵的价值不只是求逆。它在理论推导里作用很大比如证明 |adj(A)| |A|^(n-1)比如判断矩阵可逆的各种等价条件都会用到它。理解它的结构比会算它更重要。4.3 克拉默法则的公式与使用边界克拉默法则处理的是 n 个方程、n 个未知数的线性方程组前提是系数行列式 D 不等于零。结论是 x_j D_j / D其中 D_j 是把系数矩阵的第 j 列替换成常数项列之后得到的行列式。用二阶方程组举个例子。方程组是 2x y 5x 3y 10。系数行列式 D 2×3 - 1×1 5。求 x 时把第一列换成常数项 (5, 10)得到 D1 5×3 - 1×10 15 - 10 5所以 x 5/5 1。求 y 时把第二列换成 (5, 10)得到 D2 2×10 - 5×1 20 - 5 15所以 y 15/5 3。代入原方程验证2×1 3 51 3×3 10都对。克拉默法则的边界必须说清楚方程个数必须等于未知数个数且系数行列式不能为零。这两个条件缺一不可。方程组个数和未知数个数不等或者系数行列式为零它就用不了得改用消元法讨论解的结构。另外就算能用的场合n 大起来之后要算 n1 个 n 阶行列式计算量比消元法大得多所以它的意义主要在理论层面比如用来证明解的存在唯一性而不是拿来当日常计算工具。4.4 异乘变零错位相乘为什么一定等于零异乘变零定理说的是行列式某一行的元素与另一行对应元素的代数余子式相乘再求和结果恒为零。写成式子就是当 i ≠ k 时Σ_j a_ij · A_kj 0。这个结论乍看很神奇但有一个很漂亮的解释。你想求和式 Σ_j a_ij · A_kj它长得就像是“把第 k 行的元素换成了第 i 行的元素然后按第 k 行展开”。也就是说这个和式等于一个新行列式的值而这个新行列式的第 k 行和第 i 行完全相同。两行完全相同或者成比例的行列式值等于零。所以异乘变零不是什么独立的神秘性质它就是“两行相同则行列式为零”这条基本性质的直接推论。把它和同乘求和放在一起就得到一个统一的公式Σ_j a_ij · A_kj δ_ik · D。当 i k 时结果是 D当 i ≠ k 时结果是 0。这个公式是伴随矩阵恒等式 A·adj(A) |A|·I 的核心也是理解为什么伴随矩阵能凑出逆矩阵的关键。很多人学到这里会觉得“突然冒出一个这么厉害的东西”其实它从头到尾都建立在展开定理和异乘变零这两块砖上。注意异乘变零里“另一行”的对应位置必须严格对齐是第 j 列对第 j 列。如果下标对错了算出来的结果既不等于零也不等于 D你就该意识到是位置错位而不是定理本身有问题。5. 常见问题与排查技巧实录5.1 三类高频错误的排查顺序手算子式相关的内容错误基本集中在三个地方符号错、位置错、漏项。我建议的排查顺序是先查符号再查位置最后查漏项。符号错最常见的表现是同一个展开式里有的项正、有的项负你自己也觉得不对劲。这时候把符号矩阵单独画出来逐个对照元素的位置不要凭印象。位置错通常表现为余子式抄错了行列比如划掉的是第 2 列但抄的时候按第 3 列处理了。查这个最有效的办法是把原行列式和新的低阶行列式并排放用笔连一下元素看看对应关系是否一致。漏项错则多发生在零元素较多的行因为零项太容易被跳过而跳过之后又忘了本来这一项是存在的解决办法是写展开式的时候把每一项都先写出来包括零项最后再划掉。我自己的一套检查流程是这样的算完一个低阶行列式先不急着代回去而是单独验算这个低阶行列式的值用另一种方法比如对角线法则确认一遍确认无误后再乘元素、补符号、求和最后整体再用化三角法过一遍。这套流程多花两三分钟但能挡掉绝大多数错误。5.2 常见问题速查表把前面反复提到的坑整理成一个表做题时对着看会省很多事。现象可能原因处理办法展开后结果和验算差一个负号符号因子漏算或算错重新用 ij 奇偶逐个确认某个余子式值明显偏大偏小抄写时元素错位把原式和低阶式并排比对按某一行展开算不动该行零太少换一行零多的或先造零四阶以上算到一半算崩计算量超出可控范围改用化三角法伴随矩阵乘 A 得不到A·I克拉默法则解出无解或无穷解系数行列式为零停用克拉默法则改消元讨论这张表里的每一条我基本都踩过尤其是“忘记转置”和“系数行列式为零还用克拉默法则”这两条当年在这上面浪费了不少时间。表格的好处是你不用回想全部理论看一眼现象就能定位到大概方向。5.3 手算与前文方法的取舍这个系列前面几篇讲过行列式的性质和化三角法这里要说清楚它们和展开法的分工。降阶展开适合低阶、零多、需要局部信息的场景化三角法适合高阶、元素密集、只需要最终值的场景。判断标准很实际如果某一行或某一列有三个以上的零展开法大概率更快如果一行里全是非零数那展开之前先造零或者直接转三角化。还有一个容易被忽略的点展开法能告诉你“某个元素对行列式的贡献有多大”这在理论分析里很有用。比如你要研究某个参数变化时行列式怎么变展开式直接给出每一项和该参数的关系比三角化之后的连乘形式更清晰。所以别因为化三角法快就把展开法丢掉两者的适用场景不一样。提示练习题可以从“按不同行展开同一个行列式验证结果相同”开始。这个练习看起来笨但能同时练手算能力、符号敏感度和对展开定理的信任感性价比很高。6. 一点个人学习体会学这一块我最大的感受是定义本身不难难的是把它变成一套可执行的、不会出错的手上动作。子式、余子式、代数余子式这几个概念课本上写得清清楚楚但真到了纸上符号该不该加、元素怎么抄、零项要不要写全靠自己平时的习惯。我后来把每一步都固化成固定流程先写指令、再划行列、再算低阶、再补符号、最后交叉验证速度反而比边想边算快很多。另外别急着跳过三阶直接上四阶。三阶展开法是所有高阶方法的骨架把三阶按行按列展开都练到能默写四阶只是多划几次、多补几个符号的事。等把展开法、伴随矩阵、克拉默法则这条线串起来之后你会发现它们是同一个思想的三种表现都以子式和代数余子式为基础。到了这一步线性代数里那些看起来零散的公式就开始连成一片了。
上一篇/下一篇内容由系统自动关联 返回资讯列表 →