幾何變換矩陣的設計

本文的閱讀等級:初級

矩陣之所以成為研究線性變換的一個有效工具乃基於兩個事實:線性變換完全由基底的映射行為所決定,以及線性複合變換可表示為矩陣乘積 (見“線性代數的第一堂課──矩陣乘法的定義”)。本文運用這兩個性質來設計二維歐幾里得空間裡常用的一些幾何變換矩陣。

 
線性變換是一種數學函數,特別的是它具有移動向量空間的功能。不過線性變換有別於一般的函數,下面的定理清楚地呈現了線性變換特殊之處,雖然此定理是如此的基本,但卻常被學者忽略。

唯一基底映射定理:令 \mathcal{V} 為一個定義於 \mathbb{C} 的有限維向量空間,\{\mathbf{v}_1,\ldots,\mathbf{v}_n\}\mathcal{V} 的一組基底,又令 \mathcal{W} 為定義於 \mathbb{C} 的另一個向量空間,\mathbf{w}_1,\ldots,\mathbf{w}_n\mathcal{W} 中任何向量。存在唯一一個從 \mathcal{V} 映至 \mathcal{W} 的線性變換 T 使得

T(\mathbf{v}_i)=\mathbf{w}_i,~~i=1,\ldots,n

 
證明包含三個部份:首先從給定的條件定義出變換 T,接著證明 T 確實是一個線性變換,最後推論它是唯一的。欲證明存在一個線性變換 T 滿足 T(\mathbf{v}_i)=\mathbf{w}_i,考慮向量空間 \mathcal{V} 中的任何一個向量 \mathbf{x},存在唯一數組 c_1,\ldots,c_n 使得

\mathbf{x}=c_1\mathbf{v}_1+\cdots+c_n\mathbf{v}_n

接著定義

T(\mathbf{x})\overset{\underset{\mathrm{def}}{}}{=}c_1\mathbf{w}_1+\cdots+c_n\mathbf{w}_n

按此方式,\mathcal{V} 中的每一個成員 \mathbf{x} 必對應 \mathcal{W} 中的 T(\mathbf{x}),代入 \mathbf{x}=\mathbf{v}_i,由此定義可知 T(\mathbf{v}_i)=\mathbf{w}_ii=1,\ldots,n。欲證明 T 是一個線性變換,令 \mathbf{y}=d_1\mathbf{v}_1+\cdots+d_n\mathbf{v}_nk 為任一純量,則

\begin{aligned}  \mathbf{x}+\mathbf{y}&=(c_1+d_1)\mathbf{v}_1+\cdots+(c_n+d_n)\mathbf{v}_n\\    k\mathbf{x}&=(kc_1)\mathbf{v}_1+\cdots+(kc_n)\mathbf{v}_n.\end{aligned}

根據定義可得

\begin{aligned}  T(\mathbf{x}+\mathbf{y})&=(c_1+d_1)\mathbf{w}_1+\cdots+(c_n+d_n)\mathbf{w}_n\\    &=(c_1\mathbf{w}_1+\cdots+c_n\mathbf{w}_n)+(d_1\mathbf{w}_1+\cdots+d_n\mathbf{w}_n)\\    &=T(\mathbf{x})+T(\mathbf{y}),\end{aligned}

並且有

\begin{aligned}  T(k\mathbf{x})&=(kc_1)\mathbf{w}_1+\cdots+(kc_n)\mathbf{w}_n\\    &=k(c_1\mathbf{w}_1+\cdots+c_n\mathbf{w}_n)\\    &=kT(\mathbf{x}).\end{aligned}

因此,T 確實是一個線性變換。最後證明唯一性。若 L\mathcal{V} 映至 \mathcal{W} 的一個線性變換,並滿足 L(\mathbf{v}_i)=\mathbf{w}_ii=1,\ldots,n,對於任何向量 \mathbf{x}=c_1\mathbf{v}_1+\ldots+c_n\mathbf{v}_n,就有

\begin{aligned}  L(\mathbf{x})&=L(c_1\mathbf{v}_1+\ldots+c_n\mathbf{v}_n)\\    &=c_1L(\mathbf{v}_1)+\cdots+c_nL(\mathbf{v}_n)\\    &=c_1\mathbf{w}_1+\cdots+c_n\mathbf{w}_n.\end{aligned}

