跳至内容

代数余子式展开(拉普拉斯展开):实用指南

一步步讲解代数余子式(拉普拉斯)展开,涵盖核心定义、示例演算、关键性质,以及它通过伴随矩阵与矩阵求逆的联系。
更新 2026年5月4日  · 12分钟

计算 3×3(及以上)矩阵的行列式远没有 2×2 情况那样简单明了。

您不能只凭两条对角线相乘。矩阵越大,算术越繁琐。没有一种有条理的方法,很容易在过程中迷失方向。这正是代数余子式展开(也称拉普拉斯展开)为解决的问题。

代数余子式展开是一种沿选定的某一行或某一列展开来计算任意方阵行列式的方法。它把问题递归地分解为更小的行列式,而这些行列式您已经会求解。

本文将介绍代数余子式展开的定义、背后的公式、2×2 与 3×3 的分步示例、关键性质,以及实际应用。

什么是代数余子式展开?

代数余子式展开是一种递归方法,用于计算任意方阵的行列式

在这里,“递归”意味着您并不是一次性计算大矩阵的行列式,而是将其拆分成更小的行列式。这些更小的行列式再继续拆分,直到最后只剩 2×2 的行列式——它们可以用最基本的方法快速求解。

这种方法适用于任意方阵——2×2、3×3、4×4,以至更大。也正因如此,它在 3×3 及以上维度最有用,因为这时您不能仅靠两条对角线相乘。

核心思路很简单。您在矩阵中选择一行或一列沿其展开。该行或该列中的每个元素都会对应一个更小的子问题。求解这些子问题,合并结果,便得到行列式。这就是全部过程。

余子式与代数余子式:关键定义

在展开行列式之前,需要先理解两个构件:余子式与代数余子式。

余子式

余子式 M_ij 是指从原矩阵中删除第 i 行与第 j 列后所得到的较小矩阵的行列式。

例如,给定 3×3 矩阵 A,若要求余子式 M_12,删除第 1 行与第 2 列,剩下的是一个 2×2 矩阵。计算它的行列式,这就是余子式。

代数余子式

代数余子式 C_ij 在余子式的基础上再进一步:根据位置 (i, j) 施加符号因子:

The cofactor

代数余子式

其中 (-1)^(i+j) 项会根据矩阵中的位置决定是否翻转余子式的符号。

i + j 为偶数时,(-1)^(i+j) = +1,故代数余子式等于余子式;当 i + j 为奇数时,(-1)^(i+j) = -1,代数余子式将翻转余子式的符号。

棋盘式符号模式

这种符号交替会在矩阵上形成一个棋盘式的符号分布:

The checkerboard pattern

棋盘式符号模式

左上角总是以 + 开始。随后,符号在各个方向交替。通过该模式,您可以一眼判断某个代数余子式会对行列式起加法还是减法作用。

代数余子式展开公式

这就是您一直在等的公式。

沿第 i 行展开:

Expansion along row i

沿第 i 行展开

沿第 j 列展开:

Expansion along column j

沿第 j 列展开

通俗地说,就是将所选行或列的每个元素乘以其代数余子式,然后把结果相加。

其中 a_ij 表示矩阵的各个元素,C_ij 是您为每个位置计算得到的代数余子式。两者相乘,再将乘积求和,便得到行列式。

您选择哪一行或哪一列并不影响结果。沿第 1 行展开与沿第 3 行或第 2 列展开,结果都相同。行列式是矩阵的固有属性——展开路径只是您的选择。

不过,这个选择会影响工作量。包含更多零的行或列意味着需要计算的代数余子式更少。如果某一行有两个零、三个非零元素,您只需为那三个元素计算代数余子式——零对应的项对和没有贡献。开始之前,请先扫描矩阵,寻找包含零最多的行或列。

分步演示:代数余子式展开如何工作

代数余子式展开每次都遵循相同的 3 个步骤。

步骤 1:选择一行或一列。 扫描矩阵,选择包含零最多的行或列。非零元素越少,需要计算的代数余子式越少。

步骤 2:对该行或该列中的每个非零元素:

  • 计算余子式 M_ij——删除第 i 行与第 j 列,然后对剩余矩阵取行列式。

  • 根据棋盘式符号模式,施加符号因子 (-1)^(i+j),得到代数余子式 C_ij

  • 用元素 a_ij 乘以其代数余子式 C_ij

步骤 3:把所有乘积相加。

The determinant

行列式

这就是行列式的值。

如果某些子矩阵仍大于 2×2,请对它们重复同样的过程,直到化为 2×2 的行列式——此时可直接用 ad - bc 求解。

示例 1:2×2 矩阵的代数余子式展开

让我们从最简单的情形把一切串联起来。

考虑这个 2×2 矩阵:

Sample 2x2 matrix

示例 2x2 矩阵

沿第 1 行展开。两个元素为 a_11 = 3a_12 = 1

  • 对于 a_11 = 3:删除第 1 行与第 1 列。剩下的就是 (4)。符号因子为 (-1)^(1+1) = +1。因此 C_11 = +4

  • 对于 a_12 = 1:删除第 1 行与第 2 列。剩下的就是 (2)。符号因子为 (-1)^(1+2) = -1。因此 C_12 = -2

