答林容麟──關於座標變換矩陣的快捷算法

網友林容麟留言:

周老師您好。在 2010/02/problem-set-7-2010 的練習題的第一題(c),要找出 change-of-coordinates matrix from basis \mathfrak{B} to \mathfrak{C},請問一下這個矩陣的係數是要怎麼找比較快,像這題答案是 \begin{bmatrix}  0.1&0.6\\  -0.1&0.4  \end{bmatrix},那麼若題目的基底(basis)包含4個向量,解出 4\times 4 階 change-of-coordinates matrix 不是很費時嗎?謝謝~

 
答曰:

我將原問題符號稍做更改,抄錄於下:設 \mathbb{R}^3 空間中子空間 \mathcal{V} 有兩組 (有序) 基底:

\mathfrak{B}_1=\left\{\begin{bmatrix}  1\\  1\\  1  \end{bmatrix},\begin{bmatrix}  1\\  0\\  1  \end{bmatrix}\right\},~~\mathfrak{B}_2=\left\{\begin{bmatrix}  5\\  4\\  5  \end{bmatrix},\begin{bmatrix}  -5\\  -6\\  -5  \end{bmatrix}\right\}

求從基底 \mathfrak{B}_1 至基底 \mathfrak{B}_2 的座標變換矩陣 (change-of-coordinates matrix),記為 C_{\mathfrak{B}_1\to\mathfrak{B}_2}

 
利用座標映射算子 [\cdot] 很容易導出兩基底間的座標變換矩陣,過程如下 (取自“啊哈!原來變換矩陣這麼簡單”)。考慮向量空間 \mathcal{V} 的兩組基底 \mathfrak{B}_1=\{\mathbf{v}_1,\ldots,\mathbf{v}_n\}\mathfrak{B}_2=\{\mathbf{w}_1,\ldots,\mathbf{w}_n\}。對於 \mathcal{V} 中任意向量 \mathbf{x},設

\begin{aligned}  \mathbf{x}&=c_1\mathbf{v}_1+\cdots+c_n\mathbf{v}_n,\\    \mathbf{x}&=d_1\mathbf{w}_1+\cdots+d_n\mathbf{w}_n.\end{aligned}

如欲從 [\mathbf{x}]_{\mathfrak{B}_1} 推得 [\mathbf{x}]_{\mathfrak{B}_2},將上面第一式代入 [\cdot]_{\mathfrak{B}_2},就有

\begin{aligned} \begin{bmatrix}  \mathbf{x}  \end{bmatrix}_{\mathfrak{B}_2}&=\begin{bmatrix}    c_1\mathbf{v}_1+\cdots+c_n\mathbf{v}_n    \end{bmatrix}_{\mathfrak{B}_2}\\    &=c_1[\mathbf{v}_1]_{\mathfrak{B}_2}+\cdots+c_n[\mathbf{v}_n]_{\mathfrak{B}_2}\\    &=\begin{bmatrix}    ~&~&~\\    [\mathbf{v}_1]_{\mathfrak{B}_2}&\cdots&[\mathbf{v}_n]_{\mathfrak{B}_2}\\    ~&~&~    \end{bmatrix}\begin{bmatrix}    c_1\\    \vdots\\    c_n    \end{bmatrix}\\  &=C_{\mathfrak{B}_1\rightarrow\mathfrak{B}_2}\cdot\begin{bmatrix}  \mathbf{x}  \end{bmatrix}_{\mathfrak{B}_1},\end{aligned}

見下圖:

座標變換矩陣的快捷算法

從基底 \mathfrak{B}_1 至基底 \mathfrak{B}_2 的座標變換矩陣即為

C_{\mathfrak{B}_1\rightarrow\mathfrak{B}_2}=\begin{bmatrix}    ~&~&~\\    [\mathbf{v}_1]_{\mathfrak{B}_2}&\cdots&[\mathbf{v}_n]_{\mathfrak{B}_2}\\    ~&~&~    \end{bmatrix}

根據對稱原則,由基底 \mathfrak{B}_2 至基底 \mathfrak{B}_1 的座標變換矩陣則為

C_{\mathfrak{B}_2\rightarrow\mathfrak{B}_1}=\begin{bmatrix}    ~&~&~\\    [\mathbf{w}_1]_{\mathfrak{B}_1}&\cdots&[\mathbf{w}_n]_{\mathfrak{B}_1}\\    ~&~&~    \end{bmatrix}

顯而易見,C_{\mathfrak{B}_1\rightarrow\mathfrak{B}_2} C_{\mathfrak{B}_2\rightarrow\mathfrak{B}_1}=I

 
上題中,\mathfrak{B}_1=\{\mathbf{v}_1,\mathbf{v}_2\}\mathfrak{B}_2=\{\mathbf{w}_1,\mathbf{w}_2\},其中

