矩陣乘法的現代觀點

本文的閱讀等級:初級

藍鳥把天空背在它的背上。

───美國作家梭羅 (Henry David Thoreau)[1]

高中數學課本將矩陣乘積 AB 的定義建立於每個 (i,j) 元 (entry,element) 的計算式上,進入大學之後,如果仍緊抓住這個定義不放,對於理解線性代數反而是個阻礙。本質上,線性代數所處理的數學物件為向量與矩陣,而非其中的元。從現代的角度來看,矩陣乘法有多個更富含意義的等價運算方式。底下介紹這些矩陣乘法的用意在於打開一個新眼界,好讓我們順利踏入線性代數的世界。

 
以元作為計算單元定義 AB

這是每個人都熟悉的高中數學定義。令 A=[a_{ij}]m\times n 階矩陣,B=[b_{ij}]n\times p 階矩陣。我們定義 AB(i,j)(AB)_{ij}A 的第 i 列 (row) 與 B 的第 j 行 (column) 之點積 (內積,dot product),稱為列行法則,如下:

(AB)_{ij}=\begin{bmatrix}  a_{i1}&\cdots&a_{in}  \end{bmatrix}\begin{bmatrix}  b_{1j}\\  \vdots\\  b_{nj}  \end{bmatrix}=a_{i1}b_{1j}+\cdots +{a}_{in}{b}_{nj}

這個公式的主要用途是方便手算,缺點是不自然也不具啟發性,多數人學到這個定義的第一個反應是無所適從,很難理解其中涵義。(你可能會問:為甚麼 (AB)_{ij} 不定義為 A 的第 i 行與 B 的第 j 列的點積?) 列行法則於理論上的應用時機在於 \mathbb{R}^n 的子空間之間的正交關係,利用此法則可以證明實矩陣 A 的零空間 (nullspace) 正交於列空間 (row space) (見“線性代數基本定理 (二)”)。

 
以行作為計算單元定義 Ax

這是最重要的一種觀點。考慮 A 的行向量表達式 A=\begin{bmatrix}  \mathbf{a}_1&\cdots&\mathbf{a}_n  \end{bmatrix}\mathbf{x}=(x_1,\ldots,x_n)^T。我們定義矩陣向量乘法 A\mathbf{x}A 的行向量 \mathbf{a}_1,\ldots,\mathbf{a}_n 的線性組合,x_1,\ldots,x_n 為組合權重:

A\mathbf{x}=\begin{bmatrix}    \mathbf{a}_{1} & \cdots &\mathbf{a}_{n}    \end{bmatrix}\begin{bmatrix}    x_{1}\\    \vdots \\    x_{n}    \end{bmatrix}=\mathbf{a}_{1}x_{1}+\cdots +\mathbf{a}_{n}x_{n}

傳統的寫法習慣將純量擺在向量的左邊,

\mathit{A}\mathbf{x}= x_{1}\mathbf{a}_{1} +\cdots + x_{n}\mathbf{a}_{n}

見下例,

\begin{bmatrix}  1 & 2\\  3 & 4\\  5 & 6  \end{bmatrix}\begin{bmatrix}  1\\  2  \end{bmatrix}=1\cdot\begin{bmatrix}  1\\  3\\  5  \end{bmatrix}+2\cdot\begin{bmatrix}  2\\  4\\  6  \end{bmatrix}=\begin{bmatrix}  5\\  11\\  17  \end{bmatrix}

利用這個定義很容易聯繫線性方程與子空間、線性獨立等概念的關係,例如,A\mathbf{x}=\mathbf{0} 僅有平凡解 (即 \mathbf{x}=\mathbf{0}),則 A 有線性獨立的行向量,以及 A\mathbf{x}=\mathbf{b} 有解的充要條件為 \mathbf{b} 屬於 A 的行空間。更重要的是,它可以清楚顯現 T(\mathbf{x})=A\mathbf{x} 為一個線性變換 (見“基本矩陣運算的定義”)。

 
以行作為計算單元定義 AB

很自然地,我們可以視 AB 為線性變換 AB 的複合變換。考慮 B=\begin{bmatrix}  \mathbf{b}_1&\cdots&\mathbf{b}_p  \end{bmatrix}\mathbf{x}=(x_1,\ldots,x_p)^T。根據矩陣向量乘法定義,

\mathit{B}\mathbf{x}=x_1\mathbf{b}_1+\cdots +x_p\mathbf{b}_p

使用線性變換性質,

