计算工具 · 数学计算

矩阵运算

加减乘/转置/行列式/逆矩阵

✓本地处理 · 不上传 ✓免费 · 无需登录 ✓无次数限制 累计 116 次使用
矩阵运算 matrix calculator 支持小数 0.5、分数 1/3 · 行列式与逆矩阵分数精确
A 行 2 列 2 B 行 2 列 2
矩阵 A 2×2
矩阵 B 2×2
det 算法 逆算法 显示
基础运算 · 精确分数
单矩阵分析 · 精确分数
分解 · 特征 · 方程组
运算结果 点击上方任一运算
选择矩阵运算,结果将以精确分数呈现,并可切换小数显示。

输入:每格支持小数 3.14 或分数 1/3、-2/5;方向键 / 回车在格间移动。

精确计算:四则、转置、行列式、逆矩阵、秩、RREF、解方程、伴随 全程用 BigInt 有理数,1/3 即显示 1/3 而非 0.333;可在上方切「小数」显示。

行列式:化三角 O(n³) 记录行交换符号;余子式展开 O(n!) 适合小阶演示。

逆矩阵:高斯-若尔当把 [A | I] 化为 [I | A⁻¹];伴随法 A⁻¹ = adj(A) / det(A)。det = 0 即奇异、无逆并给出提示。

特征值 / LU / QR / Gram-Schmidt / 2D 作用:数值浮点法(2×2、3×3 闭式,更大阶 QR 迭代),用于教学与几何直观。

提示:所有计算在你本机浏览器完成,数据不出本地。

就绪 · A、B 已就位,点选运算开始
第一节

关于本工具

About

手算一个 4×4 矩阵的逆,稍不留神就在代数余子式里错符号。输入矩阵元素,工具即时返回加减乘、转置、行列式与逆矩阵,每一步结果都对应标准线性代数定义。数据仅在浏览器内运算,不上传至服务器——适合作业自查、工程计算时快速验算中间步骤。

使用场景

壹

验证线性回归解

数据分析师小陈刚用 Python 算完一套多元线性回归的系数,但他怀疑数据有共线性导致结果失真。他不想重跑整个模型,而是把设计矩阵和因变量向量复制进本工具,手动算一次正规方程的解(AᵀA 的逆乘 Aᵀb)。工具给出逆矩阵后,他发现行列式接近 0,确认了矩阵奇异性,避免了一次错误的业务决策。

贰

检测图像变换参数

算法工程师在调试一个无人机航拍图像的拼接程序,需要验证仿射变换矩阵的正确性。她手动选取了三个匹配点对,算出变换矩阵后,用本工具计算其行列式。行列式值偏离 1 太多,说明变换包含了非保面积的缩放或剪切,而实际场景只是平移加旋转,从而定位到特征点匹配有误。

叁

核对电路节点方程

大三电子系学生用节点电压法列了一个 4×4 的导纳矩阵,手算逆矩阵求各节点电压时,总觉得自己算错了。他把矩阵输入本工具,得到逆矩阵后与自己手算的逐元素对比,发现第 2 行第 3 列符号反了。修正后重新代入,仿真结果和实验数据吻合,省去了重做实验的半天时间。

肆

快速求解线性方程组

机械工程师在优化一个 3 自由度机械臂的连杆长度,需要反复解 3 个方程组成的线性系统。每次修改一个参数就要重算一遍,手算容易出错且慢。他把系数矩阵和常数向量填入工具,用逆矩阵法一次算出所有变量的精确值,然后复制结果到 CAD 软件里验证运动轨迹,迭代效率提升了 5 倍。

伍

检查网络流量分配

网络管理员在配置 SDN 流表时,需要验证一个 6 节点拓扑的流量分配矩阵是否满足「每节点进出流量守恒」。他把流量矩阵输入本工具,计算其转置矩阵,与原矩阵对比。发现转置后某些非对角线元素不对称,说明存在未记录的环回流量,从而定位到某个交换机的流表规则配置遗漏。

对比矩阵

