答季同學──關於矩陣乘法的運算方式

網友季同學留言:

周老師您好,我不是貴校的學生;由於要考研究所的緣故,我買了貴校出版您所編纂的線性代數講義+光碟回家自修,您在內容有提到希望同學不要再用以往 row by column 的方式做矩陣相乘,想請問老師是我誤解還是您真有此意?用這種方式會造成什麼錯誤嗎?煩請撥冗回覆,謝謝!

 
答曰:

矩陣乘法存在四種運算方式,它們各自有不同的使用時機 (見“矩陣乘法的現代觀點”)。令 A 是一 m\times n 階矩陣,B 是一 n\times p 階矩陣。高中數學給出以「元」(entry) 為計算單元的矩陣乘法定義,又稱為列行法則 (row-column rule),即 AB(i,j) 元等於 A 的第 i 列與 B 的第 j 行之點積 (dot product),如下:

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

除了方便手算與解釋實矩陣的列空間和零空間的正交關係 (見“線性代數基本定理 (二)”),列行法則幾無其他實用價值。列行法則是矩陣乘法定義的推論,使用它來計算並不會造成甚麼錯誤 (或許帶來一些尷尬和不快,見文末)。我鼓勵讀者拋棄列行法則的用意在於打開一個新的眼界,好讓我們順利踏入線性代數的世界。

 
過去我曾經寫過一篇關於矩陣乘法的開箱文 (見“線性代數的第一堂課──矩陣乘法的定義”),其中解釋了矩陣乘法對應複合線性變換。下面提供一套較為完整的論述。令 T:\mathbb{R}^n\to\mathbb{R}^m 為一線性變換,它是一種數學機器,圖示如下:

\mathbf{x}\longrightarrow\boxed{~~{T}~~}\longrightarrow T(\mathbf{x})

線性變換 T 具有下列性質:對於 \mathbf{x},\mathbf{y}\in\mathbb{R}^n 和純量 c

\begin{aligned}  T(\mathbf{x}+\mathbf{y})&=T(\mathbf{x})+T(\mathbf{y})\\  T(c\mathbf{x})&=cT(\mathbf{x}).  \end{aligned}

淺白地說,向量加法和純量乘法可在線性變換的輸入端執行 (等號左邊),也可在輸出端執行 (等號右邊),兩者有相同的結果。

 
線性變換是線性代數的核心運算,我們想探討的第一問題是:線性變換 T:\mathbb{F}^n\to\mathbb{R}^m 是如何運作的?考慮 \mathbb{R}^n 的標準基底 \{\mathbf{e}_1,\ldots,\mathbf{e}_n\},其中 \mathbf{e}_j 的第 j 元是 1,其餘元是 0。明顯地,任一 \mathbf{x}\in\mathbb{R}^n 有下面的表達式:

\mathbf{x}=\begin{bmatrix}  x_1\\  x_2\\  \vdots\\  x_n  \end{bmatrix}=x_1\begin{bmatrix}  1\\  0\\  \vdots\\  0  \end{bmatrix}+x_2\begin{bmatrix}  0\\  1\\  \vdots\\  0  \end{bmatrix}+\cdots+x_n\begin{bmatrix}  0\\  0\\  \vdots\\  1  \end{bmatrix}=x_1\mathbf{e}_1+x_2\mathbf{e}_2+\cdots+x_n\mathbf{e}_n

\mathbf{x} 代入 T(\cdot),使用線性變換性質,可得

T(\mathbf{x})=T(x_1\mathbf{e}_1+x_2\mathbf{e}_2+\cdots+x_n\mathbf{e}_n)=x_1T(\mathbf{e}_1)+x_2T(\mathbf{e}_2)+\cdots+x_nT(\mathbf{e}_n)

上式指出一旦我們知道 T(\mathbf{e}_j)j=1,\ldots,n,即可按照組合權重 x_1,\ldots,x_n 合成 T(\mathbf{x})。如果

T(\mathbf{e}_j)=\mathbf{a}_j=\begin{bmatrix}  a_{1j}\\  a_{2j}\\  \vdots\\  a_{mj}  \end{bmatrix},~~~j=1,\ldots,n

