矩阵乘法计算器

下一步

输入矩阵 A(m×n)和矩阵 B(n×p)。若矩阵 A 的列数与矩阵 B 的行数相同,计算器将返回乘积 AB,即一个 m×p 矩阵。结果中的每个元素都是矩阵 A 某一行与矩阵 B 某一列的点积,工具会逐一明确显示这些点积之和,让你无需凭空假设即可清晰追踪整个代数运算过程。

矩阵乘法的原理

  1. 1

    设置维度

    A 和 B 的行数/列数。A 的列数必须等于 B 的行数。

  2. 2

    输入数值

    填写每个单元格;支持小数和负数。

  3. 3

    读取乘积

    C = A·B,维度为 A 的行数 × B 的列数。

  4. 4

    展开单个单元格

    点击任意 C_ij 即可查看点积 row_i(A) · col_j(B),并列出其中的每一项乘积。

规则

(AB)_ij = Σ_k A_ik · B_kj

乘积的元素 (i, j) 等于矩阵 A 第 i 行与矩阵 B 第 j 列对应相乘之和。

2×2 计算示例

A = [[1, 2], [3, 4]], B = [[5, 6], [7, 8]]

  • C_11 = 1·5 + 2·7 = 5 + 14 = 19
  • C_12 = 1·6 + 2·8 = 6 + 16 = 22
  • C_21 = 3·5 + 4·7 = 15 + 28 = 43
  • C_22 = 3·6 + 4·8 = 18 + 32 = 50

AB = [[19, 22], [43, 50]]

请检查相反的顺序:BA = [[23, 34], [31, 46]]。它不等于 AB,矩阵乘法不满足交换律。

维度相容性

A 的维度 B 的维度 是否相容? 乘积维度
2×3 3×4 2×4
3×3 3×3 3×3
2×3 4×3 -
1×n n×1 1×1(标量)
n×1 1×n n×n(外积)

性质

  • 结合律: A(BC) = (AB)C。
  • 分配律: A(B + C) = AB + AC。
  • 不满足交换律: 一般情况下 AB ≠ BA。
  • 单位元: AI = IA = A,其中 I 为相应大小的单位矩阵。
  • 零矩阵: A · 0 = 0,但需注意,AB = 0 并不意味着 A = 0 或 B = 0。

为什么应用中顺序至关重要

  • 计算机图形学: 变换矩阵按从右到左的顺序复合。M_screen = M_projection · M_view · M_model。交换缩放和旋转会得到不同的结果。
  • 旋转: 先绕 X 轴再绕 Y 轴旋转,与先绕 Y 轴再绕 X 轴旋转并不相同。
  • 马尔可夫链: 转移矩阵乘以状态向量即前进一步;交换顺序毫无意义。

计算复杂度

用标准教科书方法将两个 n×n 矩阵相乘需要 O(n³) 次运算。Strassen 算法可将其降至 O(n^2.81),理论下界还要更低,但对于规模在数百以内的矩阵,得益于对缓存友好的访问模式,教科书方法在实践中仍是最快的。

常见问题

第一个矩阵的列数必须与第二个矩阵的行数相同。2×3 · 2×3 无法计算,因为 A 有 3 列而 B 只有 2 行。你需要对 B 进行转置:2×3 · 3×2 是可行的,会得到一个 2×2 矩阵。

标量乘以矩阵请使用通用矩阵计算器,本工具专门用于两个矩阵相乘。

因为 AB 的每个元素都是 A 某一行与 B 某一列的点积;交换顺序后,参与点积的就是不同的行与不同的列。只有特殊的矩阵对(A 与其自身的逆矩阵、A 与单位矩阵、元素互不相同的对角矩阵)才恰好可交换。

可以。1×n 的行向量乘以 n×1 的列向量得到 1×1 的标量(点积)。反过来,n×1 乘以 1×n 会得到 n×n 的外积,一个秩为 1 的矩阵。

不会。乘法在你的浏览器中执行,数值绝不会离开你的设备。

相关工具

此工具还提供其他语言版本