左邊的圖表示出要如何計算
的
和
元素,當
是個
矩陣和B是個
矩陣時。分別來自兩個矩陣的元素都依箭頭方向而兩兩配對,把每一對中的兩個元素相乘,再把這些乘積加總起來,最後得到的值即為箭頭相交位置的值。
![{\displaystyle (AB)_{1,2}=\sum _{r=1}^{2}a_{1,r}b_{r,2}=a_{1,1}b_{1,2}+a_{1,2}b_{2,2}}](//wikimedia.org/api/rest_v1/media/math/render/svg/1c2e1059e097b93755b056fac0c073d26fa43612)
![{\displaystyle (AB)_{3,3}=\sum _{r=1}^{2}a_{3,r}b_{r,3}=a_{3,1}b_{1,3}+a_{3,2}b_{2,3}}](//wikimedia.org/api/rest_v1/media/math/render/svg/d1de2c142d577a207d6e59a51669e8848f97a52f)
這種矩陣乘積亦可由稍微不同的觀點來思考:把向量和各係數相乘後相加起來。設
和
是兩個給定如下的矩陣:
![{\displaystyle \mathbf {B} ={\begin{bmatrix}b_{1,1}&b_{1,2}&\dots \\b_{2,1}&b_{2,2}&\dots \\\vdots &\vdots &\ddots \end{bmatrix}}={\begin{bmatrix}B_{1}\\B_{2}\\\vdots \end{bmatrix}}}](//wikimedia.org/api/rest_v1/media/math/render/svg/02149a6ce09437f19588ce0a754bb14d2e1e82a3)
其中
是由所有
元素所组成的向量(column),
是由所有
元素所组成的向量,以此类推。
是由所有
元素所组成的向量(row),
是由所有
元素所组成的向量,以此类推。
則
![{\displaystyle \mathbf {AB} ={\begin{bmatrix}a_{1,1}{\begin{bmatrix}b_{1,1}&b_{1,2}&\dots \end{bmatrix}}+a_{1,2}{\begin{bmatrix}b_{2,1}&b_{2,2}&\dots \end{bmatrix}}+\cdots \\\\a_{2,1}{\begin{bmatrix}b_{1,1}&b_{1,2}&\dots \end{bmatrix}}+a_{2,2}{\begin{bmatrix}b_{2,1}&b_{2,2}&\dots \end{bmatrix}}+\cdots \\\vdots \end{bmatrix}}=A_{1}B_{1}+A_{2}B_{2}+\dots }](//wikimedia.org/api/rest_v1/media/math/render/svg/4f392175f6f0b4404fd4372c221467ea81e2926a)
舉個例子來說:
![{\displaystyle {\begin{bmatrix}1&0&2\\-1&3&1\end{bmatrix}}\cdot {\begin{bmatrix}3&1\\2&1\\1&0\end{bmatrix}}={\begin{bmatrix}1{\begin{bmatrix}3&1\end{bmatrix}}+0{\begin{bmatrix}2&1\end{bmatrix}}+2{\begin{bmatrix}1&0\end{bmatrix}}\\-1{\begin{bmatrix}3&1\end{bmatrix}}+3{\begin{bmatrix}2&1\end{bmatrix}}+1{\begin{bmatrix}1&0\end{bmatrix}}\end{bmatrix}}={\begin{bmatrix}{\begin{bmatrix}3&1\end{bmatrix}}+{\begin{bmatrix}0&0\end{bmatrix}}+{\begin{bmatrix}2&0\end{bmatrix}}\\{\begin{bmatrix}-3&-1\end{bmatrix}}+{\begin{bmatrix}6&3\end{bmatrix}}+{\begin{bmatrix}1&0\end{bmatrix}}\end{bmatrix}}}](//wikimedia.org/api/rest_v1/media/math/render/svg/26f4694e70e6451992a9d7450d787c6dad31248f)
![{\displaystyle ={\begin{bmatrix}5&1\\4&2\end{bmatrix}}}](//wikimedia.org/api/rest_v1/media/math/render/svg/d58ee56e7a79833fd079864bafbfa2f35d3b5735)
左面矩陣的列為為係數表,右邊矩陣為向量表。例如,第一行是[1 0 2],因此將1乘上第一個向量,0乘上第二個向量,2則乘上第三個向量。
一般矩陣乘積也可以想為是行向量和列向量的內積。若
和
為給定如下的矩陣:
且![{\displaystyle \mathbf {B} ={\begin{bmatrix}b_{1,1}&b_{1,2}&b_{1,3}&\dots \\b_{2,1}&b_{2,2}&b_{2,3}&\dots \\b_{3,1}&b_{3,2}&b_{3,3}&\dots \\\vdots &\vdots &\vdots &\ddots \end{bmatrix}}={\begin{bmatrix}B_{1}&B_{2}&B_{3}&\dots \end{bmatrix}}}](//wikimedia.org/api/rest_v1/media/math/render/svg/cf8263dd6f788536de1e3dc44b191a8a5a099cc7)
其中,这里
是由所有
元素所組成的向量,
是由所有
元素所組成的向量,以此類推。
是由所有
元素所組成的向量,
是由所有
元素所組成的向量,以此類推。
则
![{\displaystyle \mathbf {AB} ={\begin{bmatrix}A_{1}\\A_{2}\\A_{3}\\\vdots \end{bmatrix}}\times {\begin{bmatrix}B_{1}&B_{2}&B_{3}&\dots \end{bmatrix}}={\begin{bmatrix}(A_{1}\cdot B_{1})&(A_{1}\cdot B_{2})&(A_{1}\cdot B_{3})&\dots \\(A_{2}\cdot B_{1})&(A_{2}\cdot B_{2})&(A_{2}\cdot B_{3})&\dots \\(A_{3}\cdot B_{1})&(A_{3}\cdot B_{2})&(A_{3}\cdot B_{3})&\dots \\\vdots &\vdots &\vdots &\ddots \end{bmatrix}}}](//wikimedia.org/api/rest_v1/media/math/render/svg/11bbd6247618518bb0931f0bce365af094fbf209)
即
![{\displaystyle \left(\mathbf {AB} \right)_{ij}=A_{i}B_{j}}](//wikimedia.org/api/rest_v1/media/math/render/svg/0b44fcc6a5bdaab16a72ea4a078f34639b17c453)
以 Google Sheet 為例,選取儲存格範圍或者使用陣列,在儲存格輸入
=MMULT({1,0,2;-1,3,1},{3,1;2,1;1,0})
在某些試算表軟體中必須必須按Ctrl+⇧ Shift+↵ Enter 將儲存格內的變數轉換為陣列
上述三種乘積都符合結合律:
![{\displaystyle A(BC)=(AB)C}](//wikimedia.org/api/rest_v1/media/math/render/svg/048f9dfede59a1c2411d5957e29258ae35146d76)
以及分配律:
![{\displaystyle A(B+C)=AB+AC}](//wikimedia.org/api/rest_v1/media/math/render/svg/ae56c08141d4aef506fafafa32a2b288fe23709d)
![{\displaystyle (A+B)C=AC+BC}](//wikimedia.org/api/rest_v1/media/math/render/svg/760b6e6bcdf2144c9503b79986f4eaed5f69508e)
而且和純量乘積相容:
![{\displaystyle c(AB)=(cA)B}](//wikimedia.org/api/rest_v1/media/math/render/svg/5dce97435759084a398945f9cc7eba0d148a0bfb)
![{\displaystyle (Ac)B=A(cB)}](//wikimedia.org/api/rest_v1/media/math/render/svg/c5ef27674cc3595b4d0fb336d33a2c8b8068d812)
![{\displaystyle (AB)c=A(Bc)}](//wikimedia.org/api/rest_v1/media/math/render/svg/9d070c088ee24bb30f0f2ff2e34aba47863eb3dd)
注意上述三個分開的表示式只有在純量體的乘法及加法是可交換(即純量體為一可交換環)時會相同。
其它参考文献包括:
- Strassen, Volker, Gaussian Elimination is not Optimal, Numer. Math. 13, p. 354-356, 1969.
- Coppersmith, D., Winograd S., Matrix multiplication via arithmetic progressions, J. Symbolic Comput. 9, p. 251-280, 1990.
- Horn, Roger; Johnson, Charles: "Topics in Matrix Analysis", Cambridge, 1994.
- Robinson, Sara, Toward an Optimal Algorithm for Matrix Multiplication, SIAM News 38(9), November 2005.