數學中，矩陣乘法是一種根據兩個矩陣得到第三個矩陣的二元運算，第三個矩陣即前兩者的乘積，稱為矩陣積。設 A 是 ntimes m 的矩陣，B 是 mtimes p 的矩陣，則它們的矩陣積 AB 是 ntimes p 的矩陣。A 中每一行的 m 個元素都與 B 中對應列的 m 個元素對應相乘，這些乘積的和就是 AB 中的一個元素。 矩陣可以用來表示線性對映，矩陣積則可以用來表示線性對映的複合。因此，矩陣乘法是線性代數的基礎工具，不僅在數學中有大量應用，在應用數學、物理學、工程學等領域也有廣泛使用。 一般矩陣乘積 矩陣相乘最重要的方法是一般矩陣乘積。它只有在第一個矩陣的和第二個矩陣的相同時才有定義。一般單指矩陣乘積時，指的便是一般矩陣乘積。若 A 為 mtimes n 矩陣，B 為 ntimes p 矩陣，則他們的乘積 AB 有時記做 Acdot B）會是一個 mtimes p 矩陣。其乘積矩陣的元素如下面式子得出： AB_ij sum_r1n a_ir b_rj a_i1 b_1j a_i2 b_2j cdots a_in b_nj 以上是用矩陣單元的代數系統來說明這類乘法的抽象性質。本節以下各種運演算法都是這個公式的不同角度理解，運算結果相等： 由定義直接計算 左邊的圖表示出要如何計算 AB 的 12 和 33 元素，當 A 是個 4times 2 矩陣和 B 是個 2times 3 矩陣時。分別來自兩個矩陣的元素都依箭頭方向而兩兩配對，把每一對中的兩個元素相乘，再把這些乘積加總起來，最後得到的值即為箭頭相交位置的值。 AB_12 sum_r12 a_1r b_r2 a_11 b_12a_12 b_22 AB_33 sum_r12 a_3r b_r3 a_31 b_13a_32 b_23 向量方法 這種矩陣乘積亦可由稍微不同的觀點來思考：把向量和各係數相乘後相加起來。設 mathbf A 和 mathbf B 是兩個給定如下的矩陣： mathbf A begin bmatrix a_11 a_12 dots a_21 a_22 dots vdots vdots ddots end bmatrix begin bmatrix A_1 A_2 dots end bmatrix mathbf B begin bmatrix b_11 b_12 dots b_21 b_22 dots vdots vdots ddots end bmatrix begin bmatrix B_1 B_2 vdots end bmatrix 其中 A_1 是由所有 a_x1 元素所組成的向量 column，A_2 是由所有 a_x2 元素所組成的向量，以此類推。 B_1 是由所有 b_1x 元素所組成的向量 row，B_2 是由所有 b_2x 元素所組成的向量，以此類推。 則 mathbf AB begin bmatrix a_11 begin bmatrix b_11 b_12 dots end bmatrix a_12 begin bmatrix b_21 b_22 dots end bmatrix cdots a_21 begin bmatrix b_11 b_12 dots end bmatrix a_22 begin bmatrix b_21 b_22 dots end bmatrix cdots vdots end bmatrix A_1 B_1 A_2 B_2 dots 舉個例子來說： 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 begin bmatrix 5 1 4 2 end bmatrix 左面矩陣的列為為係數表，右邊矩陣為向量表。例如，第一行是 1 0 2，因此將 1 乘上第一個向量，0 乘上第二個向量，2 則乘上第三個向量。 向量表方法 一般矩陣乘積也可以想為是行向量和列向量的內積。若 mathbf A 和 mathbf B 為給定如下的矩陣： mathbf A begin bmatrix a_11 a_12 a_13 dots a_21 a_22 a_23 dots a_31 a_32 a_33 dots vdots vdots vdots ddots end bmatrix begin bmatrix A_1 A_2 A_3 vdots end bmatrix 且 mathbf B begin bmatrix b_11 b_12 b_13 dots b_21 b_22 b_23 dots b_31 b_32 b_33 dots vdots vdots vdots ddots end bmatrix begin bmatrix B_1 B_2 B_3 dots end bmatrix 其中，這裡 A_1 是由所有 a_1x 元素所組成的向量，A_2 是由所有 a_2x 元素所組成的向量，以此類推。 B_1 是由所有 b_x1 元素所組成的向量，B_2 是由所有 b_x2 元素所組成的向量，以此類推。 則 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 即 left mathbf AB right_ijA_iB_j 性質 矩陣乘法是不可交換的（即 ABneq BA），除了一些較特別的情況。很清楚可以知道，不可能預期說在改變向量的部份後還能得到相同的結果，而且第一個矩陣的列數必須要和第二個矩陣的行數相同，也可以看出為什麼矩陣相乘的順序會影響其結果。 雖然矩陣乘法是不可交換的，但 AB 和 BA 的行列式總會是一樣的（當 A、B 是同樣大小的方陣時）。 當 A、B 可以被解釋為線性運算元，其矩陣乘積 AB 會對應為兩個線性運算元的複合函式，其中 B 先作用。 在試算表中做矩陣乘法 begin bmatrix 1 0 2 1 3 1 end bmatrix cdot begin bmatrix 3 1 2 1 1 0 end bmatrix begin bmatrix 5 1 4 2 end bmatrix 以 Google Sheet 為例，選取儲存格範圍或者使用陣列，在儲存格輸入 MMULT 102131312110 在某些試算表軟體中必須必須按 將儲存格內的變數轉換為陣列 純量乘積 矩陣 Aa_ij 和純量 r 的純量乘積 rA 的矩陣大小和 A 一樣，rA 的各元素定義如下： rA_ij r cdot a_ij 若我們考慮於一個環的矩陣時，上述的乘積有時會稱做左乘積，而右乘積的則定義為 Ar_ij a_ij cdot r 當環是可交換時，例如實數體或複數體，這兩個乘積是相同的。但無論如何，若環是不可交換的話，如四元數，他們可能會是不同的。例如， ibegin bmatrix i 0 0 j end bmatrix begin bmatrix 1 0 0 k end bmatrix ne begin bmatrix 1 0 0 k end bmatrix begin bmatrix i 0 0 j end bmatrix i 阿達馬乘積 給定兩個相同維度的矩陣可計算有阿達馬乘積，或稱做逐項乘積、分素乘積（elementwise product entrywise product）。兩個 mtimes n 矩陣 A、B 的阿達馬乘積標記為 A circ B，定義為 A circ B_ij a_ij b_ij 的 mtimes n 矩陣。例如， begin bmatrix 1 3 2 1 0 0 1 2 2 end bmatrix circ begin bmatrix 0 0 2 7 5 0 2 1 1 end bmatrix begin bmatrix 1 cdot 0 3 cdot 0 2 cdot 2 1 cdot 7 0 cdot 5 0 cdot 0 1 cdot 2 2 cdot 1 2 cdot 1 end bmatrix begin bmatrix 0 0 4 7 0 0 2 2 2 end bmatrix 需注意的是，阿達馬乘積是克羅內克乘積的子矩陣。 克羅內克乘積 給定任兩個矩陣 A 和 B，可以得到兩個矩陣的直積，或稱為克羅內克乘積 Aotimes B，其定義如下 begin bmatrix a_11 B a_12 B cdots a_1n B vdots vdots ddots vdots a_m1 B a_m2 B cdots a_mn B end bmatrix 當 A 是一 mtimes n 矩陣和 B 是一 ptimes r 矩陣時，Aotimes B 會是一 mptimes nr 矩陣，而且此一乘積也是不可交換的。 舉個例子， begin bmatrix 1 2 3 1 end bmatrix otimes begin bmatrix 0 3 2 1 end bmatrix begin bmatrix 1cdot 0 1cdot 3 2cdot 0 2cdot 3 1cdot 2 1cdot 1 2cdot 2 2cdot 1 3cdot 0 3cdot 3 1cdot 0 1cdot 3 3cdot 2 3cdot 1 1cdot 2 1cdot 1 end bmatrix begin bmatrix 0 3 0 6 2 1 4 2 0 9 0 3 6 3 2 1 end bmatrix 若 A 和 B 分別表示兩個線性運算元 V_1to W_1 和 V_2to W_2，Aotimes B 便為其對映的張量乘積，V_1otimes V_2to W_1otimes W_2 共同性質 上述三種乘積都符合結合律： A BC AB C 以及分配律： A B C AB AC A B C AC BC 而且和純量乘積相容： c AB cA B Ac B A cB AB c A Bc 注意上述三個分開的表示式只有在純量體的乘法及加法是可交換（即純量體為一可交換環）時會相同。 另見 Strassen 演演算法（1969） Winograd 演演算法（1980） CoppersmithWinograd 演演算法（1990） 邏輯矩陣 矩陣鏈乘積 逆矩陣 關係複合 BLAS 矩陣加法 矩陣微積分 外部連結 WIMS Online Matrix Multiplier Animated Matrix Multiplication Examples purplemath Matrix Multipication in Javascript （works in Firefox） 參考 其它參考文獻包括： Strassen Volker Gaussian Elimination is not Optimal Numer Math 13 p 354356 1969 Coppersmith D Winograd S Matrix multiplication via arithmetic progressions J Symbolic Comput 9 p 251280 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 Z Z Category 乘法 Category 雙線性運算元 deMatrix MathematikMatrizenmultiplikation