這指出 L 其實就是上面所定義的 T,故證明存在唯一的線性變換 T 滿足 T(\mathbf{v}_i)=\mathbf{w}_ii=1,\ldots,n

 
上述定理告訴我們線性變換 T 被任一組基底的像 (image) 唯一決定。考慮線性變換 T:\mathbb{C}^n\to\mathbb{C}^n。令 \mathbf{e}_1,\ldots,\mathbf{e}_n\mathbb{C}^n 的標準基底向量 (\mathbf{e}_i 的第 i 元為 1,其餘元為 0),且 T(\mathbf{e}_i)=\mathbf{a}_ii=1,\ldots,n。對於 \mathbb{C}^n 中任何向量 \mathbf{x},若 \mathbf{x}=x_1\mathbf{e}_1+\cdots+x_n\mathbf{e}_n\mathbf{x} 本身即為參考標準基底的座標向量 (x_1,\ldots,x_n),線性變換 T(\mathbf{x}) 可用矩陣乘法表達如下:

\begin{aligned}  T(\mathbf{x})&=x_1\mathbf{a}_1+\cdots+x_n\mathbf{a}_n=\begin{bmatrix}    ~&~&~\\    \mathbf{a}_1&\cdots&\mathbf{a}_n\\    ~&~&~    \end{bmatrix}\begin{bmatrix}    x_1\\    \vdots\\    x_n    \end{bmatrix}=A\mathbf{x}\end{aligned}

上式中 A 的每一個行向量 (column vector) \mathbf{a}_i 即為標準基底向量 \mathbf{e}_i 的像 T(\mathbf{e}_i),我們稱 A 為線性變換 T 參考標準基底的表示矩陣:

A=\begin{bmatrix}    ~&~&~\\    T(\mathbf{e}_1)&\cdots&T(\mathbf{e}_n)\\    ~&~&~    \end{bmatrix}

 
下面我們利用這個基本性質來設計一些常見的 \mathbb{R}^2 幾何變換矩陣:旋轉、鏡射 (reflection)、伸縮與切變 (shearing)。

 
旋轉

考慮以原點為中心的逆時針旋轉 (見圖一),設 \theta 為旋轉角度,單位向量 \mathbf{e}_1=\begin{bmatrix}    1\\    0    \end{bmatrix}\mathbf{e}_2=\begin{bmatrix}    0\\    1    \end{bmatrix} 經旋轉成為 T(\mathbf{e}_1)=\begin{bmatrix}    \cos\theta\\    \sin\theta    \end{bmatrix}T(\mathbf{e}_2)=\left[\!\!\begin{array}{r}    -\sin\theta\\    \cos\theta    \end{array}\!\!\right],故旋轉矩陣為

R(\theta)=\left[\!\!\begin{array}{cr}    \cos\theta&-\sin\theta\\    \sin\theta&\cos\theta    \end{array}\!\!\right]

圖一 逆時針旋轉

鏡射

L=\{t\mathbf{v}_1\vert t\in\mathbb{R}\} 為穿越原點的任意直線,其中 \mathbf{v}_1=\begin{bmatrix}    a\\    b    \end{bmatrix},見圖二。

圖二 對直線 L 的鏡射

\mathbf{v}_2=\left[\!\!\begin{array}{r}    -b\\    a    \end{array}\!\!\right],則 \mathbf{v}_1\mathbf{v}_2 正交,故 \mathbf{v}_1,\mathbf{v}_2\mathbb{R}^2 的一組基底。令線性變換 T 代表對直線 L 的鏡射,且滿足 T(\mathbf{v}_1)=\mathbf{v}_1T(\mathbf{v}_2)=-\mathbf{v}_2。欲解出 T(\mathbf{e}_1)T(\mathbf{e}_2),設

\begin{aligned}  \mathbf{e}_1&=c_{11}\mathbf{v}_1+c_{12}\mathbf{v}_2\\    \mathbf{e}_2&=c_{21}\mathbf{v}_1+c_{22}\mathbf{v}_2.\end{aligned}

