矩阵乘法¶
PS: 本文不包含具体代码实现
Danger
矩阵相乘只有在第一个矩阵的列数和第二个矩阵的行数相同时才有意义。
矩阵乘法的定义¶
设 \(A\) 为 \(P \times M\) 的矩阵,\(B\) 为 \(M \times Q\) 的矩阵,设矩阵 \(C\) 为矩阵 \(A\) 与 \(B\) 的乘积,
其中矩阵 \(C\) 中的第 \(i\) 行第 \(j\) 列元素可以表示为:
\[ C_{i,j} = \sum_{k=1}^MA_{i,k},B_{k,j} \]
\[A=\begin{bmatrix}a_{1,1}&a_{1,2}&a_{1,3} \\a_{2,1}&a_{2,2}&a_{2,3}\end{bmatrix} B=\begin{bmatrix} b_{1,1}&b_{1,2} \\ b_{2,1}&b_{2,2} \\ b_{3,1}&b_{3,2}\end{bmatrix} \]
\[C = A \times B = \begin{bmatrix} a_{1,1}b_{1,1}+a_{1,2}b_{2,1}+a_{1,3}b_{3,1}&a_{1,1}b_{1,2}+a_{1,2}b_{2,2}+a_{1,3}b_{3,2} \\ a_{2,1}b_{1,1}+a_{2,2}b_{2,1}+a_{2,3}b_{3,1}&a_{2,1}b_{2,2}+a_{1,2}b_{2,2}+a_{2,3}b_{3,2}\end{bmatrix} \]
在矩阵乘法中,结果 \(C\) 矩阵的第 \(i\) 行第 \(j\) 列的数,就是由矩阵 \(A\) 第 \(i\) 行 \(M\) 个数与矩阵 \(B\) 第 \(j\) 列 \(M\) 个数分别 相乘再相加 得到的。这里的 相乘再相加,就是向量的内积。乘积矩阵中第 \(i\) 行第 \(j\) 列的数恰好是乘数矩阵 \(A\) 第 \(i\) 个行向量与乘数矩阵 \(B\) 第 \(j\) 个列向量的内积,口诀为 左行右列。
矩阵乘法满足结合律,不满足一般的交换律。
利用结合律,矩阵乘法可以利用快速幂的思想来优化。