矩陣乘法

您所在的位置:网站首页 矩阵乘法有什么技巧吗知乎 矩陣乘法

矩陣乘法

2023-03-11 02:50| 来源: 网络整理| 查看: 265

线性代数 A = [ 1 2 3 4 ] {\displaystyle \mathbf {A} ={\begin{bmatrix}1&2\\3&4\end{bmatrix}}}

向量 · 向量空间  · 行列式  · 矩阵

向量

标量 · 向量 · 向量空间 · 向量投影 · 外积(向量积) · 内积(数量积)

矩阵与行列式

矩阵 · 行列式 · 线性方程组 · 秩 · 核 · 迹 · 單位矩陣 · 初等矩阵 · 方块矩阵 · 分块矩阵 · 三角矩阵 · 非奇异方阵 · 转置矩阵 · 逆矩阵 · 对角矩阵 · 可对角化矩阵 · 对称矩阵 · 反对称矩阵 · 正交矩阵 · 幺正矩阵 · 埃尔米特矩阵 · 反埃尔米特矩阵 · 正规矩阵 · 伴随矩阵 · 余因子矩阵 · 共轭转置 · 正定矩阵 · 幂零矩阵 · 矩阵分解 (LU分解 · 奇异值分解 · QR分解 · 极分解 · 特征分解) · 子式和余子式 · 拉普拉斯展開 · 克罗内克积

线性空间与线性变换

线性空间 · 线性变换 · 线性子空间 · 线性生成空间 · 基 · 线性映射 · 线性投影 · 线性无关 · 线性组合 · 线性泛函 · 行空间与列空间 · 对偶空间 · 正交 · 特征向量 · 最小二乘法 · 格拉姆-施密特正交化

查论编 「横向的一条线(row)」的各地常用別名中国大陸行 港臺列 「纵向的一条线(column)」的各地常用別名中国大陸列 港臺行

数学中,矩阵乘法(英語:matrix multiplication)是一种根据两个矩阵得到第三个矩阵的二元运算,第三个矩阵即前两者的乘积,称为矩阵积(英語:matrix product)。设 A {\displaystyle A} 是 n × m {\displaystyle n\times m} 的矩阵, B {\displaystyle B} 是 m × p {\displaystyle m\times p} 的矩阵,则它们的矩阵积 A B {\displaystyle AB} 是 n × p {\displaystyle n\times p} 的矩阵。 A {\displaystyle A} 中每一行的 m {\displaystyle m} 个元素都与 B {\displaystyle B} 中对应列的 m {\displaystyle m} 个元素对应相乘,这些乘积的和就是 A B {\displaystyle AB} 中的一个元素。

矩阵可以用来表示线性映射,矩阵积则可以用来表示线性映射的复合。因此,矩阵乘法是线性代数的基础工具,不仅在数学中有大量应用,在应用数学、物理学、工程学等领域也有广泛使用。[1][2]

目录 1 一般矩陣乘積 1.1 由定義直接計算 1.2 向量方法 1.3 向量表方法 1.4 性質 1.5 在試算表中做矩陣乘法 2 純量乘積 3 阿達馬乘積 4 克羅內克乘積 5 共同性質 6 另見 7 外部連結 8 參考 一般矩陣乘積[编辑]

矩陣相乘最重要的方法是一般矩陣乘積。它只有在第一個矩陣的列数(column,台湾作行數)和第二個矩陣的行数(row,台湾作列數)相同時才有定義。一般單指矩陣乘積時,指的便是一般矩陣乘積。若 A {\displaystyle A} 為 m × n {\displaystyle m\times n} 矩陣, B {\displaystyle B} 為 n × p {\displaystyle n\times p} 矩陣,則他們的乘積 A B {\displaystyle AB} (有時記做 A ⋅ B {\displaystyle A\cdot B} )會是一個 m × p {\displaystyle m\times p} 矩陣。其乘積矩陣的元素如下面式子得出:

( A B ) i j = ∑ r = 1 n a i r b r j = a i 1 b 1 j + a i 2 b 2 j + ⋯ + a i n b n j {\displaystyle (AB)_{ij}=\sum _{r=1}^{n}a_{ir}b_{rj}=a_{i1}b_{1j}+a_{i2}b_{2j}+\cdots +a_{in}b_{nj}}

以上是用矩陣單元的代數系統來說明這類乘法的抽象性質。本節以下各種運算法都是這個公式的不同角度理解,運算結果相等:

由定義直接計算[编辑] Matrix multiplication diagram.svg

