矩阵运算

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

423 次访问

矩阵输入

矩阵 A 2 2
矩阵 B 2 2
矩阵 A
矩阵 B
支持小数(0.5)与分数(1/3)
行列式算法: 逆矩阵算法:

运算操作

基础运算 · 支持 A B 互算

单矩阵分析

分解 / 特征 / 方程组

运算结果

点击上方按钮开始运算

使用说明 · 数学约定

输入格式:每个单元格支持小数(如 3.14)或分数(1/3-2/5)。

数值精度:浮点比较取 ε = 1e-10,主元小于该阈值视为奇异;展示时统一保留 6 位有效数字,整数原样输出。

行列式:高斯消元 O(n³),余子式展开 O(n!)。n > 4 时建议用高斯消元。

逆矩阵:高斯-约旦把 [A | I] 化作 [I | A⁻¹];伴随矩阵法 A⁻¹ = adj(A) / det(A),仅供小尺寸验证用。

特征值:2×2 闭式 λ = (tr ± √(tr²−4det))/2;3×3 用三次方程公式;其他尺寸用 QR 算法迭代(无位移,仅供教学)。

正交化:Gram-Schmidt 按列依次去掉与已正交化基的投影,得到与 A 列空间等价的正交规范基 Q。

解方程:A·x = b,其中 b 取自矩阵 B 的第 1 列(B 须为列向量或多列向量,仅用第一列)。

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

关于本工具

了解工具定位 · 使用场景 · 对比优势

使用场景

📐

线性方程组求解

理工科学生或工程师遇到 3 元一次方程组时,手动消元容易出错且耗时。本工具将系数矩阵与常数矩阵输入后,直接通过逆矩阵或行列式法输出唯一解,省去反复验算的精力,尤其适合考试检查或工程参数反算场景。

🎮

3D 图形坐标变换

游戏开发或计算机图形学初学者在实现物体旋转 / 缩放时,需要手动计算变换矩阵。本工具提供矩阵乘法与转置功能,快速验证旋转矩阵 R 与平移矩阵 T 的复合结果,避免因手算顺序错误导致画面变形,加速原型调试。

📊

数据降维预处理

数据分析师做 PCA 降维前,需计算协方差矩阵及其特征值。本工具直接输入原始数据矩阵,一键求出行列式与逆矩阵,快速判断矩阵是否可逆、特征值是否全正,省去在 Excel 或 Python 中编写中间步骤的时间。

🔢

多元回归系数计算

经济学或统计学研究者做多元线性回归时,需用最小二乘法求解系数矩阵 β = (XᵀX)⁻¹XᵀY。本工具支持矩阵转置与乘法运算,直接输出中间结果,避免在 R 或 SPSS 中反复切换窗口,适合快速验证模型假设。

🧮

电路网络分析

电气工程师在分析复杂电阻网络时,需建立节点电压方程的系数矩阵并求解。本工具通过行列式判断方程是否唯一解,再结合逆矩阵直接输出各节点电位,替代手算基尔霍夫方程组的繁琐过程,提升电路设计效率。

对比矩阵本工具 vs 竞品 vs 传统方法

维度本工具竞品 A (Symbolab)传统方法 (手工计算)
数据隐私纯浏览器,零上传上传到服务器处理完全本地,无数据泄露
处理速度1 秒内3-5 秒 (含网络延迟)数分钟至数小时 (取决于矩阵大小)
离线可用完全离线需联网完全离线
大小限制无硬性限制 (受浏览器内存限制)有矩阵大小限制 (如 10x10)无限制 (受限于人力)
收费免费高级功能付费免费 (但耗时)
注册无需注册需注册无需注册
错误率零 (算法确定)零 (算法确定)高 (人工易出错)
操作复杂度输入即得结果输入即得结果高 (需掌握线性代数知识)

使用指南

上手步骤 · 输入输出 · 避坑提示

输入输出示例8 个典型场景,覆盖常规、边界与易错

