矩阵运算
加减乘/转置/行列式/逆矩阵
运算操作
基础运算 · 支持 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 个高频疑问