维度本工具专业数学软件 (如 MATLAB / Octave)手工 / 纸笔计算
隐私矩阵数据完全在浏览器本地处理,不上传任何服务器需将矩阵数据输入到本地安装的软件中,数据不离开本机数据完全在个人控制下,但需手动抄写和计算
离线可用首次加载后,后续计算完全离线,不依赖网络安装后完全离线可用完全离线,仅需纸笔
学习成本打开即用,无需安装或学习软件操作需要学习软件语法(如创建变量、调用函数),有一定门槛需要掌握线性代数的手算规则(如行列式展开、逆矩阵公式)
计算速度浏览器内即时计算,毫秒级返回结果计算速度极快,尤其适合大型矩阵(1000x1000 以上)对于 3x3 以上矩阵,手算耗时且极易出错
矩阵规模限制受浏览器内存限制,适合中小规模矩阵(如 10x10 以内)可处理百万级大型矩阵,无实用规模上限理论上无上限,但实际手算仅适合 3x3 及以下
输入方式直接输入数字,或从表格粘贴数据需按特定语法(如 [1 2; 3 4])输入,或通过界面导入手动抄写到纸上,无输入便捷性可言
结果可追溯性仅显示最终数值结果,不展示中间步骤可显示每一步计算过程,便于教学和调试每一步计算过程都在纸上,完全可追溯
第二节

使用指南

Getting Started

使用步骤

  1. 1在矩阵 A 区域逐格输入行与列的数字,矩阵 B 区域自动同步生成同尺寸空矩阵
  2. 2从「运算」下拉菜单选择:加、减、乘、转置、行列式或逆矩阵
  3. 3点击「计算」按钮,结果区立即显示运算后的矩阵或数值(如行列式值)
  4. 4若选择「逆矩阵」且矩阵不可逆(行列式为 0),结果区显示「不可逆」提示

输入输出示例

输入输出说明
A=[[1,2],[3,4]]; B=[[5,6],[7,8]]; 运算: A+B[[6,8],[10,12]]常规:2×2 矩阵加法,验证基本加法运算
A=[[1,2,3],[4,5,6]]; B=[[7,8],[9,10],[11,12]]; 运算: A×B[[58,64],[139,154]]常规:2×3 与 3×2 矩阵乘法,验证维度匹配与乘法规则
A=[[1,0,0],[0,1,0],[0,0,1]]; 运算: det(A)1边界:单位矩阵的行列式恒为1,验证工具对特殊矩阵的处理
A=[[1,2,3],[4,5,6],[7,8,9]]; 运算: det(A)0边界:奇异矩阵(行列式为0),验证工具对不可逆矩阵的检测
A=[[1,2],[3,4]]; 运算: inv(A)[[-2,1],[1.5,-0.5]]常规:2×2 可逆矩阵的逆,验证逆矩阵计算
A=[[1,2,3],[4,5,6]]; 运算: inv(A)错误:非方阵无法求逆易错:用户常对非方阵求逆,工具应明确报错
A=[[1,2,3],[4,5,6],[7,8,9]]; 运算: inv(A)错误:矩阵不可逆(行列式为0)易错:奇异矩阵求逆,工具应提示不可逆原因

常见错误对照

1.乘法维度不匹配

✗ 错误矩阵 A 为 2×3,矩阵 B 为 4×2,直接输入 A*B
✓ 修复先确认 A 列数等于 B 行数(如 A 2×3 配 B 3×2),或交换顺序计算 B*A(4×2 配 2×3)

矩阵乘法要求左矩阵列数等于右矩阵行数,否则无定义。工具会报错或返回空,但用户常误以为任意两个矩阵都能乘。

2.行列式只对方阵计算

✗ 错误对 2×3 矩阵求行列式
✓ 修复只对 n×n 方阵(如 2×2、3×3)求行列式

行列式定义仅适用于方阵。非方阵没有行列式概念,工具会直接拒绝计算或返回错误。

3.逆矩阵要求方阵且满秩

✗ 错误对 2×3 矩阵求逆,或对行列式为 0 的 2×2 矩阵求逆
✓ 修复仅对行列式 ≠ 0 的方阵求逆(如 2×2 矩阵 [[1,2],[3,4]] 行列式 -2 ≠ 0 可逆)

只有方阵才可能有逆矩阵,且行列式必须非零(满秩)。奇异矩阵(行列式=0)不可逆,工具会返回无解。

4.减法顺序导致符号错误

✗ 错误计算 A-B 时,将 A 和 B 位置互换输入,得到 B-A 的结果
✓ 修复输入时保持 A 在前、B 在后,结果矩阵的每个元素为 A_ij - B_ij

矩阵减法不满足交换律,A-B ≠ B-A。位置颠倒会导致所有元素符号取反。

5.转置符号与共轭转置混淆