左邊的圖表示出要如何計算 A B {\displaystyle AB} 的 ( 1 , 2 ) {\displaystyle (1,2)} 和 ( 3 , 3 ) {\displaystyle (3,3)} 元素,當 A {\displaystyle A} 是個 4 × 2 {\displaystyle 4\times 2} 矩陣和B是個 2 × 3 {\displaystyle 2\times 3} 矩陣時。分別來自兩個矩陣的元素都依箭頭方向而兩兩配對,把每一對中的兩個元素相乘,再把這些乘積加總起來,最後得到的值即為箭頭相交位置的值。

( A B ) 1 , 2 = ∑ r = 1 2 a 1 , r b r , 2 = a 1 , 1 b 1 , 2 + a 1 , 2 b 2 , 2 {\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}} ( A B ) 3 , 3 = ∑ r = 1 2 a 3 , r b r , 3 = a 3 , 1 b 1 , 3 + a 3 , 2 b 2 , 3 {\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}} 向量方法[编辑]

這種矩陣乘積亦可由稍微不同的觀點來思考:把向量和各係數相乘後相加起來。設 A {\displaystyle \mathbf {A} } B {\displaystyle \mathbf {B} } 是兩個給定如下的矩陣:

A = [ a 1 , 1 a 1 , 2 … a 2 , 1 a 2 , 2 … ⋮ ⋮ ⋱ ] {\displaystyle \mathbf {A} ={\begin{bmatrix}a_{1,1}&a_{1,2}&\dots \\a_{2,1}&a_{2,2}&\dots \\\vdots &\vdots &\ddots \end{bmatrix}}} B = [ b 1 , 1 b 1 , 2 … b 2 , 1 b 2 , 2 … ⋮ ⋮ ⋱ ] {\displaystyle \mathbf {B} ={\begin{bmatrix}b_{1,1}&b_{1,2}&\dots \\b_{2,1}&b_{2,2}&\dots \\\vdots &\vdots &\ddots \end{bmatrix}}}

A B = [ a 1 , 1 [ b 1 , 1 b 1 , 2 … ] + a 1 , 2 [ b 2 , 1 b 2 , 2 … ] + ⋯ a 2 , 1 [ b 1 , 1 b 1 , 2 … ] + a 2 , 2 [ b 2 , 1 b 2 , 2 … ] + ⋯ ⋮ ] {\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}}}

舉個例子來說:

[ 1 0 2 − 1 3 1 ] ⋅ [ 3 1 2 1 1 0 ] = [ 1 [ 3 1 ] + 0 [ 2 1 ] + 2 [ 1 0 ] − 1 [ 3 1 ] + 3 [ 2 1 ] + 1 [ 1 0 ] ] = [ [ 3 1 ] + [ 0 0 ] + [ 2 0 ] [ − 3 − 1 ] + [ 6 3 ] + [ 1 0 ] ] {\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}}} = [ 5 1 4 2 ] {\displaystyle ={\begin{bmatrix}5&1\\4&2\end{bmatrix}}}

左面矩陣的列為為係數表,右邊矩陣為向量表。例如,第一行是[1 0 2],因此將1乘上第一個向量,0乘上第二個向量,2則乘上第三個向量。

向量表方法[编辑]

一般矩陣乘積也可以想為是行向量和列向量的內積。若 A {\displaystyle \mathbf {A} } B {\displaystyle \mathbf {B} } 為給定如下的矩陣:

A = [ a 1 , 1 a 1 , 2 a 1 , 3 … a 2 , 1 a 2 , 2 a 2 , 3 … a 3 , 1 a 3 , 2 a 3 , 3 … ⋮ ⋮ ⋮ ⋱ ] = [ A 1 A 2 A 3 ⋮ ] {\displaystyle \mathbf {A} ={\begin{bmatrix}a_{1,1}&a_{1,2}&a_{1,3}&\dots \\a_{2,1}&a_{2,2}&a_{2,3}&\dots \\a_{3,1}&a_{3,2}&a_{3,3}&\dots \\\vdots &\vdots &\vdots &\ddots \end{bmatrix}}={\begin{bmatrix}A_{1}\\A_{2}\\A_{3}\\\vdots \end{bmatrix}}} 且 B = [ b 1 , 1 b 1 , 2 b 1 , 3 … b 2 , 1 b 2 , 2 b 2 , 3 … b 3 , 1 b 3 , 2 b 3 , 3 … ⋮ ⋮ ⋮ ⋱ ] = [ B 1 B 2 B 3 … ] {\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}}}

其中

A 1 {\displaystyle A_{1}} 是由所有 a 1 , x {\displaystyle a_{1,x}} 元素所組成的向量, A 2 {\displaystyle A_{2}} 是由所有 a 2 , x {\displaystyle a_{2,x}} 元素所組成的向量,以此類推。 B 1 {\displaystyle B_{1}} 是由所有 b x , 1 {\displaystyle b_{x,1}} 元素所組成的向量, B 2 {\displaystyle B_{2}} 是由所有 b x , 2 {\displaystyle b_{x,2}} 元素所組成的向量,以此類推。