现在将乘积相加:

Determinant calculation

行列式计算

您会发现,这与标准的 2×2 公式 ad - bc = (3)(4) - (1)(2) = 10 相吻合。代数余子式展开与“对角线相乘”的捷径得到的是同一个答案。

示例 2:3×3 矩阵的代数余子式展开

现在来完整走一遍 3×3 的示例。

考虑这个矩阵:

Sample 3x3 matrix

示例 3x3 矩阵

第 1 行在 (1,2) 位置有一个零,因此沿第 1 行展开。这个零意味着我们可以完全跳过一个代数余子式的计算。

步骤 1:设定展开式

Expansion setup (1)

展开设定(1)

由于 a_12 = 0,中间一项消失:

Expansion setup (2)

展开设定(2)

我们只需计算两个代数余子式。这就是选对行带来的好处。

步骤 2:计算 C_11

现在删除第 1 行与第 1 列。剩下如下:

First computation

第一次计算

位置 (1,1) 的符号为 (-1)^(1+1) = +1,因此 C_11 = +2

步骤 3:计算 C_13

接下来删除第 1 行与第 3 列。得到:

Second computation

第二次计算

位置 (1,3) 的符号为 (-1)^(1+3) = +1,因此 C_13 = +11

步骤 4:求和乘积

Determinant calculation

行列式计算

这就是行列式的值。通过一开始选择含有零的那一行,您把一个需要计算三个代数余子式的问题,变成了只需计算两个的任务。要学会“巧干”。

如何选择最佳的行或列

您选择的行或列不会改变结果,但会改变工作量。

务必先找零。 在所选行或列中的每个零都意味着少算一个代数余子式。在上面的 3×3 示例中,一个零就把工作量从三个代数余子式降到了两个。在更大的矩阵中,某一行若有多个零,可以省去更多子行列式的计算。

这里有几点值得记住:

  • 一处零意味着少算一个代数余子式
  • 两处零意味着少算两个代数余子式
  • 若除一个元素外其余全为零,则只需计算一个代数余子式

随着矩阵规模增长,这一点更为重要。对一个 n×n 矩阵,朴素的代数余子式展开的时间复杂度呈阶乘增长——例如 4×4 需要计算四个 3×3 行列式,每个又会展开成三个 2×2 的行列式。仅在开始求和前,您就要完成 24 次单独的计算。5×5 则是 120 次。

对于大矩阵,代数余子式展开并非合适工具。 行变换与 LU 分解在大矩阵上要快得多。代数余子式展开更适合 2×2 与 3×3 的情形,或在理论工作中需要符号化表达行列式时使用。

对于手工计算的任何问题,在开始之前花几秒钟扫描一下,找出包含最多零的行或列。这是减少算术错误的最简单方法。

代数余子式展开与递归结构

代数余子式展开自带递归结构。

要找一个 n×n 矩阵的行列式,您沿某一行或列展开,计算若干 (n-1)×(n-1) 矩阵的行列式。每个又会展开成 (n-2)×(n-2) 矩阵。不断递减,直到变为 2×2 并可直接求解。

这种递归性质从代数上刻画了行列式。它不仅告诉您如何计算行列式,还定义了各个维度下行列式“是什么”。

不过,递归是有代价的。

每进入一层展开,就会倍增子问题的数量;对大矩阵而言,计算量增长很快。这也是数值库底层不采用代数余子式展开的原因。行变换与因式分解方法的可扩展性好得多。

对于小矩阵和理论工作,递归结构正是所需。对更大的问题,最好另觅方法。

与伴随矩阵的联系

代数余子式是矩阵求逆的基石。它们不仅仅用于帮助您计算行列式。

如果您为矩阵 A 的每个元素计算代数余子式 C_ij,就得到一个代数余子式矩阵 C。对其转置——行列互换——便得到伴随矩阵

The adjugate matrix

伴随矩阵

由此,矩阵的逆就直接得出:

Matrix inverse

矩阵逆

通俗地说,这意味着您需要先计算所有代数余子式,把它们排成矩阵,转置,然后再除以行列式。这就是矩阵的逆。

这里有两点值得记住:

  1. 仅当 det(A) ≠ 0 时该方法才有效——行列式为零意味着矩阵不可逆
  2. 该公式是精确的,这使它适用于理论工作与符号代数。对于大规模数值计算,其他方法更快。

如果您好奇它与代数余子式展开的关联,只需记住:伴随矩阵中的每个元素都来自展开过程中要计算的代数余子式。给出行列式的同一过程,也提供了矩阵求逆所需的一切。

代数余子式展开的性质

代数余子式展开有若干值得了解的性质。它们能帮您避免反复怀疑结果,并帮助您发现捷径。