输入输出说明
[[1,2],[3,4]] + [[5,6],[7,8]][[6,8],[10,12]]典型场景:两个 2×2 矩阵加法
[[1,2,3],[4,5,6]] * [[7,8],[9,10],[11,12]][[58,64],[139,154]]典型场景:2×3 与 3×2 矩阵乘法
det([[1,2],[3,4]])-2典型场景:2×2 矩阵行列式计算
inv([[1,2],[3,4]])[[-2,1],[1.5,-0.5]]边界 case:2×2 可逆矩阵求逆
det([[0,0],[0,0]])0边界 case:零矩阵行列式恒为 0
inv([[1,2],[2,4]])矩阵不可逆(行列式为 0)易错 case:行列式为 0 的奇异矩阵
[[1,2],[3,4]] - [[1,2],[3,5]][[0,0],[0,-1]]易错 case:减法结果含负数和零
transpose([[1,2,3],[4,5,6]])[[1,4],[2,5],[3,6]]典型场景:2×3 矩阵转置为 3×2

常见错误对照8 个常踩的坑 · 错误 → 修复

1. 矩阵乘法时把行列顺序搞反

错误
A = [[1,2],[3,4]]; B = [[5,6],[7,8]]; 计算 A × B 时写成 B × A 的结果
修复
A × B = [[19,22],[43,50]];B × A = [[23,34],[31,46]],两者不同

矩阵乘法不满足交换律:A×B ≠ B×A(除非特殊矩阵)。必须按题目要求的顺序输入。

2. 行列式只适用于方阵却输入非方阵

错误
输入 2×3 矩阵 [[1,2,3],[4,5,6]] 并点击「行列式」
修复
只对 n×n 方阵(如 2×2、3×3)计算行列式;非方阵应使用其他操作(如转置)

行列式的数学定义只适用于方阵。工具应提示「仅支持方阵」,用户需先确认矩阵维度。

3. 逆矩阵计算时矩阵奇异(行列式为 0)

错误
输入 [[1,2],[2,4]] 并点击「逆矩阵」
修复
先计算行列式:det([[1,2],[2,4]]) = 0,该矩阵不可逆;应检查矩阵是否满秩

行列式为 0 的矩阵没有逆矩阵。工具应返回「矩阵奇异」错误,用户需检查数据或改用伪逆。

4. 转置操作后误以为原矩阵被修改

错误
输入 A = [[1,2],[3,4]],点击转置得到 [[1,3],[2,4]],然后再次点击转置期望得到原矩阵,但实际得到 [[1,2],[3,4]]
修复
转置是幂等操作:转置两次恢复原矩阵。但若工具每次返回新矩阵,需手动重新输入原矩阵

转置不改变原矩阵(除非原地修改)。工具通常返回新矩阵,用户需区分「输入」和「结果」。

5. 矩阵加法/减法时维度不匹配

错误
A = [[1,2],[3,4]](2×2),B = [[5,6,7],[8,9,10]](2×3),直接相加
修复
仅当两个矩阵维度完全相同(行数、列数均相等)时才能相加/减

矩阵加减法要求形状一致。工具应提示「维度不匹配」,用户需检查两个矩阵的行列数。

6. 用逗号分隔矩阵元素时混用中文逗号

错误
输入 [[1,2],[3,4]](中文逗号)
修复
输入 [[1,2],[3,4]](英文逗号)

中文逗号(,)与英文逗号(,)是不同字符,JSON/数组解析器只识别英文逗号。

7. 矩阵乘法时误以为元素级乘法(Hadamard 积)

错误
A = [[1,2],[3,4]],B = [[5,6],[7,8]],期望结果 = [[5,12],[21,32]]
修复
标准矩阵乘法结果是 [[19,22],[43,50]];元素级乘法需使用对应函数(如 numpy.multiply)

矩阵乘法(点积)与元素级乘法(Hadamard 积)是不同运算。工具默认做标准乘法,用户需明确需求。