將上面兩式合併為矩陣形式

\begin{bmatrix}    \mathbf{e}_1&\mathbf{e}_2    \end{bmatrix}=\begin{bmatrix}    \mathbf{v}_1&\mathbf{v}_2    \end{bmatrix}\begin{bmatrix}    c_{11}&c_{21}\\    c_{12}&c_{22}    \end{bmatrix}

亦即

\begin{bmatrix}    1&0\\    0&1    \end{bmatrix}=\left[\!\!\begin{array}{cr}    a&-b\\    b&a    \end{array}\!\!\right]\begin{bmatrix}    c_{11}&c_{21}\\    c_{12}&c_{22}    \end{bmatrix}

解出組合係數,

\begin{bmatrix}    c_{11}&c_{21}\\    c_{12}&c_{22}    \end{bmatrix}=\displaystyle\frac{1}{a^2+b^2}\left[\!\!\begin{array}{rc}    a&b\\    -b&a    \end{array}\!\!\right]

代入以上結果即得

\begin{aligned}  T(\mathbf{e}_1)&=c_{11}T(\mathbf{v}_1)+c_{12}T(\mathbf{v}_2)=c_{11}\mathbf{v}_1-c_{12}\mathbf{v}_2=\displaystyle\frac{1}{a^2+b^2}\begin{bmatrix}    a^2-b^2\\    2ab    \end{bmatrix}\end{aligned}

\begin{aligned}  T(\mathbf{e}_2)&=c_{21}T(\mathbf{v}_1)+c_{22}T(\mathbf{v}_2)=c_{21}\mathbf{v}_1-c_{22}\mathbf{v}_2=\displaystyle\frac{1}{a^2+b^2}\begin{bmatrix}    2ab\\    b^2-a^2    \end{bmatrix}.\end{aligned}

對於直線 L 的鏡射矩陣即為

F(a,b)=\displaystyle\frac{1}{a^2+b^2}\begin{bmatrix}    a^2-b^2&2ab\\    2ab&b^2-a^2    \end{bmatrix}

這個結果還可以加以化簡,

\begin{aligned}  F(a,b)&=\displaystyle\frac{1}{a^2+b^2}\begin{bmatrix}    a^2+b^2-2b^2&2ab\\    2ab&a^2+b^2-2a^2    \end{bmatrix}\\    &=I-\frac{2}{a^2+b^2}\begin{bmatrix}    b^2&-ab\\    -ab&a^2    \end{bmatrix}\\  &=I-\frac{2}{a^2+b^2}\left[\!\!\begin{array}{r}    b\\    -a    \end{array}\!\!\right]\begin{bmatrix}    b&-a    \end{bmatrix}.\end{aligned}

\mathbf{u}=\frac{1}{\sqrt{a^2+b^2}}\left[\!\!\begin{array}{r}    b\\    -a    \end{array}\!\!\right],上式可寫為 F(a,b)=I-2\mathbf{u}\mathbf{u}^T,又稱作 Householder 矩陣,\mathbf{u} 為鏡射軸的單位法向量 (見“特殊矩陣(4):Householder 矩陣”)。

 
鏡射變換矩陣還存在另一種表達式。在不失一般性原則下,設 \Vert\mathbf{v}_1\Vert=1,即 a^2+b^2=1,推知 -1\le a\le 1,故令 a=\cos\psib=\sin\psi,其中 \psi\mathbf{v}_1X 軸的夾角。利用二倍角公式,

\begin{aligned}  \cos 2\psi&=\cos^2\psi-\sin^2\psi\\    \sin 2\psi &=2\cos\psi\sin\psi,\end{aligned}

鏡射變換矩陣亦可寫為

F(\psi)=\left[\!\!\begin{array}{cr}    \cos 2\psi &\sin 2\psi\\    \sin 2\psi&-\cos 2\psi    \end{array}\!\!\right]

 
伸縮

伸縮可分別應用於 X 軸和 Y 軸。若 X 軸伸縮 s_x 倍,Y 軸伸縮 s_y 倍,即 T(\mathbf{e}_1)=\begin{bmatrix}    s_x\\    0    \end{bmatrix}T(\mathbf{e}_2)=\begin{bmatrix}    0\\    s_y    \end{bmatrix},伸縮矩陣即為對角矩陣

