【伴随矩阵怎么求】详细计算方法与应用

伴随矩阵是线性代数中一个非常重要的概念,它与矩阵的逆有着紧密的联系。理解如何计算伴随矩阵是掌握矩阵运算和解决线性方程组等问题的关键。本文将详细解答关于伴随矩阵的常见疑问,并提供具体的计算步骤和示例。

伴随矩阵(Adjugate Matrix)是什么?

一个方阵 A 的伴随矩阵记作 adj(A)A*。它不是直接通过某个简单的公式从 A 得出,而是通过一个中介过程:先计算 A 的每一个元素的 代数余子式,形成一个由所有代数余子式构成的矩阵,然后再将这个矩阵进行 转置

简单来说,伴随矩阵就是 代数余子式矩阵的转置

理解伴随矩阵的关键概念:余子式与代数余子式

在计算伴随矩阵之前,必须先弄懂什么是余子式和代数余子式。

  1. 余子式 (Minor)

    对于一个 n 阶方阵 A 中的元素 aij (位于第 i 行第 j 列),其余子式记作 Mij。Mij 是由矩阵 A 划去 第 i 行和第 j 列后剩下的 (n-1) 阶子矩阵的 行列式

  2. 代数余子式 (Cofactor)

    对于元素 aij,其代数余子式记作 Cij。代数余子式 Cij 在余子式 Mij 的基础上,根据元素位置 (i, j) 的奇偶性附加一个符号:

    Cij = (-1)i+j * Mij

    这个符号规则可以简单记忆为棋盘模式:

    + – + – …
    – + – + …
    + – + – …

    即如果 i+j 是偶数,符号为 +1 (Cij = Mij);如果 i+j 是奇数,符号为 -1 (Cij = -Mij)。

伴随矩阵的计算步骤:如何一步步求出伴随矩阵?

现在我们来详细拆解计算 n 阶方阵 A 的伴随矩阵 adj(A) 的步骤:

  1. 计算所有元素的余子式 (Mij)

    对于矩阵 A 的每一个元素 aij (i 从 1 到 n, j 从 1 到 n),计算对应的余子式 Mij。这意味着你需要计算 n² 个 (n-1) 阶子矩阵的行列式。

  2. 计算所有元素的代数余子式 (Cij)

    使用公式 Cij = (-1)i+j * Mij,根据每个余子式 Mij 计算其对应的代数余子式 Cij。同样,这会得到 n² 个代数余子式。

  3. 构造代数余子式矩阵 (C)

    将步骤 2 中计算出的所有代数余子式 Cij 按照它们原始元素 aij 的位置排成一个 n 阶方阵。这个矩阵就是代数余子式矩阵,记作 C 或 [Cij]nxn

    C =
    $$\begin{bmatrix}
    C_{11} & C_{12} & … & C_{1n} \\
    C_{21} & C_{22} & … & C_{2n} \\
    … & … & … & … \\
    C_{n1} & C_{n2} & … & C_{nn}
    \end{bmatrix}$$

  4. 转置代数余子式矩阵,得到伴随矩阵 (adj(A))

    将步骤 3 中得到的代数余子式矩阵 C 进行转置。矩阵的转置就是将其行变成列,列变成行。即,原来在第 i 行第 j 列的元素 Cij,在转置矩阵中将位于第 j 行第 i 列。

    转置后的矩阵就是矩阵 A 的伴随矩阵 adj(A)

    adj(A) = CT =
    $$\begin{bmatrix}
    C_{11} & C_{21} & … & C_{n1} \\
    C_{12} & C_{22} & … & C_{n2} \\
    … & … & … & … \\
    C_{1n} & C_{2n} & … & C_{nn}
    \end{bmatrix}$$

    请注意,adj(A) 的第 i 行第 j 列的元素是 Cji (A 的第 j 行第 i 列元素的代数余子式)。这是很多人容易出错的地方。

伴随矩阵计算示例:2×2 矩阵

我们以一个简单的 2×2 矩阵为例:

A =
$$\begin{bmatrix}
a & b \\
c & d
\end{bmatrix}$$