\mathbf{v}_1=\begin{bmatrix}  1\\  1\\  1  \end{bmatrix},~\mathbf{v}_2=\begin{bmatrix}  1\\  0\\  1  \end{bmatrix},~\mathbf{w}_1=\begin{bmatrix}  5\\  4\\  5  \end{bmatrix},~\mathbf{w}_2=\begin{bmatrix}  -5\\  -6\\  -5  \end{bmatrix}

因為 \dim\mathcal{V}=2,可知座標變換矩陣 C_{\mathfrak{B}_1\to\mathfrak{B}_2} 為一 2\times 2 階可逆矩陣:

C_{\mathfrak{B}_1\to\mathfrak{B}_2}=\begin{bmatrix}  c_{11}&c_{12}\\  c_{21}&c_{22}  \end{bmatrix}

其中 c_{11},c_{21}c_{12},c_{22} 分別滿足

\begin{bmatrix}  5&-5\\  4&-6\\  5&-5  \end{bmatrix}\begin{bmatrix}  c_{11}\\  c_{21}  \end{bmatrix}=\begin{bmatrix}  1\\  1\\  1  \end{bmatrix},~\begin{bmatrix}  5&-5\\  4&-6\\  5&-5  \end{bmatrix}\begin{bmatrix}  c_{12}\\  c_{22}  \end{bmatrix}=\begin{bmatrix}  1\\  0\\  1  \end{bmatrix}

換句話說,欲求得座標變換矩陣 C_{\mathfrak{B}_1\to\mathfrak{B}_2},我們必須解係數矩陣相同的兩組線性方程:

\begin{bmatrix}  5&-5\\  4&-6\\  5&-5  \end{bmatrix}\begin{bmatrix}  c_{11}&c_{12}\\  c_{21}&c_{22}  \end{bmatrix}=\begin{bmatrix}  1&1\\  1&0\\  1&1  \end{bmatrix}

高斯消去法是最常使用的方程解算法。將兩組方程式合併成一增廣矩陣,化簡過程如下:

\begin{aligned}\begin{bmatrix}  5&-5&\vline&1&1\\  4&-6&\vline&1&0\\  5&-5&\vline&1&1  \end{bmatrix}&\to\left[\!\!\begin{array}{crccr}  5&-5&\vline&1&1\\  0&-10&\vline&1&-4\\  0&0&\vline&0&0  \end{array}\!\!\right]\to\left[\!\!\begin{array}{crcrc}  1&-1&\vline&\frac{1}{5}&\frac{1}{5}\\[0.3em]  0&1&\vline&-\frac{1}{10}&\frac{2}{5}\\  0&0&\vline&0&0  \end{array}\!\!\right]\\  &\to\left[\!\!\begin{array}{cccrc}  1&0&\vline&\frac{1}{10}&\frac{3}{5}\\[0.3em]  0&1&\vline&-\frac{1}{10}&\frac{2}{5}\\  0&0&\vline&0&0  \end{array}\!\!\right]\end{aligned}

座標變換矩陣 C_{\mathfrak{B}_1\to\mathfrak{B}_2} 即為增廣矩陣右上方 2\times 2 階分塊:

C_{\mathfrak{B}_1\to\mathfrak{B}_2}=\left[\!\!\begin{array}{rc}  \frac{1}{10}&\frac{3}{5}\\[0.3em]  -\frac{1}{10}&\frac{2}{5}  \end{array}\!\!\right]

 
如果子空間增大,譬如,\mathcal{V}\in\mathbb{R}^6\dim\mathcal{V}=4C_{\mathfrak{B}_1\to\mathfrak{B}_2} 為一 4\times 4 階矩陣,面對這種大尺寸矩陣,除了高斯消去法,是否還有其他更快捷省時的算法?在特殊情況下,例如,\mathfrak{B}_2=\{\mathbf{w}_1,\ldots,\mathbf{w}_4\} 為一組單範正交基底 (orthonormal basis),\mathbf{w}_i^T\mathbf{w}_i=1\mathbf{w}_i^T\mathbf{w}_j=0i\neq j,線性方程的係數矩陣包含單範正交行向量,這時不需要解方程式立得 C_{\mathfrak{B}_1\to\mathfrak{B}_2} 的第 i 行:[\mathbf{v}_i]_{\mathfrak{B}_2}=\begin{bmatrix}  \mathbf{v}_i^T\mathbf{w}_1\\  \vdots\\  \mathbf{v}_i^T\mathbf{w}_4  \end{bmatrix}。然而,就一般情況而言,高斯消去法仍是目前已知最便捷的手算法。這個答覆可能令讀者感到不悅,但現實往往是「人生不如意事,十之八九」,所以亞里士多德說:「人生不應以追求快樂為目的,而應以減輕痛苦為目的。」最後,我提供一個可稍微減輕痛苦的計算方法,請見“利用行列式計算矩陣秩”。

Advertisements
本篇發表於 答讀者問, 線性變換 並標籤為 , , 。將永久鏈結加入書籤。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s