MatrixCalc

逆矩阵计算器

求方阵的逆矩阵并逐步查看每一次初等行变换——在 [A | I] 上作高斯-若尔当消元、伴随矩阵公式或蒙坦特法。结果用精确分数,而非四舍五入的小数。

矩阵 A
: 3
: 3
矩阵 B
: 3
: 3
运算
结果
选择一个运算以在此处查看结果。错误信息也会显示在这里。

提示:可调整矩阵大小(最多 50×50)。A×B 要求 A 的列数等于 B 的行数。行列式/逆/迹/幂 需要方阵。

React, Tailwind & shadcn/ui. No external math deps. — 中文

输入矩阵,打开高级标签页,点击 A⁻¹。如果矩阵是奇异的,你会看到一条 明确的提示,而不是一个错误答案。分步面板把中间值显示为精确分数——是 3/5,不是 0.6000000001——因为它用的是有理数算术,而不是浮点数。

逆矩阵何时存在

逆矩阵 A⁻¹ 是把原矩阵撤销的那个矩阵:A·A⁻¹ = A⁻¹·A = I。它只对方阵存在, 而且只有当行列式不为零时才存在。行列式为零的矩阵称为奇异矩阵,它根本没有逆——没有大的,也没有近似的,一个都没有。变换毁掉了信息, 没有任何矩阵能把它找回来。

2×2 的捷径

交换主对角线,把副对角线变号,再除以行列式:

ab
cd
⁻¹ = 1/(ad − bc) ·
d−b
−ca

除以 ad − bc 这一步,正是奇异性现身的地方:行列式为零就没有东西可除,而公式失效的 时刻恰好就是逆矩阵不存在的时刻。

对增广矩阵作高斯-若尔当消元

这是通用方法,也是计算器分步展示的方法。把 A 写在单位阵旁边,做行变换直到左半边变成 单位阵。右半边变成的东西就是 A⁻¹

4710
2601
103/5−7/10
01−1/52/5

如果某一刻左边出现了一整行零,就停下:矩阵是奇异的,逆不存在。请务必用乘法检验——A·A⁻¹ 必须精确地等于单位阵,而 A × B 按钮两下就能替你完成这项检查。

上方载入的这个 3×3 矩阵会算出整数,因为它的行列式恰好是 −1:

211
132
100
⁻¹ =
001
−213
3−1−5

看看原矩阵的最后一行:它只挑出第一个坐标,把另外两个都丢掉。逆矩阵必须把那些信息补回来,这就是 它的元素相比被求逆的矩阵显得很大的原因。这是一条普遍规律——行列式越接近零,逆矩阵就越大,因为 det(A⁻¹) = 1/det(A)

伴随矩阵公式

A⁻¹ = adj(A) / det(A),其中伴随矩阵是代数余子式矩阵的转置。先构造余子式矩阵 C(i,j) = (−1)^(i+j)·M(i,j),再转置,最后除以行列式。

这个公式很优雅,证明里用的也是它,因为它把逆写成了封闭形式,而不是某个算法的产物。它同样不实用: 需要 n−1 阶行列式。超过 3×3 就该用高斯-若尔当消元。

接近奇异本身就是麻烦

矩阵不必真的奇异才会出问题。只要行列式相对于元素的大小算是小的,这个矩阵就是病态的:输入上一点微小的改动会让逆矩阵产生巨大的变化,而在浮点运算里,那点改动可能纯粹来自舍入误差。 通过这样的逆去解方程组,可能得到一个没有一位数字正确、看上去却完全合理的答案。

这就是下面那条建议背后的实际理由。而这里的分步面板用精确分数运算,完全绕开了这个问题:你读到的是 真正的逆矩阵,而不是它的浮点近似。

为什么你很少真的需要逆矩阵本身

多数时候目标并不是逆矩阵,而是解 Ax = b;逆矩阵只是课堂上记住的那条路。而它是昂贵的 那条。先算出 A⁻¹ 再做乘法,运算量大约是直接把 [A | b] 消元的三倍,而且 精度在两个阶段上损失,而不是一个。

逆矩阵真正站得住脚的场合,是你要的就是这个矩阵本身而非某一个解:读出每个输入对每个输出的影响、 把它与别的变换复合,或者代入一条用 A⁻¹ 写成的公式。如果你只想要 x,请用消元法;如果同一个 A 要配上很多组解,请用LU 分解,那还要更省。

值得记住的性质与检验

  • 算完务必检验:把答案与原矩阵相乘,必须得到单位阵。
  • (A·B)⁻¹ = B⁻¹·A⁻¹——顺序颠倒过来。
  • (Aᵀ)⁻¹ = (A⁻¹)ᵀ——转置和求逆可以交换次序。
  • det(A⁻¹) = 1 / det(A),所以接近奇异的矩阵,其逆会很大。
  • 正交矩阵满足 A⁻¹ = Aᵀ,求逆等于不花力气。
  • 对角矩阵的逆,就是把对角线上每个元素取倒数;零出现在对角线上就说明它不可逆。

常见错误

  • 把元素一个个取倒数。逆矩阵不是倒数构成的矩阵——1/a(i,j) 与它毫无关系。
  • 把顺序搞反。(A·B)⁻¹ = B⁻¹·A⁻¹,不是 A⁻¹·B⁻¹
  • 用逆矩阵解方程组。Ax = b 而言,把 [A | b] 消元运算更少、数值上也更准确。
  • 在大矩阵上用伴随矩阵。它需要 n−1 阶行列式,超过 3×3 就比消元慢得多。
  • 把逆矩阵和转置混为一谈。两者只在正交矩阵上重合,一般情况下毫无关系。

常见问题

为什么计算器说我的矩阵没有逆?
它的行列式为零,因此是奇异矩阵。检查是否有某一行是其他行的倍数或和——通常原因就在这里。
非方阵可以求逆吗?
在通常意义下不行。长方形矩阵最多只有单侧逆或伪逆,那是另一种运算。
为什么步骤里显示的是分数?
步骤引擎使用精确有理数算术,中间值因此保持精确。你随时可以把面板切换成小数。
怎么检验答案是否正确?
把逆矩阵与原矩阵相乘,结果必须是单位阵:对角线上全是 1,其余位置全是 0。
解线性方程组时该先求逆矩阵吗?
几乎不该。把增广矩阵 [A | b] 消元只需大约三分之一的运算量,而且比先构造逆再相乘在数值上更稳定。

其他计算器