MatrixCalc

关于 MatrixCalc

MatrixCalc 是一个免费的在线矩阵计算器。它可以对最大 50×50 的矩阵执行线性代数的常规运算——加法、减法、乘法、转置、行列式、逆矩阵、秩、迹、幂、特征值——并为其中大部分运算展示完整的解题步骤,让你能够跟随推理过程,而不只是抄一个答案。

为什么做这个

大多数矩阵工具要么只丢给你一个数字、不作任何解释,要么把计算器埋在广告和注册墙底下。这一个完全在你的浏览器里运行,不需要账号,目标是对核对作业的人和只想要一个快速可靠答案的人都真正有用。

解释和数字同样重要。一个只说 det(A) = −59 然后就没有下文的计算器,并没有给你任何能在考场上用得上的东西。所以本站每一个运算页面都带着按钮背后的数学:结果意味着什么、怎样用手把它算一遍、什么样的矩阵该选哪种方法,以及哪些错误具体会扣分。

计算是怎么进行的

所有运算都在本地用 JavaScript 完成——你的矩阵从不离开你的设备。背后没有任何数学库,算法都是直接实现的,而具体跑哪一种取决于矩阵本身:

  • 行列式在 2×2 和 3×3 时用封闭公式,4×4 起改用带部分主元选取的 LU 分解。余子式展开要花 n! 次运算,远不到 50×50 就已经不可行。
  • 逆矩阵和秩来自对增广矩阵作高斯-若尔当消元。
  • 特征值对对称矩阵采用雅可比旋转法,它总能收敛;其余情况采用带 Wilkinson 位移和收缩的 QR 算法。
  • 特征多项式采用 Faddeev–LeVerrier 递推,从各次幂的迹出发构造系数,而不去展开一个符号行列式。
  • 分步解答面板运行的是另一套引擎,使用精确有理数运算,所以中间结果显示为 3/5 这样的分数,而不是 0.6000000001。本该化为零的那一行会真的变成零,而不会留下 1e−16 这样的残差被错当成主元。

结果是怎么核验的

计算引擎配有一套自动化测试,覆盖四则运算、消元、分解、幂、特征值以及各项矩阵性质,每次改动之后、任何东西上线之前都会跑一遍。测试是把一个缺陷只修一次而不是反复修的办法:有人报告结果算错时,出问题的那个矩阵会先变成一条测试用例,然后才是修复。

特征值那部分正是这样被修好的。早先的版本用的是不带位移的 QR 迭代,在很普通的非对称矩阵上就无法收敛——一个特征值为 2、3、4 的三角矩阵就足以让它出错。现在的版本改用带收缩的 Wilkinson 位移,而这次回归已经被测试钉住了。

已知的限制

  • 结果最大支持到 50×50;分步解答止于 8×8,再往上它会打印出上百个矩阵,什么也教不了。
  • 特征值是数值求解的,只收敛到实数特征值。谱为复数的矩阵——比如一个旋转——会报告未收敛,而不会编造答案。
  • 特征值与特征向量没有分步解答面板。算法是迭代而非代数的,中间值属于舍入产物,并不是你能用手复现的推理。
  • 数值结果这条路径使用浮点运算;只有分步解答引擎是精确的。

语言

计算器界面与讲解文字提供十种语言:英语、葡萄牙语、西班牙语、法语、德语、俄语、印尼语、中文、日语和阿拉伯语。每种语言都有各自的网址和各自的文字——没有哪一页是另一页的机器翻译再换面旗子挂上去。你的选择会记在浏览器里。

联系方式

发现了缺陷、算出了错误结果,或者希望增加某种运算?请发邮件到 franfactory.store@gmail.com。如果是报告错误结果,请附上矩阵和你执行的运算——这能让修复快得多。