按照上面的步骤计算伴随矩阵:

  1. 计算余子式:

    • M₁₁ (划去第 1 行第 1 列) = det([d]) = d
    • M₁₂ (划去第 1 行第 2 列) = det([c]) = c
    • M₂₁ (划去第 2 行第 1 列) = det([b]) = b
    • M₂₂ (划去第 2 行第 2 列) = det([a]) = a
  2. 计算代数余子式:

    • C₁₁ = (-1)¹⁺¹ * M₁₁ = +1 * d = d
    • C₁₂ = (-1)¹⁺² * M₁₂ = -1 * c = -c
    • C₂₁ = (-1)²⁺¹ * M₂₁ = -1 * b = -b
    • C₂₂ = (-1)²⁺² * M₂₂ = +1 * a = a
  3. 构造代数余子式矩阵:

    C =
    $$\begin{bmatrix}
    C_{11} & C_{12} \\
    C_{21} & C_{22}
    \end{bmatrix}$$
    =
    $$\begin{bmatrix}
    d & -c \\
    -b & a
    \end{bmatrix}$$

  4. 转置得到伴随矩阵:

    adj(A) = CT =
    $$\begin{bmatrix}
    d & -b \\
    -c & a
    \end{bmatrix}$$

所以,对于 2×2 矩阵
$$\begin{bmatrix} a & b \\ c & d \end{bmatrix}$$, 其伴随矩阵是
$$\begin{bmatrix} d & -b \\ -c & a \end{bmatrix}$$. 注意这是主对角线元素互换,副对角线元素变号。这是一个非常有用的快速计算 2×2 伴随矩阵的技巧。

伴随矩阵计算示例:3×3 矩阵

对于阶数更高的矩阵,计算过程更加繁琐,但步骤是一样的。我们以一个通用的 3×3 矩阵为例:

A =
$$\begin{bmatrix}
a_{11} & a_{12} & a_{13} \\
a_{21} & a_{22} & a_{23} \\
a_{31} & a_{32} & a_{33}
\end{bmatrix}$$

我们需要计算 9 个余子式和对应的 9 个代数余子式。

计算代数余子式 (Cij)

下面计算每个元素的代数余子式:

  • C₁₁: (-1)¹⁺¹ * det($$ \begin{bmatrix} a_{22} & a_{23} \\ a_{32} & a_{33} \end{bmatrix} $$) = a₂₂a₃₃ – a₂₃a₃₂
  • C₁₂: (-1)¹⁺² * det($$ \begin{bmatrix} a_{21} & a_{23} \\ a_{31} & a_{33} \end{bmatrix} $$) = -(a₂₁a₃₃ – a₂₃a₃₁) = a₂₃a₃₁ – a₂₁a₃₃
  • C₁₃: (-1)¹⁺³ * det($$ \begin{bmatrix} a_{21} & a_{22} \\ a_{31} & a_{32} \end{bmatrix} $$) = a₂₁a₃₂ – a₂₂a₃₁
  • C₂₁: (-1)²⁺¹ * det($$ \begin{bmatrix} a_{12} & a_{13} \\ a_{32} & a_{33} \end{bmatrix} $$) = -(a₁₂a₃₃ – a₁₃a₃₂) = a₁₃a₃₂ – a₁₂a₃₃
  • C₂₂: (-1)²⁺² * det($$ \begin{bmatrix} a_{11} & a_{13} \\ a_{31} & a_{33} \end{bmatrix} $$) = a₁₁a₃₃ – a₁₃a₃₁
  • C₂₃: (-1)²⁺³ * det($$ \begin{bmatrix} a_{11} & a_{12} \\ a_{31} & a_{32} \end{bmatrix} $$) = -(a₁₁a₃₂ – a₁₂a₃₁) = a₁₂a₃₁ – a₁₁a₃₂
  • C₃₁: (-1)³⁺¹ * det($$ \begin{bmatrix} a_{12} & a_{13} \\ a_{22} & a_{23} \end{bmatrix} $$) = a₁₂a₂₃ – a₁₃a₂₂
  • C₃₂: (-1)³⁺² * det($$ \begin{bmatrix} a_{11} & a_{13} \\ a_{21} & a_{23} \end{bmatrix} $$) = -(a₁₁a₂₃ – a₁₃a₂₁) = a₁₃a₂₁ – a₁₁a₂₃
  • C₃₃: (-1)³⁺³ * det($$ \begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix} $$) = a₁₁a₂₂ – a₁₂a₂₁

