矩阵计算器,免费

执行矩阵运算:加法、减法、乘法、转置、行列式和逆矩阵。

矩阵 A

矩阵 B

工作原理

设置矩阵 A 和 B 的维度,输入数值并选择运算。计算器会检查维度并执行运算,结果以清晰的矩阵网格形式显示。

支持的运算

常见问题

支持哪些矩阵维度?

支持最大 6×6 的矩阵。输入数值前,请为每个矩阵选择行数和列数。

什么时候可以计算逆矩阵?

矩阵的逆仅对方阵(行数等于列数)且行列式非零时存在。奇异矩阵(行列式为 0)没有逆矩阵。

我的数据会保存吗?

不会。所有计算都在您的浏览器中运行。没有任何内容被保存或发送到服务器。

矩阵究竟是什么

矩阵是按行列排列、被视为单一数学对象的数字矩形数组。其形状记作m × n,m为行数,n为列数,行始终在前。内部的单个数字称为元素条目;第i行第j列的元素记作aij,使用基于1的索引。(将数学论文移植到代码时,最常见的bug之一正是这种基于1的约定与C、Python和JavaScript基于0索引之间的错位。)

向量是只有一行(1 × n,「行向量」)或一列(m × 1,「列向量」)的矩阵。标量是1 × 1矩阵。这种嵌套关系至关重要:它意味着线性代数中的每种运算(点积、投影、变换)都可以统一表示为矩阵运算,这也是1900年后矩阵成为应用数学通用语言的原因。

简史

目前已知最早的先驱见于中国的《九章算术》(约公元前2世纪),其中使用了一种名为方程的列表式高斯消元法求解联立线性方程组。「矩阵」这一现代术语由英国数学家James Joseph Sylvester于1850年创造,源自拉丁语「子宫」一词,意指孕育子行列式的结构。奠基之作是其好友兼合作者Arthur Cayley于1858年发表的《矩阵理论回忆录》,将矩阵乘法、单位矩阵、零矩阵和逆矩阵形式化,使矩阵从符号便利工具升华为独立的代数体系。

19世纪末至20世纪初,高斯-约当消元法、特征值理论和谱定理将矩阵确立为线性代数的核心工具。20世纪的转折点包括:Werner Heisenberg 1925年的矩阵力学量子理论(物理学家由此开始重视矩阵);John von Neumann与Herman Goldstine 1947年关于高阶矩阵数值求逆的奠基性论文;以及BLAS(1979年发布)和LAPACK(1992年发布):这两个优化库是MATLAB到NumPy等所有科学计算平台最终调用的底层支撑。

六种核心运算详解

加法与减法。两个矩阵必须具有完全相同的维数。结果形状相同,每个元素为逐元素之和:cij = aij + bij。2×3矩阵与3×2矩阵无法相加,此运算无定义。矩阵加法满足交换律和结合律,与普通数字加法相同。

矩阵乘法。使矩阵强大的运算,也是初学者最常出错的运算。要使C = A × B有意义,内维数必须匹配:若A为m × n,B必须为n × p,结果C为m × p。中间的「n」相消;外侧的「m」和「p」保留。每个元素计算为A某行与B某列的点积cij = Σ aik · bkj,对k求和。

一个2×2的运算示例:

A = [1 2]   B = [5 6]   A·B = [1·5+2·7  1·6+2·8] = [19 22]
    [3 4]       [7 8]         [3·5+4·7  3·6+4·8]   [43 50]

矩阵乘法不满足交换律:A·B ≠ B·A,两者通常不等,有时两个乘积的形状甚至不同。(若A为2×3,B为3×2,则A·B为2×2,而B·A为3×3。)这种不交换性是线性代数丰富性的来源,也是Cayley 1858年论文被视为奠基之作的原因。

转置:记作AT,交换行和列。原本位于第i行第j列的元素变为第j行第i列的元素。若A为m × n,则AT为n × m。有用的恒等式:(A·B)T = BT·AT,注意顺序颠倒。

