矩阵相乘公式|矩阵相乘运算公式全面解析
从维度匹配到具体计算,从常见误区到工程应用,本文系统梳理矩阵乘法的核心逻辑与实战技巧,助您彻底掌握这一线性代数基础工具。
矩阵乘法的定义与核心公式
在数学中,矩阵相乘公式并非简单的元素对应相乘,而是基于严格的维度匹配与线性变换逻辑。两个矩阵 A 和 B 可乘的充要条件是:A 的列数必须等于 B 的行数。
cij = ∑k=1n aik · bkj
上述公式揭示了矩阵乘法的本质:矩阵相乘运算公式本质上是行向量与列向量的点积运算。A 的第 i 行与 B 的第 j 列对应位置相乘后求和,得到结果矩阵 C 的第 (i,j) 项。
从线性变换角度看,矩阵乘法表示两个线性变换的复合。例如,若矩阵 A 表示旋转操作,矩阵 B 表示缩放操作,则 AB 表示先缩放后旋转的复合变换。这种“先变换再变换”的逻辑,正是矩阵乘法区别于普通数值乘法的关键所在。
关于矩阵乘法的三大常见误区
误区一:所有矩阵都能相乘
这是最普遍的错误认知。矩阵乘法对维度有严格要求:A 的列数必须等于 B 的行数。例如,3×2 矩阵不能与 4×3 矩阵相乘,因为 2 ≠ 4。若强行计算,将导致维度不匹配,结果无定义。
误区二:AB = BA 恒成立
矩阵乘法不满足交换律!即使 AB 和 BA 都有定义(如 A 和 B 均为方阵),AB 与 BA 通常不相等。例如,当 A 是 2×3 矩阵、B 是 3×2 矩阵时,AB 是 2×2 矩阵,而 BA 是 3×3 矩阵,维度已不同,更不可能相等。
误区三:单位矩阵乘法无意义
单位矩阵 I 在乘法中起到“1”的作用:AI = IA = A(当维度匹配时)。例如,3×3 单位矩阵左乘任意 3×n 矩阵,结果不变;右乘任意 m×3 矩阵,结果亦不变。但若维度不匹配(如用 2×2 单位矩阵去乘 3×4 矩阵),则运算无法进行。
矩阵乘法四步计算法
设矩阵 A 为 m×n 型,矩阵 B 为 p×q 型。只有当 n = p 时,AB 才有定义。此时结果矩阵 AB 的维度为 m×q。
- A 的列数 = B 的行数 → 可乘
- A 的列数 ≠ B 的行数 → 不可乘
- 结果矩阵行数 = A 的行数,列数 = B 的列数
AB 的第 i 行第 j 列元素,由 A 的第 i 行与 B 的第 j 列计算得出。注意:是 A 的“行”与 B 的“列”配对,而非行与行或列与列。
对配对的行向量与列向量执行点积运算:对应位置相乘后累加求和。
关键提示:每项乘积的索引必须满足“行索引固定、列索引递增”(对行向量)与“行索引递增、列索引固定”(对列向量)。
重复前三步,计算所有 m×p 个元素,填入结果矩阵 C。注意:计算顺序可自由选择(按行、按列或按对角线),但必须保证所有位置都被覆盖。
初学者推荐按“行优先”顺序:先计算 C 的第 1 行所有元素,再计算第 2 行……直至第 m 行。熟练后可采用“对角线法”提升效率:先计算主对角线方向的元素(c11, c22, c33…),再计算其周围元素。
经典实例:3×2 与 2×3 矩阵相乘
设矩阵 A 为 3×2 型,矩阵 B 为 2×3 型:
A 是 3 行 2 列(3×2),B 是 2 行 3 列(2×3)。由于 A 的列数(2)等于 B 的行数(2),因此 AB 有定义,结果为 3×3 矩阵。
计算 c11(A 第 1 行 × B 第 1 列):
c11 = 1×4 + 2×7 = 4 + 14 = 18
计算 c12(A 第 1 行 × B 第 2 列):
c12 = 1×5 + 2×8 = 5 + 16 = 21
计算 c13(A 第 1 行 × B 第 3 列):
c13 = 1×6 + 2×9 = 6 + 18 = 24
计算 c21(A 第 2 行 × B 第 1 列):
c21 = 3×4 + 4×7 = 12 + 28 = 40
计算 c22(A 第 2 行 × B 第 2 列):
c22 = 3×5 + 4×8 = 15 + 32 = 47
计算 c23(A 第 2 行 × B 第 3 列):
c23 = 3×6 + 4×9 = 18 + 36 = 54
计算 c31(A 第 3 行 × B 第 1 列):
c31 = 5×4 + 6×7 = 20 + 42 = 62
计算 c32(A 第 3 行 × B 第 2 列):
c32 = 5×5 + 6×8 = 25 + 48 = 73
计算 c33(A 第 3 行 × B 第 3 列):
c33 = 5×6 + 6×9 = 30 + 54 = 84
| 18 | 21 | 24 |
| 40 | 47 | 54 |
| 62 | 73 | 84 |
验证结果:3×2 × 2×3 = 3×3,符合维度规则;所有计算步骤均满足点积定义,结果正确。
当矩阵较大时,可将其划分为若干子块,对子块进行矩阵乘法。例如将 4×4 矩阵分为四个 2×2 子块,再按常规公式计算子块乘积。此方法在计算机图形学与大规模线性系统求解中广泛应用。
矩阵乘法发展时间轴
Arthur Cayley 在论文中首次系统定义矩阵乘法,提出“矩阵的乘积”概念,为现代线性代数奠定基础。
James Joseph Sylvester 引入“矩阵”(matrix)一词,源自拉丁语“母体”,强调矩阵作为线性变换载体的本质。
量子力学诞生,矩阵力学由海森堡提出,矩阵乘法成为描述物理可观测量非对易性的核心工具。
计算机诞生后,矩阵乘法算法(如分治法、Strassen 算法)成为数值计算研究热点,推动高性能计算发展。
深度学习兴起,矩阵乘法成为神经网络前向/反向传播的核心操作,GPU 专为矩阵运算优化设计。
稀疏矩阵乘法、低秩近似、量子矩阵乘法等前沿方向持续发展,拓展矩阵理论的应用边界。
网友还关心:矩阵相乘常见问题
交换律要求 AB = BA,但矩阵乘法的维度规则决定了多数情况下 AB 与 BA 甚至维度不同。即使两者维度相同(如 A 和 B 均为 n×n 方阵),运算结果也通常不等。
例如:设 A = [[1,2],[3,4]],B = [[0,1],[1,0]],则 AB = [[2,1],[4,3]],而 BA = [[3,4],[1,2]],明显不等。
几何上,这对应“先旋转后缩放”与“先缩放后旋转”的结果不同,符合物理直觉。
矩阵 O 满足:任意矩阵 A 与零矩阵相乘(维度匹配时)结果为零矩阵,即 AO = O,OA = O。
单位矩阵 I 满足:对任意同型方阵 A,有 AI = IA = A。单位矩阵是乘法的“恒等元”,如同数值中的 1。
注意:单位矩阵必须是方阵(n×n),且对角线元素全为 1,其余为 0。
只需比较两个矩阵的“内维度”是否相等:第一个矩阵的列数(右侧数字)是否等于第二个矩阵的行数(左侧数字)。
记忆口诀:“内定外果”——内维度决定是否可乘,外维度决定结果形状。
例如:(4×5) × (5×2) 可乘,结果为 4×2;(3×2) × (4×3) 不可乘,因为 2 ≠ 4。
在神经网络中,每一层的输出可表示为:输出 = 激活函数(权重矩阵 × 输入向量 + 偏置)。
例如,全连接层(Dense Layer)的运算即为矩阵乘法:输入向量与权重矩阵相乘,实现特征的线性变换,再通过非线性激活函数提取高阶特征。
反向传播中,梯度计算同样依赖矩阵乘法,通过链式法则逐层回传误差信号。
技巧一:观察特殊结构——若某行或列含大量零,可跳过对应项;若某行/列为 1,0,0…,则结果直接取对应列/行。
技巧二:利用分配律——A(B+C) = AB + AC,可将复杂矩阵拆分为简单矩阵之和。
技巧三:几何直觉——将矩阵视为线性变换,思考“输入如何被拉伸、旋转、投影”,有时可避免繁琐计算。
矩阵乘法的现实应用场景
D 模型的旋转、缩放、平移均通过矩阵乘法实现。顶点着色器中,模型矩阵 × 视图矩阵 × 投影矩阵,共同完成空间坐标变换。
神经网络每一层的前向传播本质是矩阵乘法。例如,Transformer 模型中的注意力机制依赖 Q×KT 计算注意力分数。
卷积操作可转化为矩阵乘法(im2col 方法)。图像与卷积核的卷积,等价于展开图像块后与权重矩阵相乘,极大提升计算效率。
列昂惕夫投入产出模型中,总产出 = 中间投入 + 最终需求,矩阵形式为 X = AX + Y,解为 X = (I−A)−1Y,其中 (I−A)−1 称为 Leontief 逆矩阵。
线性系统状态方程:x(k+1) = Ax(k) + Bu(k)。离散系统状态转移由矩阵 A 的幂决定,连续系统则依赖矩阵指数 eAt。
量子门操作用酉矩阵表示,量子线路即为一系列矩阵乘积。n 量子比特系统的状态空间为 2n 维复向量空间,运算完全依赖矩阵代数。
总结与学习建议
- 维度匹配是前提:A 的列数 = B 的行数
- 结果维度由外层决定:m×n × n×p = m×p
- 计算本质是点积:行向量 × 列向量
- 不满足交换律:AB ≠ BA(一般情况)
- 满足结合律与分配律:(AB)C = A(BC),A(B+C) = AB + AC
- 夯实基础:先掌握 2×2 与 3×3 矩阵的手动计算,理解行与列的对应关系。
- 可视化辅助:用表格或色块标记参与计算的行与列,避免索引混淆。
- 编程验证:用 Python(NumPy)或 MATLAB 验证手算结果,培养直觉。
- 几何理解:结合线性变换理解矩阵乘法,思考“输入空间如何被映射到输出空间”。
例如:单位矩阵 = 不变换;对角矩阵 = 沿坐标轴缩放;置换矩阵 = 重排坐标轴。 - 拓展应用:从图形变换、数据投影、最小二乘拟合等实际问题切入,深化理解。
- 书籍:《线性代数及其应用》(David C. Lay)、《矩阵分析》(Roger A. Horn)
- 在线课程:MIT OpenCourseWare 18.06《线性代数》(Gilbert Strang)
- 交互工具:3Blue1Brown“本质线性代数”系列视频(YouTube)
- 练习平台:Khan Academy 线性代数模块、LeetCode 矩阵相关题目