\begin{aligned}  A(\mathit{B}\mathbf{x})&=A(x_1\mathbf{b}_1+\cdots +x_p\mathbf{b}_p)=x_1(A\mathbf{b}_1)+\cdots+x_p(A\mathbf{b}_p)\\  &=\begin{bmatrix}  A\mathbf{b}_{1} & \cdots &A\mathbf{b}_{p}  \end{bmatrix}\begin{bmatrix}  x_1\\  \vdots\\  x_p  \end{bmatrix}=\begin{bmatrix}    A\mathbf{b}_{1} & \cdots &A\mathbf{b}_{p}    \end{bmatrix}\mathbf{x}.\end{aligned}

向量 A(B\mathbf{x}) 可視為連續兩次線性變換的像 (image):

\mathbf{x}\xrightarrow[]{~~B~~}B\mathbf{x}\xrightarrow[]{~~A~~}A(B\mathbf{x})

如果我們令 (AB)\mathbf{x} 代表上面這兩線性變換的淨效果:

\mathbf{x}\xrightarrow[]{~~AB~~}(AB)\mathbf{x}

則有

(AB)\mathbf{x}=\mathit{A}(B\mathbf{x})

表面上看,上式不僅給出矩陣向量乘法的結合律,同時也提供了以行作為計算單元定義矩陣乘積 AB 的方式。因為上式對於任意 \mathbf{x} 都成立,

AB=A\begin{bmatrix}    \mathbf{b}_{1} & \cdots &\mathbf{b}_{p}    \end{bmatrix}=\begin{bmatrix}    A\mathbf{b}_{1} & \cdots &A\mathbf{b}_{p}    \end{bmatrix}

因此,AB 的第 j 行是 A\mathbf{b}_j,它是 A 的行向量之線性組合,\mathbf{b}_j 的對應元為組合權重。舉例來說,

\begin{bmatrix}  1 & 2\\  3 & 4\\  5 & 6  \end{bmatrix}\left[\!\!\begin{array}{cr}  1&-1\\  2&1  \end{array}\!\!\right]

的第一行與第二行分別為

\begin{bmatrix}  1 & 2\\  3 & 4\\  5 & 6  \end{bmatrix}\begin{bmatrix}  1\\  2  \end{bmatrix}=\begin{bmatrix}  5\\  11\\  17  \end{bmatrix},~~\begin{bmatrix}  1 & 2\\  3 & 4\\  5 & 6  \end{bmatrix}\left[\!\!\begin{array}{r}  -1\\  1  \end{array}\!\!\right]=\begin{bmatrix}  1\\  1\\  1  \end{bmatrix}

 
以行當作矩陣乘法運算單元不僅具有提示性並可簡化運算推導,例如,欲證明分配律 A(B+C)=AB+AC,將 B+C 以行向量表達,利用線性變換性質,可得

\begin{aligned}  A(B+C)&=A\begin{bmatrix}  \mathbf{b}_1+\mathbf{c}_1&\cdots&\mathbf{b}_p+\mathbf{c}_p  \end{bmatrix}\\  &=\begin{bmatrix}  A(\mathbf{b}_1+\mathbf{c}_1)&\cdots&A(\mathbf{b}_p+\mathbf{c}_p)  \end{bmatrix}\\  &=\begin{bmatrix}  A\mathbf{b}_1+A\mathbf{c}_1&\cdots&A\mathbf{b}_p+A\mathbf{c}_p  \end{bmatrix}\\  &=\begin{bmatrix}  A\mathbf{b}_1&\cdots&A\mathbf{b}_p  \end{bmatrix}+\begin{bmatrix}  A\mathbf{c}_1&\cdots&A\mathbf{c}_p  \end{bmatrix}\\  &=AB+AC.\end{aligned}

另舉一例,因為 A\mathbf{b}_jA 的行向量的線性組合,AB 的行空間必定屬於 A 的行空間,隨之而來的重要結果是 \mathrm{rank}\mathit{AB}\leq \mathrm{rank}A (見“矩陣乘積的子空間分析”)。

 
以列作為計算單元定義 AB

這個定義與以行作為計算單元的定義有類比的形式。考慮

AB=\begin{bmatrix}  A\mathbf{b}_1&\cdots&A\mathbf{b}_p  \end{bmatrix}

對上式取轉置,

(AB)^T=\begin{bmatrix}  A\mathbf{b}_1&\cdots&A\mathbf{b}_p  \end{bmatrix}^T=\begin{bmatrix}  (A\mathbf{b}_1)^T\\  \vdots\\  (A\mathbf{b}_p)^T  \end{bmatrix}=\begin{bmatrix}  \mathbf{b}_1^TA^T\\  \vdots\\  \mathbf{b}_p^TA^T  \end{bmatrix}