S(s_x,s_y)=\begin{bmatrix}    s_x&0\\    0&s_y    \end{bmatrix}

 
切變

切變有兩種可能的形式 (見圖三),平行於 X 軸的切變滿足 T(\mathbf{e}_1)=\mathbf{e}_1T(\mathbf{e}_2)=k\mathbf{e}_1+\mathbf{e}_2,切變矩陣為

H_x(k)=\begin{bmatrix}    1&k\\    0&1    \end{bmatrix}

平行於 Y 軸的切變滿足 T(\mathbf{e}_1)=\mathbf{e}_1+k\mathbf{e}_2T(\mathbf{e}_2)=\mathbf{e}_2,切變矩陣為

H_y(k)=\begin{bmatrix}    1&0\\    k&1    \end{bmatrix}

圖三 平行於 X 軸和 Y 軸的切變

 
較為複雜的變換可透過複合變換來實現,下面舉一例說明設計過程。考慮沿著穿越原點直線 L=\{t\mathbf{v}\vert t\in\mathbb{R}\} 方向伸縮 k 倍的線性變換 A。令 \mathbf{v}=\begin{bmatrix}    \cos\theta\\    \sin\theta    \end{bmatrix},先執行旋轉 R(-\theta) 使 \mathbf{v}X 軸重合,沿著 X 軸伸縮 k 倍,最後再經過 R(\theta)\mathbf{v} 轉回原方向,矩陣表達式如下:

\begin{aligned}  A&=R(\theta)S(s,1)R(-\theta)\\    &=\left[\!\!\begin{array}{cr}    \cos\theta&-\sin\theta\\    \sin\theta&\cos\theta    \end{array}\!\!\right]\begin{bmatrix}    k&0\\    0&1    \end{bmatrix}\left[\!\!\begin{array}{rc}    \cos\theta&\sin\theta\\    -\sin\theta&\cos\theta    \end{array}\!\!\right]\\    &=\begin{bmatrix}    k\cos^2\theta+\sin^2\theta&(k-1)\cos\theta\sin\theta\\    (k-1)\cos\theta\sin\theta&\cos^2\theta+k\sin^2\theta    \end{bmatrix}.\end{aligned}

 
然而,不論我們如何組合上述變換矩陣,都無法設計出「以平面上任意點 (非原點) 為中心的逆時針旋轉」或「對不穿越原點的直線鏡射」,其中原因在於這兩種變換都必須使用平移。考慮 \mathbb{R}^2 任意向量 \mathbf{x} 的平移運動 T(\mathbf{x})=\mathbf{x}+\mathbf{p},因為 T(\mathbf{0})=\mathbf{p}\neq\mathbf{0},故平移並非線性變換,也就是說,平移不能以矩陣來表示。為了克服這個問題,於是有齊次座標 (homogeneous coordinates) 和仿射 (affine) 變換的誕生,詳細討論見“仿射變換”。

This entry was posted in 線性變換, 線性代數專欄 and tagged , , , , , . Bookmark the permalink.

3 Responses to 幾何變換矩陣的設計

  1. Vahi Chen says:

    周老师,您好!向您请教一个问题:

    我们知道:1. 线性变换可以表示为矩阵的乘积;2. 矩阵的转置是一个线性函数;3. 不存在一个矩阵A,使得对于任意一个矩阵M,都有AM=M^T

    但若给定一个矩阵M,我们是否总能找到一个矩阵A,使其满足AM=M^T

    而显然答案是否定的。考虑A\begin{bmatrix}0&0\\1&0\end{bmatrix}=\begin{bmatrix}0&1\\ 0&0\end{bmatrix},满足该等式的A并不存在。

    所以,我的疑问是既然矩阵转置是线性函数,而线性函数又可以表示为矩阵的乘积,但针对上述的特例,这样的矩阵却有可能不存在。“可以表示”和“有可能不存在”这两者是否互为矛盾,或者这二者之间存在怎样的一种联系?

Leave a comment