矩阵计算器,免费
执行矩阵运算:加法、减法、乘法、转置、行列式和逆矩阵。
矩阵 A
矩阵 B
工作原理
设置矩阵 A 和 B 的维度,输入数值并选择运算。计算器会检查维度并执行运算,结果以清晰的矩阵网格形式显示。
支持的运算
- 加法与减法· 要求矩阵维度相同
- 乘法· A 的列数必须等于 B 的行数
- 转置· 交换行和列(A^T、B^T)
- 行列式· 仅限方阵(det(A)、det(B))
- 逆矩阵· 行列式非零的方阵(A^−1、B^−1)
常见问题
支持哪些矩阵维度?
支持最大 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]。
矩阵在教科书数学之外的重要性
矩阵在现代计算中无处不在,因为每一种线性变换都是一个矩阵:
- 三维图形:每个位置、旋转、缩放和投影都是一个4×4齐次矩阵。GPU渲染每一帧都要将数以千计的这类矩阵相乘。OpenGL和Direct3D都提供显式矩阵栈;现代引擎对其进行了封装,但底层数学不变。
- 机器学习:每个神经网络层都是一次矩阵乘法。一个拥有700亿参数的现代大语言模型,从结构上看,每次前向传播就是数百次矩阵乘法。cuBLAS、cuDNN、NVIDIA的Tensor Core和谷歌的TPU都是专为大规模矩阵乘法设计的硬件;一句话概括整个AI热潮:GPU使矩阵乘法变得极快。
- 计算机视觉:主成分分析(PCA)和奇异值分解(SVD)将高维像素数据降到低维特征。图像压缩(JPEG的DCT)本质上是矩阵运算。
- 网络搜索:谷歌最初的PageRank算法(Brin和Page,1998年)计算一个3000万行3000万列链接矩阵的主特征向量。之所以有效,是因为矩阵能精确建模马尔可夫链。
- 统计学:线性回归的正规方程为
β = (XTX)−1XTy。每款统计软件都通过QR或SVD分解求解。 - 密码学:像AES这样的分组密码涉及有限域上的矩阵变换。量子计算的门操作是酉矩阵。
- 振动与结构工程:模态分析(求桥梁的固有振动频率)是关于刚度矩阵和质量矩阵的特征值问题。
值得了解的特殊矩阵
- 单位矩阵I:方阵,对角线上为1,其余为0。
A·I = I·A = A。「什么都不做」的矩阵。 - 对角矩阵:非零元素仅出现在主对角线上。用对角矩阵相乘可独立缩放每行或每列。
- 三角矩阵(上三角或下三角),非零元素仅出现在对角线上方(或下方)。易于求逆和求解线性方程组。
- 对称矩阵:
A = AT。所有特征值均为实数;在优化和统计中居核心地位。 - 正交矩阵:
AT·A = I,即逆矩阵等于转置矩阵。旋转矩阵是正交矩阵;正交变换保持长度和角度不变。 - 稀疏矩阵与稠密矩阵:稀疏矩阵的元素大多为零(典型案例是图邻接矩阵、有限元刚度矩阵)。专门的稀疏存储和算法在大规模情境下远快于朴素的稠密方法。
数值稳定性说明
浮点矩阵运算隐藏着教科书示例中不会出现的陷阱。矩阵的条件数衡量其逆矩阵对输入微小扰动的放大程度:对于病态矩阵,某个元素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执行的简单浮点操作。您的矩阵数据不会离开此页面;一旦加载完毕,本工具可离线使用。