因為 (AB)^T=B^TA^T

B^TA^T=\begin{bmatrix}  \mathbf{b}_1^TA^T\\  \vdots\\  \mathbf{b}_p^TA^T  \end{bmatrix}

將上式的 B^TA^T 分別以 AB 替代,即得到以列作為計算單元的矩陣乘法。我們定義 AB 的第 i 列等於 B 的列之線性組合,\mathrm{row}_i(A) 的對應元即為組合權重:

\mathrm{row}_{i}(AB)= \mathrm{row}_{i}(A)\cdot\mathit{B}

或著將 AB 完整的寫出

AB=\begin{bmatrix}  \mathrm{row}_{1}(A)\\  \vdots \\    \mathrm{row}_{m}(A)    \end{bmatrix}B=\begin{bmatrix}    \mathrm{row}_{1}(A)\cdot\mathit{B}\\    \vdots \\    \mathrm{row}_{m}(A)\cdot\mathit{B}\end{bmatrix}

舉例來說,

\begin{bmatrix}  1 & 2\\  3 & 4\\  5 & 6  \end{bmatrix}\left[\!\!\begin{array}{cr}  1&-1\\  2&1  \end{array}\!\!\right]

的第一、二、三列分別為

\begin{aligned}  \begin{bmatrix}  1 & 2  \end{bmatrix}\left[\!\!\begin{array}{cr}  1&-1\\  2&1  \end{array}\!\!\right]&=\begin{bmatrix}  5&1  \end{bmatrix}\\  \begin{bmatrix}  3 & 4  \end{bmatrix}\left[\!\!\begin{array}{cr}  1&-1\\  2&1  \end{array}\!\!\right]&=\begin{bmatrix}  11&1  \end{bmatrix}\\  \begin{bmatrix}  5 & 6  \end{bmatrix}\left[\!\!\begin{array}{cr}  1&-1\\  2&1  \end{array}\!\!\right]&=\begin{bmatrix}  17&1  \end{bmatrix}.\end{aligned}

 
今天多數的線性代數社群所指稱的向量都是行向量,我們特別以記號 \mathrm{row} 表示矩陣的列。這個計算方式的應用較少,主要的一個用途在於解釋基本矩陣 (elementary matrix) A 如何對 B 執行列運算 (見“特殊矩陣 (10):基本矩陣”)。

 
以行列展開計算 AB

線性代數初學者可能不知道兩個矩陣之積可表示成數個矩陣之和。將 A 以行向量表示,B 以列向量表示,有以下結果:

\mathit{AB}=\begin{bmatrix}  \mathbf{a}_{1} & \cdots &\mathbf{a}_{n}    \end{bmatrix}\begin{bmatrix}    \mathrm{row}_{1}(B)\\    \vdots \\    \mathrm{row}_{n}(B)    \end{bmatrix}=\mathbf{a}_{1}\mathrm{row}_{1}(B)+\cdots+\mathbf{a}_{n}\mathrm{row}_{n}(B)

這個算式稱為行列法則,注意這個展開方式與以元為計算單位的列行法則的差異。因為 AB(i,j) 元即為每個展開矩陣 \mathbf{a}_k~\mathrm{row}_k(B)(i,j) 元 (即 a_{ik}b_{kj}) 的和,故可證明上式的正確性。見下例,

\begin{bmatrix}  1 & 2\\  3 & 4\\  5 & 6  \end{bmatrix}\left[\!\!\begin{array}{cr}  1&-1\\  2&1  \end{array}\!\!\right]=\begin{bmatrix}  1\\  3\\  5  \end{bmatrix}\begin{bmatrix}  1&-1\end{bmatrix}+\begin{bmatrix}  2\\  4\\  6  \end{bmatrix}\begin{bmatrix}  2&1\end{bmatrix}=\begin{bmatrix}  1 & -1\\  3 & -3\\  5 & -5  \end{bmatrix}+\begin{bmatrix}  4 & 2\\  8 & 4\\  12 & 6  \end{bmatrix}

 
以行列展開計算的重要用途在實對稱矩陣的譜分解 (見“可對角化矩陣的譜分解”)。任何實對稱矩陣 A 可寫為 A=UDU^TD 為對角矩陣,D=\mathrm{diag}(d_1,\ldots,d_n),所以