A B = [ A 1 A 2 A 3 ⋮ ] × [ B 1 B 2 B 3 … ] = [ ( A 1 ⋅ B 1 ) ( A 1 ⋅ B 2 ) ( A 1 ⋅ B 3 ) … ( A 2 ⋅ B 1 ) ( A 2 ⋅ B 2 ) ( A 2 ⋅ B 3 ) … ( A 3 ⋅ B 1 ) ( A 3 ⋅ B 2 ) ( A 3 ⋅ B 3 ) … ⋮ ⋮ ⋮ ⋱ ] {\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}}} 性質[编辑]

矩陣乘法是不可交換的(即 A B ≠ B A {\displaystyle AB\neq BA} ),除了一些較特別的情況。很清楚可以知道,不可能預期說在改變向量的部份後還能得到相同的結果,而且第一個矩陣的列數必須要和第二個矩陣的行數相同,也可以看出為什麼矩陣相乘的順序會影響其結果。

雖然矩陣乘法是不可交換的,但 A B {\displaystyle AB} 和 B A {\displaystyle BA} 的行列式總會是一樣的(當 A {\displaystyle A} 、 B {\displaystyle B} 是同樣大小的方陣時)。其解釋在行列式條目內。

當 A {\displaystyle A} 、 B {\displaystyle B} 可以被解釋為線性算子,其矩陣乘積 A B {\displaystyle AB} 會對應為兩個線性算子的複合函數,其中B先作用。

在試算表中做矩陣乘法[编辑]

