矩陣乘法
這篇文章給出多種矩陣相乘方法的綜述。
目录 |
一般矩陣乘積 [编辑]
矩陣相乘最重要的方法是一般矩陣乘積。它只有在第一個矩陣的列數(column)和第二個矩陣的行數(row)相同時才有定義。一般單指矩陣乘積時,指的便是一般矩陣乘積。若A為
矩陣,B為
矩陣,則他們的乘積AB(有時記做A · B)會是一個
矩陣。其乘積矩陣的元素如下面式子得出:
以上是用矩陣單元的代數系統來說明這類乘法的抽象性質。本節以下各種運算法都是這個公式的不同角度理解,運算結果相等:
由定義直接計算 [编辑]
左邊的圖表示出要如何計算AB的(1,2)和(3,3)元素,當A是個4×2矩陣和B是個2×3矩陣時。分別來自兩個矩陣的元素都依箭頭方向而兩兩配對,把每一對中的兩個元素相乘,再把這些乘積加總起來,最後得到的值即為箭頭相交位置的值。
係數-向量方法 [编辑]
這種矩陣乘積亦可由稍微不同的觀點來思考:把向量和各係數相乘後相加起來。設A和B是兩個給定如下的矩陣:
則
舉個例子來說:
左面矩陣的列為為係數表,右邊矩陣為向量表。例如,第一行是[1 0 2],因此將1乘上第一個向量,0乘上第二個向量,2則乘上第三個向量。
向量表方法 [编辑]
一般矩陣乘積也可以想為是行向量和列向量的內積。若A和B為給定如下的矩陣:
且 
其中
- A1是由所有a1,x元素所組成的向量,A2是由所有a2,x元素所組成的向量,以此類推。
- B1是由所有bx,1元素所組成的向量,B2是由所有bx,2元素所組成的向量,以此類推。
則
性質 [编辑]
矩陣乘法是不可交換的(即AB ≠ BA),除了一些較特別的情況。很清楚可以知道,不可能預期說在改變向量的部份後還能得到相同的結果,而且第一個矩陣的列數必須要和第二個矩陣的行數相同,也可以看出為什麼矩陣相乘的順序會影響其結果。
雖然矩陣乘法是不可交換的,但AB和BA的行列式總會是一樣的(當A、B是同樣大小的方陣時)。其解釋在行列式條目內。
當A、B可以被解釋為線性算子,其矩陣乘積AB會對應為兩個線性算子的複合函數,其中B先做用。
在MS Excel中做矩陣乘法 [编辑]
- 先輸入要相乘的兩個矩陣,大小分別為
和
(注意:矩陣1的column數必須等於矩陣2的row數,矩陣乘法才有定義); - 用滑鼠選取大小為
的空白格矩陣; - 選取「MMULT函數」;
- 在函數引數視窗的array 1選取第一個矩陣,array 2選取第二個矩陣;
- 不要按「確定」,而是按「Ctrl+Shift+Enter」這三個鍵的組合來關閉函數引數視窗。
以上步驟可參見MMULT函數引數視窗裡的「函數說明」。
純量乘積 [编辑]
矩陣A = (aij)和純量r的純量乘積rA的矩陣大小和A一樣,rA的各元素定義如下:
若我們考慮於一個環的矩陣時,上述的乘積有時會稱做左乘積,而右乘積的則定義為
當環是可交換時,例如實數體或複數體,這兩個乘積是相同的。但無論如何,若環是不可交換的話,如四元數,他們可能會是不同的。例如,
阿達馬乘積 [编辑]
給定兩個相同維度的矩陣,我們有阿達馬乘積,或稱做分素乘積(entrywise product)。兩個m×n矩陣A、B的阿達馬乘積標記為
,為一定義為
的m×n矩陣。例如,
需注意的是,阿達馬乘積是克羅內克乘積的子矩陣。
克羅內克乘積 [编辑]
給定任兩個矩陣
和
,我們可以得到兩個矩陣的直積,或稱為克羅內克乘積
,其定義如下
當
是一
矩陣和
是一
矩陣時,
會是一
矩陣,而且此一乘積也是不可交換的。
舉個例子,
.
若A和B分別表示兩個線性算子V1 → W1和V2 → W2,A⊗B便為其映射的張量乘積,V1 ⊗ V2 → W1 ⊗ W2.
共同性質 [编辑]
上述三種乘積都符合結合律:
- 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)
- Coppersmith–Winograd演算法 (1990)
- 邏輯矩陣
- 矩陣鏈乘積
- 逆矩陣
- 關係複合
- BLAS
- 矩陣加法
外部連結 [编辑]
- WIMS Online Matrix Multiplier
- Animated Matrix Multiplication Examples (purplemath)
- Matrix Multipication in C
- Matrix Multipication in Javascript (works in Firefox)
參考 [编辑]
- 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.







且 






.