則得

T(\mathbf{x})=x_1\mathbf{a}_1+x_2\mathbf{a}_2+\cdots+x_n\mathbf{a}_n=x_1\begin{bmatrix}  a_{11}\\  a_{21}\\  \vdots\\  a_{m1}  \end{bmatrix}+x_2\begin{bmatrix}  a_{12}\\  a_{22}\\  \vdots\\  a_{m2}  \end{bmatrix}+\cdots+x_n\begin{bmatrix}  a_{1n}\\  a_{2n}\\  \vdots\\  a_{mn}  \end{bmatrix}

線性變換 T 的作為完全由 \{a_{ij}\} 決定。自然地,我們有這個想法:將行向量 \mathbf{a}_1,\ldots,\mathbf{a}_n 合併成一 m\times n 階矩陣

A=\begin{bmatrix}  \mathbf{a}_1&\mathbf{a}_2&\cdots&\mathbf{a}_n  \end{bmatrix}=\begin{bmatrix}  a_{11}&a_{12}&\cdots&a_{1n}\\  a_{21}&a_{22}&\cdots&a_{2n}\\  \vdots&\vdots&\ddots&\vdots\\  a_{m1}&a_{m2}&\cdots&a_{mn}  \end{bmatrix}

稱為線性變換 T 的標準矩陣。對於任一向量 \mathbf{x}\in\mathbb{R}^n,我們要求 T(\mathbf{x})=A\mathbf{x}。因此,矩陣向量乘法 A\mathbf{x} 定義為 A 的行向量 \mathbf{a}_1,\ldots,\mathbf{a}_n 的線性組合並以 \mathbf{x} 的元當作組合權重,如下:

A\mathbf{x}=\begin{bmatrix}  \mathbf{a}_1&\mathbf{a}_2&\cdots&\mathbf{a}_n  \end{bmatrix}\begin{bmatrix}  x_1\\  x_2\\  \vdots\\  x_n  \end{bmatrix}=x_1\mathbf{a}_1+x_2\mathbf{a}_2+\cdots+x_n\mathbf{a}_n

 
接下來考慮兩個線性變換 S:\mathbb{R}^p\to\mathbb{R}^nT:\mathbb{R}^n\to\mathbb{R}^m,將它們串接在一起,圖示如下:

\mathbf{x}\longrightarrow\boxed{~~{S}~~}\longrightarrow S(\mathbf{x})\longrightarrow\boxed{~~{T}~~}\longrightarrow T\left(S(\mathbf{x})\right)

其中 \mathbf{x}p 維向量,S(\mathbf{x})n 維向量,T\left(S(\mathbf{x})\right)m 維向量。我們用 T\circ S 代表 ST 的複合線性變換,即 (T\circ S)(\mathbf{x})=T\left(S(\mathbf{x})\right)。令 n\times p 階矩陣 B S 的標準矩陣,m\times n 階矩陣 AT 的標準矩陣。如果 AB 是複合變換 T\circ S 的標準矩陣,那該如何定義 AB 呢?將複合線性變換 T\circ S 以矩陣表示如下:

\mathbf{x}\longrightarrow\boxed{~~{B}~~}\longrightarrow B\mathbf{x}\longrightarrow\boxed{~~{A}~~}\longrightarrow A(B\mathbf{x})

上面的複合變換等同於

\mathbf{x}\longrightarrow\boxed{~~{AB}~~}\longrightarrow (AB)\mathbf{x}

換句話說,對於每一個向量 \mathbf{x}\in\mathbb{R}^p,我們要求

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

B 的行向量為 \mathbf{b}_1,\ldots,\mathbf{b}_p,則

B\mathbf{x}=\begin{bmatrix}  \mathbf{b}_1&\mathbf{b}_2&\cdots&\mathbf{b}_p  \end{bmatrix}\begin{bmatrix}  x_1\\  x_2\\  \vdots\\  x_p  \end{bmatrix}=x_1\mathbf{b}_1+x_2\mathbf{b}_2+\cdots+x_p\mathbf{b}_p

因為 A 具有線性變換性質,