[ 1 0 2 − 1 3 1 ] ⋅ [ 3 1 2 1 1 0 ] = [ 5 1 4 2 ] {\displaystyle {\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({1,0,2;-1,3,1},{3,1;2,1;1,0})

在某些試算表軟體中必須必須按Ctrl+⇧ Shift+↵ Enter 將儲存格內的變數轉換為陣列

純量乘積[编辑]

矩陣 A = ( a i j ) {\displaystyle A=(a_{ij})} 和純量 r {\displaystyle r} 的純量乘積 r A {\displaystyle rA} 的矩陣大小和 A {\displaystyle A} 一樣, r A {\displaystyle rA} 的各元素定義如下:

( r A ) i j = r ⋅ a i j   {\displaystyle (rA)_{ij}=r\cdot a_{ij}\ }

若我們考慮於一個環的矩陣時,上述的乘積有時會稱做左乘積,而右乘積的則定義為

( A r ) i j = a i j ⋅ r   {\displaystyle (Ar)_{ij}=a_{ij}\cdot r\ }

當環是可交換時,例如實數體或複數體,這兩個乘積是相同的。但無論如何,若環是不可交換的話,如四元數,他們可能會是不同的。例如,

i [ i 0 0 j ] = [ − 1 0 0 k ] ≠ [ − 1 0 0 − k ] = [ i 0 0 j ] i {\displaystyle i{\begin{bmatrix}i&0\\0&j\\\end{bmatrix}}={\begin{bmatrix}-1&0\\0&k\\\end{bmatrix}}\neq {\begin{bmatrix}-1&0\\0&-k\\\end{bmatrix}}={\begin{bmatrix}i&0\\0&j\\\end{bmatrix}}i} 阿達馬乘積[编辑] 参见:阿達瑪乘積_(矩陣)

給定兩個相同維度的矩陣,我們有阿達馬乘積(Hadamard product),或稱做逐項乘積分素乘積element-wise product, entrywise product)。兩個 m × n {\displaystyle m\times n} 矩陣 A {\displaystyle A} 、 B {\displaystyle B} 的阿達馬乘積標記為 A ∘ B {\displaystyle A\circ B} ,定義為 ( A ∘ B ) i j = a i j b i j {\displaystyle (A\circ B)_{ij}=a_{ij}b_{ij}} 的 m × n {\displaystyle m\times n} 矩陣。例如,

[ 1 3 2 1 0 0 1 2 2 ] ∘ [ 0 0 2 7 5 0 2 1 1 ] = [ 1 ⋅ 0 3 ⋅ 0 2 ⋅ 2 1 ⋅ 7 0 ⋅ 5 0 ⋅ 0 1 ⋅ 2 2 ⋅ 1 2 ⋅ 1 ] = [ 0 0 4 7 0 0 2 2 2 ] {\displaystyle {\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 {\displaystyle A} 和 B {\displaystyle B} ,我們可以得到兩個矩陣的直積,或稱為克羅內克乘積 A ⊗ B {\displaystyle A\otimes B} ,其定義如下

[ a 11 B a 12 B ⋯ a 1 n B ⋮ ⋮ ⋱ ⋮ a m 1 B a m 2 B ⋯ a m n B ] {\displaystyle {\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 {\displaystyle A} 是一 m × n {\displaystyle m\times n} 矩陣和 B {\displaystyle B} 是一 p × r {\displaystyle p\times r} 矩陣時, A ⊗ B {\displaystyle A\otimes B} 會是一 m p × n r {\displaystyle mp\times nr} 矩陣,而且此一乘積也是不可交換的。

舉個例子,

[ 1 2 3 1 ] ⊗ [ 0 3 2 1 ] = [ 1 ⋅ 0 1 ⋅ 3 2 ⋅ 0 2 ⋅ 3 1 ⋅ 2 1 ⋅ 1 2 ⋅ 2 2 ⋅ 1 3 ⋅ 0 3 ⋅ 3 1 ⋅ 0 1 ⋅ 3 3 ⋅ 2 3 ⋅ 1 1 ⋅ 2 1 ⋅ 1 ] = [ 0 3 0 6 2 1 4 2 0 9 0 3 6 3 2 1 ] {\displaystyle {\begin{bmatrix}1&2\\3&1\\\end{bmatrix}}\otimes {\begin{bmatrix}0&3\\2&1\\\end{bmatrix}}={\begin{bmatrix}1\cdot 0&1\cdot 3&2\cdot 0&2\cdot 3\\1\cdot 2&1\cdot 1&2\cdot 2&2\cdot 1\\3\cdot 0&3\cdot 3&1\cdot 0&1\cdot 3\\3\cdot 2&3\cdot 1&1\cdot 2&1\cdot 1\\\end{bmatrix}}={\begin{bmatrix}0&3&0&6\\2&1&4&2\\0&9&0&3\\6&3&2&1\end{bmatrix}}}

若 A {\displaystyle A} 和 B {\displaystyle B} 分別表示兩個線性算子 V 1 → W 1 {\displaystyle V_{1}\to W_{1}} 和 V 2 → W 2 {\displaystyle V_{2}\to W_{2}} , A ⊗ B {\displaystyle A\otimes B} 便為其映射的張量乘積, V 1 ⊗ V 2 → W 1 ⊗ W 2 {\displaystyle V_{1}\otimes V_{2}\to W_{1}\otimes W_{2}}

共同性質[编辑]

上述三種乘積都符合結合律:

A ( B C ) = ( A B ) C {\displaystyle A(BC)=(AB)C}

以及分配律:

A ( B + C ) = A B + A C {\displaystyle A(B+C)=AB+AC} ( A + B ) C = A C + B C {\displaystyle (A+B)C=AC+BC}

而且和純量乘積相容:

c ( A B ) = ( c A ) B {\displaystyle c(AB)=(cA)B} ( A c ) B = A ( c B ) {\displaystyle (Ac)B=A(cB)} ( A B ) c = A ( B c ) {\displaystyle (AB)c=A(Bc)}

注意上述三個分開的表示式只有在純量體的乘法及加法是可交換(即純量體為一可交換環)時會相同。

另見[编辑] Strassen演算法(1969) Winograd演算法(1980) Coppersmith–Winograd演算法(1990) 邏輯矩陣 矩陣鏈乘積 逆矩陣 關係複合 BLAS 矩陣加法 外部連結[编辑] WIMS Online Matrix Multiplier (页面存档备份,存于互联网档案馆) Animated Matrix Multiplication Examples (purplemath) (页面存档备份,存于互联网档案馆) Matrix Multipication in Javascript (页面存档备份,存于互联网档案馆)(works in Firefox) 參考[编辑] ^ Lerner, R. G.; Trigg, G. L. Encyclopaedia of Physics 2nd. VHC publishers. 1991. ISBN 3-527-26954-1 (英语).  ^ Parker, C. B. McGraw Hill Encyclopaedia of Physics 2nd. 1994. ISBN 0-07-051400-3 (英语). 

其它参考文献包括:

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. 查论编线性代数的相关概念重要概念 标量 向量 向量空间 向量子空间 线性生成空间 线性映射 投影 線性無關 线性组合 基 標記 列空间 行空间 零空间 对偶空间 正交 特征值 特征向量 数量积 内积空间 点乘 轉置 格拉姆-施密特正交化 线性方程组 克萊姆法則 矩阵 矩阵 矩陣乘法 矩阵分解 行列式 子式和余子式 矩阵的秩 克萊姆法則 逆矩阵 高斯消去法 线性变换 分块矩阵 数值线性代数 浮点数 数值稳定性 基础线性代数程序集 稀疏矩阵


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3