✗ 错误对复数矩阵 [[1+i, 2], [3, 4-i]] 直接转置,期望同时取共轭
✓ 修复纯转置只交换行和列,不改变元素值;若需共轭转置(Hermitian 转置)需额外对每个元素取共轭

数学中 T 表示转置(元素不变),H 表示共轭转置(元素取共轭再转置)。本工具转置操作仅做 T,不自动取共轭。

6.标量乘法误写成矩阵乘法

✗ 错误将 2 倍矩阵 A 写成 2*A(若工具将 * 解析为矩阵乘法)
✓ 修复使用标量乘法功能或写成 A*2(若工具支持标量与矩阵混合运算),否则应手动将每个元素乘以 2

标量乘法是每个元素乘以常数,矩阵乘法是行×列求和。若工具未区分运算符,2*A 可能被解释为 1×1 矩阵乘 A,维度不匹配。

7.矩阵元素分隔符不一致

✗ 错误同一矩阵内混合使用空格、逗号、分号分隔元素,如 [1 2,3;4]
✓ 修复统一使用一种分隔方式(如全用空格:[[1 2] [3 4]] 或全用逗号:[[1,2],[3,4]])

大多数工具要求矩阵元素分隔符一致。混用会导致解析错误,工具可能只识别第一个分隔符,后续元素被忽略。

第三节

工作原理

How It Works

核心公式

det(A) = a₁₁a₂₂a₃₃ + a₁₂a₂₃a₃₁ + a₁₃a₂₁a₃₂ - a₁₃a₂₂a₃₁ - a₁₂a₂₁a₃₃ - a₁₁a₂₃a₃₂

变量说明

  • det(A)3×3 方阵 A 的行列式值
  • aᵢⱼ矩阵第 i 行第 j 列元素

示例

矩阵 A = [[1,2,3],[4,5,6],[7,8,10]],det(A) = 1×5×10 + 2×6×7 + 3×4×8 - 3×5×7 - 2×4×10 - 1×6×8 = 50 + 84 + 96 - 105 - 80 - 48 = -3。行列式非零,矩阵可逆。

输入矩阵行列数 / 元素值运算选择加 / 减 / 乘转置 / 行列式 / 逆本地计算纯浏览器执行无服务器交互结果矩阵关键校验:行列数匹配(加减法)方阵判断(行列式 / 逆矩阵)输入格式空格分隔行内元素换行分隔矩阵行
用户输入 / 输出 运算选择 本地处理 校验与格式说明
第四节

开发者集成

For Developers

6 种主流语言实现,复制即用:

import numpy as np # 示例:2x2 矩阵的加减乘、转置、行列式、逆矩阵 A = np.array([[1, 2], [3, 4]]) B = np.array([[5, 6], [7, 8]]) print("A + B:\n", A + B) print("A - B:\n", A - B) print("A @ B:\n", A @ B) # 矩阵乘法 print("A^T:\n", A.T) print("det(A):", np.linalg.det(A)) print("A^-1:\n", np.linalg.inv(A))
// 使用 math.js 库(npm install mathjs) const math = require('mathjs'); const A = [[1, 2], [3, 4]]; const B = [[5, 6], [7, 8]]; console.log('A + B:', math.add(A, B)); console.log('A - B:', math.subtract(A, B)); console.log('A * B:', math.multiply(A, B)); console.log('A^T:', math.transpose(A)); console.log('det(A):', math.det(A)); console.log('A^-1:', math.inv(A));
package main import ( "fmt" "gonum.org/v1/gonum/mat" ) func main() { a := mat.NewDense(2, 2, []float64{1, 2, 3, 4}) b := mat.NewDense(2, 2, []float64{5, 6, 7, 8}) var sum, diff, prod, inv mat.Dense sum.Add(a, b) diff.Sub(a, b) prod.Product(a, b) inv.Inverse(a) fmt.Printf("A+B:\n%v\n", mat.Formatted(&sum)) fmt.Printf("A-B:\n%v\n", mat.Formatted(&diff)) fmt.Printf("A*B:\n%v\n", mat.Formatted(&prod)) fmt.Printf("A^T:\n%v\n", mat.Formatted(a.T())) fmt.Printf("det(A): %.4f\n", mat.Det(a)) fmt.Printf("A^-1:\n%v\n", mat.Formatted(&inv)) }
use nalgebra as na; fn main() { let a = na::Matrix2::new(1.0, 2.0, 3.0, 4.0); let b = na::Matrix2::new(5.0, 6.0, 7.0, 8.0); println!("A + B:\n{}", a + b); println!("A - B:\n{}", a - b); println!("A * B:\n{}", a * b); println!("A^T:\n{}", a.transpose()); println!("det(A): {}", a.determinant()); println!("A^-1:\n{}", a.try_inverse().unwrap()); }
import org.apache.commons.math3.linear.*; public class MatrixOps { public static void main(String[] args) { RealMatrix A = MatrixUtils.createRealMatrix(new double[][]{{1,2},{3,4}}); RealMatrix B = MatrixUtils.createRealMatrix(new double[][]{{5,6},{7,8}}); System.out.println("A+B: " + A.add(B)); System.out.println("A-B: " + A.subtract(B)); System.out.println("A*B: " + A.multiply(B)); System.out.println("A^T: " + A.transpose()); System.out.println("det(A): " + new LUDecomposition(A).getDeterminant()); System.out.println("A^-1: " + new LUDecomposition(A).getSolver().getInverse()); } }
require 'matrix' A = Matrix[[1, 2], [3, 4]] B = Matrix[[5, 6], [7, 8]] puts "A+B: #{A + B}" puts "A-B: #{A - B}" puts "A*B: #{A * B}" puts "A^T: #{A.transpose}" puts "det(A): #{A.determinant}" puts "A^-1: #{A.inverse}"
第五节