\begin{aligned}  A(B\mathbf{x})&=A\left(x_1\mathbf{b}_1+x_2\mathbf{b}_2+\cdots+x_p\mathbf{b}_p\right)\\  &=x_1(A\mathbf{b}_1)+x_2(A\mathbf{b}_2)+\cdots+x_p(A\mathbf{b}_p)\\  &=\begin{bmatrix}  A\mathbf{b}_1&A\mathbf{b}_2&\cdots&A\mathbf{b}_p  \end{bmatrix}\begin{bmatrix}  x_1\\  x_2\\  \vdots\\  x_p  \end{bmatrix}\\  &=\begin{bmatrix}  A\mathbf{b}_1&A\mathbf{b}_2&\cdots&A\mathbf{b}_p  \end{bmatrix}\mathbf{x}.\end{aligned}

令上式等於 (AB)\mathbf{x},立得 AB 的定義:

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

此即以「行」為運算單元的矩陣乘法。注意,AB 的第 j 行是 A\mathbf{b}_J,此行是 A 的行向量的線性組合並以 \mathbf{b}_j 的元作為組合權重。

 
以「行」為矩陣乘法運算單元不僅具有提示性,同時也大大簡化證明推導過程。以矩陣的乘法結合律為例,

A(BC)=(AB)C

C=\begin{bmatrix}  \mathbf{c}_1&\mathbf{c}_2\cdots&\mathbf{c}_q\end{bmatrix}。根據矩陣乘法定義,

\begin{aligned}  BC&=\begin{bmatrix}  B\mathbf{c}_1&B\mathbf{c}_2&\cdots&B\mathbf{c}_q  \end{bmatrix}\\  A(BC)&=\begin{bmatrix}  A(B\mathbf{c}_1)&A(B\mathbf{c}_2)&\cdots&A(B\mathbf{c}_q)  \end{bmatrix}.\end{aligned}

使用前述要求:對於任一 \mathbf{x}A(B\mathbf{x})=(AB)\mathbf{x},即得

A(BC)=\begin{bmatrix}  (AB)\mathbf{c}_1&(AB)\mathbf{c}_2&\cdots&(AB)\mathbf{c}_q  \end{bmatrix}=(AB)C

如果上面這個例子依然無法說服諸生放下以「元」為矩陣乘法運算單元的念頭,那麼讀者不妨嘗試用它來證明 \det(AB)=(\det A)(\det B)。即便 A, B3\times 3 階矩陣,這也絕對算得上是「這輩子我最不想經歷的一百件事」之一 (見“矩陣乘積行列式公式的代數證法”)。

Advertisement
This entry was posted in 答讀者問, 線性方程 and tagged . Bookmark the permalink.

6 Responses to 答季同學──關於矩陣乘法的運算方式

  1. Watt Lin says:

    我在國中一年級時,英語老師有一次發現,班上少數同學抄筆記的方式很緩慢:
    抬頭看黑板,低頭寫個T,抬頭,低頭寫h,再抬頭、低頭寫i,又如此動作,寫s,拼出 This,寫很久,最後寫出整句 This is a book.
    老師建議,可以練習一次看一個單字(word)抄寫,漸漸訓練一次看整句sentence。
    如果一次只看一個字母(letter),將來升上國二、國三,速度會跟不上。
    不同科目之學習,有類似之要訣。
    好的老師,引導我們掌握要領,可以事半功倍,提升效率,學到更多。

    • ccjou says:

      老師建議,可以練習一次看一個單字(word)抄寫,漸漸訓練一次看整句sentence。
      如果一次只看一個字母(letter),將來升上國二、國三,速度會跟不上。

      很有意思的比喻。我想起兒子小學一年級寫造句作業時問我:「爸,遊戲的‘戲’怎麼寫?」我說:「很難寫,你寫注音啦!ㄒㄧˋ」他仍不放棄,硬要我寫在紙上。他看了以後就說:「唉呀!那你剛才怎麼不告訴我?老虎的‘虎’下面換成‘豆’,旁邊再加上一個‘戈’,不就好了嘛!」頓時無語。

  2. 潘超 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