行列式:概括方阵的单个标量。2×2矩阵的行列式为ad − bc;对于更大的矩阵,通过余子式展开递归计算(超过4×4时不切实际),或通过LU分解计算(计算机使用的算法,O(n³))。从几何角度看,行列式的绝对值是线性变换缩放面积的系数(在2D中)、体积(在3D中),以此类推。行列式为2意味着单位正方形映射到面积为2的平行四边形;行列式为负意味着方向翻转(镜像反射);行列式为零意味着变换将所有内容压缩到一条线或一个点,此时矩阵是奇异的(不可逆的)。

逆矩阵:记作A⁻¹,是唯一满足A · A⁻¹ = A⁻¹ · A = I的矩阵,其中I为单位矩阵。逆矩阵「撤销」A的操作。仅对行列式不为零的方阵存在逆矩阵。计算机通过高斯-约当消元或LU分解计算逆矩阵。对于2×2矩阵,公式为著名的(1/det) × [d, -b; -c, a]

矩阵在教科书数学之外的重要性

矩阵在现代计算中无处不在,因为每一种线性变换都是一个矩阵:

值得了解的特殊矩阵

数值稳定性说明

浮点矩阵运算隐藏着教科书示例中不会出现的陷阱。矩阵的条件数衡量其逆矩阵对输入微小扰动的放大程度:对于病态矩阵,某个元素0.1%的误差可导致结果1000%的误差。典型的病态示例是Hilbert矩阵(元素为1/(i+j-1)),其条件数随规模指数级增大;6×6 Hilbert矩阵的条件数已达10⁷左右,意味着求逆时会损失七位有效数字。

在实践中,计算科学家几乎从不显式计算A⁻¹。要求解A·x = b,他们使用LU或QR分解;要隐式使用逆矩阵,他们通过分解计算A⁻¹·b,而不是先建出A⁻¹。对于病态或矩形方程组,通常首选基于SVD的伪逆(Moore-Penrose逆)。本计算器为教学目的显式计算逆矩阵,在小规模时没有问题,但扩大规模时值得注意。

诚实的适用范围

本计算器支持最大6×6矩阵的加/减/乘/转置/行列式/逆矩阵运算,即学生在第一门线性代数课程中遇到的运算。它计算特征值、特征向量或矩阵分解(LU、QR、SVD);不展示行化简步骤;不支持符号或分数元素;不处理复数;也不接受A²·BT等矩阵表达式。若需这些功能,专用工具(Symbolab、Wolfram Alpha、MATLAB、NumPy、Octave、SageMath)是更好的选择。

更多问题

为什么矩阵乘法不满足交换律?

因为矩阵代表变换,而变换的顺序至关重要。先旋转再平移与先平移再旋转不同,平移会从不同的起始方向产生不同的效果。矩阵乘法的不交换性是这一物理事实的代数编码,也是三维图形和量子力学既有趣又棘手的原因。

什么情况下矩阵不可逆?

当行列式为零时(等价地,当行(或列)线性相关时),等价地,当它所代表的线性变换将某个非零向量映射到零时。从几何角度看,矩阵将高维空间映射到低维子空间,而无法恢复丢失的维度。这类矩阵称为「奇异矩阵」。对于技术上可逆但病态的矩阵,逆矩阵在理论上存在,但在浮点运算中极不准确,详见上面的数值稳定性部分。

为什么数学中使用基于1的索引,而代码中使用基于0的索引?

数学约定可追溯到数百年前,第一行就是第1行,因为计数从1开始。编程语言选择基于0的索引,是因为它简化了数组内存的指针运算:偏移量为i的元素位于base + i × element_size,无需-1修正。两种约定都根深蒂固;将论文中「第3行」转换为需要matrix[2]的代码,是最可靠的bug来源之一。

有最快的矩阵乘法算法吗?

朴素的三重循环算法运行时间为O(n³)。Volker Strassen于1969年证明2×2矩阵只需7次乘法(而非8次),递归应用后得到渐近复杂度O(n^2.807)。数十年来的持续改进将理论下界推低至约O(n^2.371),但常数因子过大,对于实际遇到的任何矩阵,在BLAS / cuBLAS内实现的朴素O(n³)仍然更快。下界在数学上尚未解决:至少为O(n²),但确切答案无人知晓。

有任何内容发送到服务器吗?

没有。运算是在您浏览器中以JavaScript执行的简单浮点操作。您的矩阵数据不会离开此页面;一旦加载完毕,本工具可离线使用。

相关工具