8. 输入稀疏矩阵时用全零行/列导致计算异常

错误
输入 [[0,0,0],[0,0,0],[1,2,3]] 计算行列式
修复
行列式为 0(因为第一、二行全零),但用户可能期望非零结果

全零行/列使行列式为 0,且矩阵奇异。用户应检查数据是否完整,避免无意中引入零行。

工作原理

公式推导 · 流程图解 · 依据出处

核心公式

det(A) = Σ_{σ∈S_n} sgn(σ) ∏_{i=1}^n a_{i,σ(i)}

变量说明

  • A — n×n 方阵
  • det(A) — 矩阵 A 的行列式值
  • σ — n 个元素的排列
  • sgn(σ) — 排列 σ 的符号(+1 或 -1)
  • a_{i,σ(i)} — 矩阵第 i 行第 σ(i) 列元素

示例

计算 3×3 矩阵 A = [[2, 1, 0], [3, -1, 4], [1, 2, 1]] 的行列式。按莱布尼茨公式展开:det = 2×(-1)×1 + 1×4×1 + 0×3×2 - 0×(-1)×1 - 2×4×2 - 1×3×1 = -2 + 4 + 0 - 0 - 16 - 3 = -17。

适用范围

适用于任意 n×n 方阵(n≥1)。n>3 时手动计算繁琐,建议用高斯消元法或本工具自动计算。不适用于非方阵(如 2×3 矩阵无行列式)。

原理图

输入矩阵加减乘结果矩阵转置行列式数值结果逆矩阵逆矩阵结果输入矩阵
用户输入 本地处理 输出结果 额外操作

开发者集成

3 种主流语言 · 复制即用

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^T =\n", A.T)

# 行列式
det = np.linalg.det(A)
print(f"det(A) = {det:.2f}")

# 逆矩阵(仅当行列式非零)
if abs(det) > 1e-10:
    A_inv = np.linalg.inv(A)
    print("A^-1 =\n", A_inv)
else:
    print("A 不可逆")
package main

import (
	"fmt"
	"gonum.org/v1/gonum/mat"
)

func main() {
	// 定义 2x2 矩阵
	A := mat.NewDense(2, 2, []float64{1, 2, 3, 4})
	B := mat.NewDense(2, 2, []float64{5, 6, 7, 8})

	// 加法
	var sum mat.Dense
	sum.Add(A, B)
	fmt.Printf("A + B =\n%v\n", mat.Formatted(&sum))

	// 乘法
	var product mat.Dense
	product.Mul(A, B)
	fmt.Printf("A @ B =\n%v\n", mat.Formatted(&product))

	// 转置
	fmt.Printf("A^T =\n%v\n", mat.Formatted(A.T()))

	// 行列式
	det := mat.Det(A)
	fmt.Printf("det(A) = %.2f\n", det)

	// 逆矩阵
	if det != 0 {
		var inv mat.Dense
		if err := inv.Inverse(A); err == nil {
			fmt.Printf("A^-1 =\n%v\n", mat.Formatted(&inv))
		}
	}
}
// 使用 math.js 库(需安装:npm install mathjs)
const math = require('mathjs');

// 定义 2x2 矩阵
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.multiply(A, B));

// 转置
console.log('A^T =', math.transpose(A));

// 行列式
const det = math.det(A);
console.log('det(A) =', det);

// 逆矩阵(仅当行列式非零)
if (Math.abs(det) > 1e-10) {
    console.log('A^-1 =', math.inv(A));
} else {
    console.log('A 不可逆');
}

常见问题

8 个高频疑问