常见问题

Q & A
问这个矩阵计算器能不能算带字母的符号矩阵?+
答

不能。本工具只接受纯数字矩阵(整数、小数、分数用小数形式)。输入框里如果写了 x、a、sin 等符号,会直接报错。需要符号运算(如保留 π 或变量)请用 Mathematica、SymPy 或 Maple。

问矩阵乘法算出来结果不对,是不是工具有 bug?+
答

先检查两个矩阵的维度是否匹配:左矩阵列数必须等于右矩阵行数。例如 2×3 和 3×4 可以乘,但 2×3 和 4×3 不能乘——工具会提示维度不匹配,不会出错误结果。如果维度对但结果与预期不同,请确认输入顺序:A×B 和 B×A 结果通常不同。

问行列式算出来是 0 是什么意思?+
答

行列式为 0 表示该矩阵是奇异矩阵(不可逆)。常见原因:某两行成比例、某一行全为零、或行(列)之间存在线性相关。如果后续需要解线性方程组或求逆矩阵,行列式为 0 说明方程组无唯一解或矩阵不可逆,需检查原始数据是否有误。

问逆矩阵算出来结果全是小数,能保留分数形式吗?+
答

不能。本工具所有结果都以浮点数(小数)显示,不做分数化简。如果逆矩阵元素是 1/3,会显示 0.3333333。需要精确分数结果,建议用 SymPy 或 WolframAlpha。不过本工具浮点精度足够应付大部分工程和考试验算场景。

问最多能输入多大的矩阵?会不会卡死?+
答

本工具纯前端运算,矩阵大小受浏览器内存限制。实测 10×10 以内加减乘逆秒出;50×50 行列式计算可能卡几秒;100×100 以上逆矩阵或行列式容易导致浏览器无响应。建议日常使用控制在 20×20 以内,大矩阵用专业软件。

问数据会上传到服务器吗?隐私安全吗?+
答

本工具全部在浏览器本地计算,数据不上传任何服务器。即使断网也能正常使用(页面加载后)。所以输入的矩阵数据(例如公司财务数据、科研数据)不会外泄,适合处理敏感信息。

问转置和逆矩阵有什么区别?什么时候用转置什么时候用逆?+
答

转置是行列互换(A[i][j] 变 A[j][i]),计算最快,不涉及除法。逆矩阵相当于矩阵的倒数(A⁻¹),用于解方程组 A·X = B 时两边左乘 A⁻¹。简单说:只调整方向用转置;需要消去系数用逆。两者结果通常不同,不要混用。

问矩阵加减法时两个矩阵大小不一样,工具会报错吗?+
答

会。两个矩阵必须行数和列数完全相同才能加减。例如 3×2 和 2×3 不能直接加。工具输入框会分别显示行数列数,提交后如果维度不匹配会提示错误。如果确实需要操作不同大小的矩阵,考虑用扩维(补零)后再计算。

隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。

↑↓选择 ↵打开 ⌘+↵新窗口 esc关闭