左逆與右逆

本文的閱讀等級:初級

考慮線性方程 A\mathbf{x}=\mathbf{b},其中 A 為一 m\times n 階矩陣。如果係數矩陣 A 存在一個 n\times m 階左逆矩陣 A' 使得 A'A=I_n,我們可以解出線性系統,如下:

\begin{aligned}  &~~~~~A\mathbf{x}=\mathbf{b}\\  &\Rightarrow A'A\mathbf{x}=A'\mathbf{b}\\  &\Rightarrow\mathbf{x}=A'\mathbf{b}  \end{aligned}

不過,當你試圖反向推導時,卻遇到了麻煩:

\begin{aligned}  &~~~~~\mathbf{x}=A'\mathbf{b}\\  &\Rightarrow A\mathbf{x}=AA'\mathbf{b}\\  &\Rightarrow A\mathbf{x}\overset{\underset{?}{}}{=}\mathbf{b}  \end{aligned}

我們並不能斷言 A' 也是 A 的右逆矩陣,即 AA'=I_m。問題出在那裡呢?

 
假設 m\times n 階矩陣 A 存在一左逆 A' 使得 A'A=I_n,則

n=\hbox{rank}(A'A)\le\hbox{rank}A\le n

因此,\hbox{rank}A=n,也就是說 A 有線性獨立的行向量 (column vector)。令 C(A) 表示 A 的行空間 (即值域)。若 \mathbf{b}\in C(A),則 A\mathbf{x}=\mathbf{b} 有唯一解。若 \mathbf{b}\notin C(A),則 A\mathbf{x}=\mathbf{b} 不存在解。

 
線性方程 A\mathbf{x}=\mathbf{b} 左乘 n\times m 階矩陣 A',可得 A'A\mathbf{x}=A'\mathbf{b}。這個步驟看似順理成章,其實是整個推論出錯的源頭。為了使 A\mathbf{x}=\mathbf{b} 的解維持不變,我們只能左乘一個 m\times m 階可逆矩陣 M,如此方可保證 MA\mathbf{x}=M\mathbf{b} 同義於 A\mathbf{x}=\mathbf{b}。高斯消去法的每一個運算都遵守這條法則,因為對增廣矩陣 \begin{bmatrix}  A~\vline~\mathbf{b}  \end{bmatrix} 執行基本列運算 (elementary row operation) 等同於左乘可逆基本矩陣 (見“特殊矩陣 (10):基本矩陣”)。見下例,

\displaystyle  A\mathbf{x}=\left[\!\!\begin{array}{cr}  1&1\\  1&-1\\  0&1  \end{array}\!\!\right]\begin{bmatrix}  x_1\\  x_2  \end{bmatrix}=\begin{bmatrix}  1\\  0\\  0  \end{bmatrix}=\mathbf{b}

利用基本列運算化簡,可得

\displaystyle  \begin{bmatrix}  A\,\vline\,\mathbf{b}  \end{bmatrix}=\left[\!\!\begin{array}{crcc}  1&1&\vline&1\\  1&-1&\vline&0\\  0&1&\vline&0  \end{array}\!\!\right]\to\left[\!\!\begin{array}{cccr}  1&1&\vline&1\\  0&1&\vline&0\\  0&0&\vline&-1  \end{array}\!\!\right]

最底列顯示 \mathbf{b} 不屬於 C(A),故 A\mathbf{x}=\mathbf{b} 不存在解。在這個例子,A 的左逆有無窮多個,我們最常選擇 A'=(A^TA)^{-1}A^T,稱為偽逆 (pseudoinverse) 或廣義逆矩陣 (generalized inverse)。代入數值計算出 A'=\left[\!\!\begin{array}{crr}  1/2&1/2&0\\  1/3&-1/3&1/3  \end{array}\!\!\right],按照上述錯誤的推論方式,可得 \mathbf{x}=A'\mathbf{b}=\begin{bmatrix}  1/2\\  1/3  \end{bmatrix}。這裡我們得到的 \mathbf{x} 並不是 A\mathbf{x}=\mathbf{b} 的真解而是最小平方近似解,記為 \hat{\mathbf{x}},此解使得 \Vert A\hat{\mathbf{x}}-\mathbf{b}\Vert 有極小值 (見“從線性變換解釋最小平方近似”)。

 
另一方面,若 \mathbf{b}\in C(A),則 A\mathbf{x}=\mathbf{b} 是一致的 (即存在解)。這時候,左乘 A'=(A^TA)^{-1}A^T 得到的 \mathbf{x}=(A^TA)^{-1}A^T\mathbf{b} 確實是唯一的真解。上式左乘 A,即有 A\mathbf{x}=A(A^TA)^{-1}A^T\mathbf{b}。因為 P=A(A^TA)^{-1}A^T\mathbb{R}^m 至子空間 C(A) 的正交投影矩陣,且 \mathbf{b}\in C(A),故 A\mathbf{x}=P\mathbf{b}=\mathbf{b}。換句話說,雖然 AA' 未必等於 I_m,但 AA'\mathbf{b}=\mathbf{b} 一定成立。請讀者自行驗證:在 \mathbf{b} 屬於 C(A) 的前提下,縱使將 A'=(A^TA)^{-1}A^T 替換為其他左逆矩陣,上述不周延的推導方式所得到的結果仍然正確的。這個案例提醒我們:除了輕率粗心,人們之所以難察推理過程暗藏的陷阱正是因為它具備完好的隱蔽性。

This entry was posted in 線性代數專欄, 內積空間 and tagged , . Bookmark the permalink.

10 則回應給 左逆與右逆

  1. npes_87184 說:

    rank(A)可能小於m,因為相乘矩陣的rank<=個別的所以AA'的rank<m。
    相當於AA'!=I,因為下面有0。

  2. ccjou 說:

    抓漏水往往比蓋房子來得困難。這個問題可以用來檢驗我們的基本觀念是否正確穩固。

    • npes_87184 說:

      真的,本來以為自己挺懂得,現在卻發現還是不夠。

    • Watt Lin 說:

      相似的事,好像也不少!
      程式碼的debug,有時耗費大量時間。
      假如程式不大,重新寫一個程式,有可能較快,使問題解決。
      大型程式,需要良好的debug工具,耐心用時間去除錯。

發表迴響

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

WordPress.com Logo

你正使用 WordPress.com 帳號留言。 登出 / 變更 )

Twitter picture

你正使用 Twitter 帳號留言。 登出 / 變更 )

Facebook照片

你正使用 Facebook 帳號留言。 登出 / 變更 )

Google+ photo

你正使用 Google+ 帳號留言。 登出 / 變更 )

連結到 %s