矩阵乘法算出来的结果和手算不一样,是不是工具算错了?
先检查矩阵维度是否匹配:A 的列数必须等于 B 的行数才能相乘。本工具按标准线性代数规则计算,不自动转置或补零。如果维度匹配但结果不同,常见原因是手算时乘了对应位置元素(那是哈达玛积,不是矩阵乘法)。矩阵乘法是行乘列再求和,可以对照一个 2×2 的例子手动验证:[[1,2],[3,4]] × [[5,6],[7,8]] 的结果第一行第一列是 1×5 + 2×7 = 19,不是 1×5=5。
行列式算出来是 0,是不是工具出 bug 了?
行列式为 0 不一定是 bug,更可能是矩阵本身是奇异的(不可逆)。比如两行成比例、有一行全零、或者行向量线性相关。可以试一个简单的 2×2 矩阵 [[1,2],[2,4]],它的行列式确实是 0 因为第二行是第一行的两倍。如果确认矩阵应该可逆但工具给出 0,检查输入是否有多余空格或小数点丢失导致数值精度问题——本工具用 JavaScript 双精度浮点数,对超过 15 位有效数字的矩阵可能存在舍入误差。
我想算一个 5×5 的逆矩阵,但工具提示不可逆,怎么办?
首先确认矩阵行列式是否为 0(工具同时显示行列式值)。如果行列式不为 0 但仍提示不可逆,检查矩阵是否接近奇异(条件数极大)。比如元素值相差 10 个数量级(如第一行 1e-10,最后一行 1e10),双精度浮点数的舍入误差会导致计算失败。可以尝试将所有元素乘以一个缩放因子(比如 1e6)使数值范围更接近。如果行列式确实为 0,说明矩阵无逆,这是数学性质,不是工具限制。
为什么要输入方阵才能算行列式和逆矩阵?非方阵不行吗?
行列式和逆矩阵在数学上只对方阵(行数=列数)有定义。非方阵没有行列式,也没有传统意义的逆矩阵。如果想对非方阵做类似操作,可以用广义逆(伪逆),但本工具目前只做标准逆矩阵。如果输入了 3×2 矩阵点「求逆」按钮,工具会报错提示行数列数不等,这不是 bug,是数学定义限制。
矩阵元素可以输入分数或小数吗?支持科学计数法吗?
支持小数(如 0.5、-3.14)和整数。分数(如 1/3)需要自行转为小数(0.3333),工具不解析分数格式。科学计数法(如 1e-5)也支持,因为 JavaScript 原生解析。但不支持复数(如 2+3i)和符号变量(如 π、√2)。如果输入非法字符(字母、汉字、特殊符号),工具会提示「输入格式错误」,请检查每个元素是否都是合法数字。
工具会保存我输入的矩阵数据吗?离线也能用吗?
所有矩阵运算完全在浏览器本地执行(JavaScript 实现),不经过任何服务器。输入的数据不会发送到网络,关闭页面即从内存清除。可以断网测试:打开页面后拔掉网线,工具仍然可以正常计算所有矩阵操作。如果担心数据泄露,用隐私模式或断网使用即可。
最大能算多少维的矩阵?算一个 10×10 的逆矩阵会卡死吗?
理论上没有硬性维度限制,但受浏览器内存和 JavaScript 计算性能影响。10×10 的逆矩阵计算量约 1000 次浮点运算,现代浏览器毫秒级完成,不会卡。100×100 的逆矩阵(约 100 万次运算)也只需 1-2 秒。但 500×500 以上时,行列式计算(递归方法)可能耗时数分钟甚至内存溢出。建议 200×200 以内使用,更大矩阵推荐用 MATLAB、Python NumPy 或专业线性代数库。
这个工具和 MATLAB 算出来的结果有差异,该信哪个?
对于 10 维以内、元素值范围在 1e-10 到 1e10 之间的矩阵,两者差异通常在 1e-12 数量级(浮点数舍入误差范围)。差异来源:MATLAB 使用 LAPACK 库底层优化,本工具用 JavaScript 原生浮点运算,对接近奇异矩阵的稳定性不如 LAPACK。如果矩阵条件数很大(比如元素值差 1e15 倍),MATLAB 的结果更可靠。日常教学、作业验证场景,本工具精度完全够用。
选择 打开 +新窗口 esc关闭