构造代数余子式矩阵 (C)

C =
$$\begin{bmatrix}
a_{22}a_{33} – a_{23}a_{32} & a_{23}a_{31} – a_{21}a_{33} & a_{21}a_{32} – a_{22}a_{31} \\
a_{13}a_{32} – a_{12}a_{33} & a_{11}a_{33} – a_{13}a_{31} & a_{12}a_{31} – a_{11}a_{32} \\
a_{12}a_{23} – a_{13}a_{22} & a_{13}a_{21} – a_{11}a_{23} & a_{11}a_{22} – a_{12}a_{21}
\end{bmatrix}$$

转置得到伴随矩阵 (adj(A))

将矩阵 C 的行变成列,列变成行:

adj(A) = CT =
$$\begin{bmatrix}
a_{22}a_{33} – a_{23}a_{32} & a_{13}a_{32} – a_{12}a_{33} & a_{12}a_{23} – a_{13}a_{22} \\
a_{23}a_{31} – a_{21}a_{33} & a_{11}a_{33} – a_{13}a_{31} & a_{13}a_{21} – a_{11}a_{23} \\
a_{21}a_{32} – a_{22}a_{31} & a_{12}a_{31} – a_{11}a_{32} & a_{11}a_{22} – a_{12}a_{21}
\end{bmatrix}$$

可以看到,对于 3×3 矩阵,计算量显著增加,涉及到多次计算 2×2 行列式。对于更高阶的矩阵,计算伴随矩阵会变得非常耗时和复杂。

伴随矩阵和逆矩阵有什么关系?哪里会用到伴随矩阵?

伴随矩阵最核心的应用在于计算矩阵的逆。对于一个可逆的方阵 A (即其行列式 det(A) 不为零),它的逆矩阵 A⁻¹ 可以用伴随矩阵和行列式来表示:

A⁻¹ = (1 / det(A)) * adj(A)

这意味着如果你已经计算出了矩阵 A 的伴随矩阵 adj(A) 和行列式 det(A) (需要先判断 det(A) 是否为零,不为零才能计算逆矩阵),那么求逆矩阵就非常直接了:将伴随矩阵的每一个元素除以行列式的值即可。

除了求逆矩阵,伴随矩阵还出现在克莱姆法则 (Cramer’s Rule) 中,用于求解线性方程组。克莱姆法则利用行列式和伴随矩阵的概念来直接写出线性方程组的解的表达式。

计算伴随矩阵的“多少”工作量?

正如前面示例所示,计算伴随矩阵的工作量随着矩阵阶数 n 的增加而急剧增加。

  • 对于 2×2 矩阵,只需要计算 4 个 1×1 行列式 (即元素本身)。
  • 对于 3×3 矩阵,需要计算 9 个 2×2 行列式。
  • 对于 4×4 矩阵,需要计算 16 个 3×3 行列式,而每个 3×3 行列式又需要计算 3 个 2×2 行列式。
  • 对于 n 阶矩阵,需要计算 n² 个 (n-1) 阶行列式。

计算一个 n 阶行列式本身的计算量就大约是 O(n!) 级别(使用定义或代数余子式展开),虽然有更快的算法(如高斯消元法计算行列式是 O(n³)),但计算 n² 个行列式然后转置,总体计算复杂度对于大型矩阵来说仍然非常高。因此,在实际应用中,对于大型矩阵求逆,通常不会通过计算伴随矩阵再除以行列式的方法,而是使用如高斯-约旦消元法等更有效率的数值方法。伴随矩阵在理论分析、小规模计算以及符号计算中更为常见。

总结:如何求伴随矩阵?

求一个方阵的伴随矩阵,核心步骤是:

  1. 计算出矩阵中每个元素的代数余子式 (考虑符号的余子式)。
  2. 将这些代数余子式按照原元素位置排列,构成代数余子式矩阵。
  3. 将代数余子式矩阵进行转置,就得到了伴随矩阵。

掌握了代数余子式的计算和矩阵转置,就能正确求出任何阶数的方阵的伴随矩阵(只要计算能力允许)。


伴随矩阵怎么求