以下四条性质需要记住:

  • 沿任意一行或一列展开,结果相同。 您可以沿第 2 行或第 3 列展开——行列式不会改变。选择包含最多零的那一行或那一列
  • 行列式对每一行都是线性的。 如果将某一行按常数 k 缩放,行列式也按 k 缩放。这直接源自代数余子式与各元素的乘积形式
  • 交换两行会使行列式变号。 交换一次,行列式取相反数;交换两次,又回到原值。这就是为何要谨慎记录行变换
  • 若两行线性相关,则行列式为零。 线性相关意味着一行是另一行的数倍——更一般地,行向量没有张成整个空间。此时矩阵奇异,不存在逆

这些性质使您能在展开前对矩阵进行简化——做行变换、发现相关性、避免不必要的计算。

常见错误

代数余子式展开常见的失误反复出现。以下是需要注意的点。

  • (-1)^(i+j) 符号遗忘。 这是最常见的错误。您正确计算了余子式,与元素相乘,却因忽略符号因子而得出错误答案。写下代数余子式前务必先核对棋盘式符号模式
  • 为余子式删除了错误的行或列。 计算 M_ij 时,您要删除的是元素所在的第 i 行与第 j 列。在 3×3 中,剩余矩阵在不同删除操作下看起来可能相似,容易误删
  • 递归过程中过早停止。 当子矩阵仍是 3×3 或更大时,必须继续展开。有些人会把 3×3 的余子式当成 2×2,直接套用 ad - bc
  • 递归步骤中的算术错误。 递归越深,需要跟踪的乘法与符号翻转越多。任一早期子行列式中的小错误都会层层传递。合并结果前,请逐个认真完成每个 2×2 的行列式

若最终答案看起来不对,首先复核符号模式与删除的行列是否正确。

何时使用代数余子式展开

代数余子式展开在若干特定场景下是恰当工具。

对于小矩阵,它是最直接的做法。2×2 十分简单,3×3 也能在几分钟内手算完成。到了 4×4 及以上,递归步骤增长很快,其他方法更快且更不易出错。

它也是理论与符号推导中的常用方法。若您在做证明、推导公式,或要计算含有符号变量而非具体数字的行列式,代数余子式展开能给出精确的符号表达。行约减对数字很友好,但在符号场景会变得繁琐。

何时使用的快速总结:

  • 处理 2×2 或 3×3 矩阵
  • 需要精确的符号结果,而非数值近似
  • 需要在证明中显式展开行列式
  • 希望加深对行列式意义的直观理解

对于大型数值矩阵,请跳过它。行约减与 LU 分解要快得多,而且能显著降低算术错误的累积风险。多数数值库底层采用这些方法,理由正是如此。

将代数余子式展开视为手算与理论工具,而非通用算法,更为恰当。

结语

代数余子式展开为计算任意方阵的行列式提供了一种系统的、递归的途径。

两个构件——余子式与 (-1)^(i+j) 的符号模式——驱动整个过程。把这两点处理好,其余就顺理成章。选择含零的行或列以降低工作量,将问题化简为 2×2 的行列式,并把结果求和。

除了行列式之外,该方法还与伴随矩阵和矩阵求逆公式相连。展开过程中计算的代数余子式,正是构成 adj(A) 的那些量——这使代数余子式展开成为从代数角度理解矩阵求逆的基础。

对于小矩阵与理论工作,它是最直观透明的方法;对于大型数值矩阵,请选择行约减或数值库。

如果您想亲眼见识代数余子式展开的应用,欢迎报名我们的 R 语言数据科学线性代数 课程。

代数余子式展开常见问答

什么是代数余子式展开?

代数余子式展开(也称拉普拉斯展开)是一种用于计算任意方阵行列式的方法。其做法是沿某一行或某一列展开,将每个元素与其代数余子式相乘并求和。该过程会递归地把大矩阵化为更小的矩阵,直到只剩下可直接求解的 2×2 行列式。

我应该在何时使用代数余子式展开?

代数余子式展开最适合用于小矩阵——2×2 与 3×3——以及需要精确表达的理论或符号问题。对于大型数值矩阵,行约减与 LU 分解更快、更不易出错。多数数值库底层采用这些方法。

余子式与代数余子式有什么区别?

余子式 M_ij 是删除第 i 行与第 j 列后所得矩阵的行列式。代数余子式 C_ij 则在余子式基础上施加符号因子 (-1)^(i+j),根据位置决定是否翻转符号。展开公式中实际使用的是代数余子式。

为什么选择哪一行或哪一列不影响结果?

沿任意一行或一列展开都会得到相同的行列式——这是该方法的基本性质。选择只会影响算术工作量,不会影响结果。选择含零较多的行或列可减少需要计算的代数余子式数量。

代数余子式展开如何与矩阵求逆相联系?

展开过程中计算得到的代数余子式正是构造伴随矩阵 adj(A)(即代数余子式矩阵的转置)所需的值。矩阵的逆满足 A^{-1} = (1 / det(A)) * adj(A)。因此,代数余子式展开支撑了矩阵求逆的代数公式。

主题

与 DataCamp 一起学习

Courses

Linear Algebra for Data Science in R

4小时
20.8K
This course is an introduction to linear algebra, one of the most important mathematical topics underpinning data science.
查看详情Right Arrow
开始课程
查看更多Right Arrow