\begin{aligned}  A&=UDU^{T}\\  &=\begin{bmatrix}  \mathbf{u}_1&\cdots&\mathbf{u}_n  \end{bmatrix}\begin{bmatrix}  d_1&~&~\\  ~&\ddots&~\\  ~&~&d_n  \end{bmatrix}\begin{bmatrix}  \mathbf{u}_1^T\\  \vdots\\  \mathbf{u}_n^T  \end{bmatrix}\\  &=\begin{bmatrix}  d_{1}\mathbf{u}_{1} & \cdots &d_{n}\mathbf{u}_{n}    \end{bmatrix}\begin{bmatrix}    \mathbf{u}^{T}_{1}\\    \vdots \\    \mathbf{u}^{T}_{n}    \end{bmatrix}\\  &=d_{1}\mathbf{u}_{1}\mathbf{u}^{T}_{1}+\cdots+d_{n}\mathbf{u}_{n}\mathbf{u}^{T}_{n}.\end{aligned}

 
總結來說,矩陣乘法共有四種計算方式。初學者需經過不斷嘗試錯誤才能逐漸體會各計算方式的使用時機,要能達到隨手拈來,存乎一心的境界唯有多加練習一途。

 
以分塊作為計算單元定義 AB

假設 Am\times n 階矩陣,Bn\times p 階矩陣,則 AB 可以相乘。同樣道理,將 AB 以分塊矩陣形式表示,例如,A3\times 2 分塊,B2\times 2 分塊:

A=\begin{bmatrix}    A_{11}&A_{12}\\    A_{21}&A_{22}\\    A_{31}&A_{32}\end{bmatrix},~B=\begin{bmatrix}    B_{11}&B_{12}\\    B_{21}&B_{22}\end{bmatrix}

我們可以運用分塊矩陣乘法計算矩陣乘積 AB。分塊矩陣乘法一如傳統以元為計算單元的運算方式,將 A 的列分塊和 B 的行分塊以列行法則相乘,AB3\times 2 分塊,如下:

AB=\begin{bmatrix}    A_{11}B_{11}+A_{12}B_{21}&A_{11}B_{12}+A_{12}B_{22}\\    A_{21}B_{11}+A_{22}B_{21}&A_{21}B_{12}+A_{22}B_{22}\\    A_{31}B_{11}+A_{32}B_{21}&A_{31}B_{12}+A_{32}B_{22}\end{bmatrix}

注意這個乘法方式等於也限制了 AB 其分塊的尺寸,譬如,A_{12} 的行數須等於 B_{21} 的列數。

 
事實上,分塊矩陣乘法也可以用來解釋前述的幾種矩陣乘積運算方式。若矩陣的分塊退化為元,那麼分塊矩陣乘積也就是以元為計算單位的列行法則。若 B 以其行向量作為分塊,就是視行為計算單位的乘法方式:

AB=A\begin{bmatrix}    B_{1} & \cdots &B_{p}    \end{bmatrix}=\begin{bmatrix}    AB_{1} & \cdots &AB_{p}    \end{bmatrix}

A 以其列向量作為分塊,此即以列為計算單位的乘法:

AB=\begin{bmatrix}    A_{1}\\    \vdots \\    A_{m}    \end{bmatrix}B=\begin{bmatrix}    A_{1}B\\    \vdots \\    A_{m}B\end{bmatrix}

A 以其行向量作為分塊,B 以其列向量作為分塊,AB 乘積就如同以行列展開的乘法方式:

\begin{aligned}  \mathit{AB}&=\begin{bmatrix}    \mathit{A}_{1} & \cdots &\mathit{A}_{n}    \end{bmatrix}\begin{bmatrix}    \mathit{B}_{1}\\    \vdots \\    \mathit{B}_{n}    \end{bmatrix}\\  &=\mathit{A}_{1}\mathit{B}_{1}+\cdots+\mathit{A}_{n}\mathit{B}_{n}.\end{aligned}

 
我們討論的各種矩陣乘法運算都是等價的,適當選擇矩陣的分塊方式便與前述的四種基本乘法運算同義。分塊矩陣乘法較少用於數值計算 (除非問題具有特殊的形式,如許多零元聚集於一處),其主要用途為提供理論發展時所需要的運算處理機制。

註解
[1] 原文是:The bluebird carries the sky on his back.

Advertisement
This entry was posted in 線性方程, 線性代數專欄 and tagged . Bookmark the permalink.

4 Responses to 矩陣乘法的現代觀點

  1. suehang says:

    该文和(二)对大陆学生而言,无异于是甘霖呀!

  2. yangcheng says:

    老師您好,請問您網站的線性代數專欄是有進度的隨時間講解(比如最早的文章最基礎之後慢慢加深)還是一個重點就編寫一篇文章,沒有刻意編排進度?

    謝謝

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s