4.1 關於轉置和取逆的有一些性質
- $(\boldsymbol{A}\boldsymbol{B})^T = \boldsymbol{B}^T\boldsymbol{A}^T$
- $(\boldsymbol{A}\boldsymbol{B})^{-1} = \boldsymbol{B}^{-1}\boldsymbol{A}^{-1}$
\[ \begin{gather*}
\boldsymbol{A}\boldsymbol{A}^{-1} = \boldsymbol{I} = \boldsymbol{A}^{-1}\boldsymbol{A} \\
\Downarrow \\
\boldsymbol{A}(\boldsymbol{B}\boldsymbol{B}^{-1})\boldsymbol{A}^{-1} = \boldsymbol{I} \\
\Downarrow \\
(\boldsymbol{A}\boldsymbol{B})(\boldsymbol{B}^{-1}\boldsymbol{A}^{-1}) = \boldsymbol{I}\\
\Downarrow \\
(\boldsymbol{A}\boldsymbol{B})^{-1} = \boldsymbol{B}^{-1}\boldsymbol{A}^{-1}
\end{gather*} \]
- $(\boldsymbol{A}^T)^{-1} = (\boldsymbol{A}^{-1})^T$
\[ \begin{gather*}
(\boldsymbol{A} \boldsymbol{A}^{-1})^T = \boldsymbol{I}^T \\
\Downarrow \\
(\boldsymbol{A}^{-1})^T \boldsymbol{A}^T = \boldsymbol{I} \\
\Downarrow \\
(\boldsymbol{A}^T)^{-1} = (\boldsymbol{A}^{-1})^T
\end{gather*} \]
如果 $\boldsymbol{A}$ 是對稱矩陣,即$\boldsymbol{A}^T = \boldsymbol{A}$,則進一步有$\boldsymbol{A}^{-1} = (\boldsymbol{A}^{-1})^T$,即有對稱矩陣的逆也是對稱的 。
4.2 LU 分解
很多線性代數問題最后都可以歸結為矩陣分解問題,$\boldsymbol{L}\boldsymbol{U}$ 分解是最簡單,最重要的一個。利用高斯消元法,可以把一個矩陣 $\boldsymbol{A}$分解為一個上三角矩陣( $\boldsymbol{U}$ )和一個下三角矩陣( $\boldsymbol{L}$ ),即$\boldsymbol{A}=\boldsymbol{L}\boldsymbol{U}$ ,簡稱$\boldsymbol{L}\boldsymbol{U}$ 分解。下面的等式展示了分解后的效果。
\[ \boldsymbol{A}=\begin{bmatrix}
\blacksquare & 0 & 0 & 0 \\
\blacksquare & \blacksquare & 0 & 0 \\
\blacksquare & \blacksquare & \blacksquare & 0 \\
\blacksquare & \blacksquare & \blacksquare & \blacksquare
\end{bmatrix}
\begin{bmatrix}
\blacksquare & \blacksquare & \blacksquare & \blacksquare \\
0 & \blacksquare & \blacksquare & \blacksquare \\
0 & 0 & \blacksquare & \blacksquare \\
0 & 0 & 0 & \blacksquare
\end{bmatrix}
=\begin{bmatrix}
1 & 0 & 0 & 0 \\
\blacksquare & 1 & 0 & 0 \\
\blacksquare & \blacksquare & 1 & 0 \\
\blacksquare & \blacksquare & \blacksquare & 1
\end{bmatrix}
\begin{bmatrix}
\blacksquare & \blacksquare & \blacksquare & \blacksquare \\
0 & \blacksquare & \blacksquare & \blacksquare \\
0 & 0 & \blacksquare & \blacksquare \\
0 & 0 & 0 & \blacksquare
\end{bmatrix} \]
舉個列子,對於一個 $2 \times 2$ 矩陣$\boldsymbol{A}=\begin{bmatrix}2&1\\8&7\end{bmatrix}$ :
- 通過高斯消元可以得到一個上三角矩陣( $\boldsymbol{U}$ ):
\[ \begin{array}{ccc}
\boldsymbol{A} & & \boldsymbol{U} \\
\begin{bmatrix}2&1\\8&7\end{bmatrix}
& \xrightarrow{\text{消元}} &
\begin{bmatrix}2&1\\0&3\end{bmatrix}
\end{array} \]
使用消元矩陣表示為:
\[ \begin{array}{cccc}
\boldsymbol{E} & \boldsymbol{A} & & \boldsymbol{U} \\
\begin{bmatrix}1&0\\-4&1\end{bmatrix}
&
\begin{bmatrix}2&1\\8&7\end{bmatrix}
&
=
&
\begin{bmatrix}2&1\\0&3\end{bmatrix}
\end{array} \]
即我們通過消元得到了$\boldsymbol{E}\boldsymbol{A}=\boldsymbol{U}$ 。
- 要得到 $\boldsymbol{A}=\boldsymbol{L}\boldsymbol{U}$ ,我們只需要在$\boldsymbol{E}\boldsymbol{A}=\boldsymbol{U}$ 的基礎上,將等式兩邊同時乘以 $\boldsymbol{E}^{-1}$(即 $\boldsymbol{E}^{-1}$ 就是 $\boldsymbol{L}$)即可:
我們使用前面提到的Gauss-Jordan法來計算矩陣 $\boldsymbol{E}$ 的逆為$\boldsymbol{E}^{-1}=\begin{bmatrix}1&0\\4&1\end{bmatrix}$ ,我們可以得到:
\[ \begin{array}{cccc}
\boldsymbol{A} & & \boldsymbol{L} & \boldsymbol{U} \\
\begin{bmatrix}2&1\\8&7\end{bmatrix}
&
=
&
\begin{bmatrix}1&0\\4&1\end{bmatrix}
&
\begin{bmatrix}2&1\\0&3\end{bmatrix}
\end{array} \]
這樣就完成了一次 $\boldsymbol{L}\boldsymbol{U}$ 分解:$\boldsymbol{U}$ 是上三角矩陣,主對角線是主元,$\boldsymbol{L}$ 是下三角矩陣,主對角線上都是1。有時候我們需要把主元單獨拉出來組成一個對角矩陣,變成這樣:
\[ \begin{array}{ccccc}
\boldsymbol{A} & \mbox{ } & \boldsymbol{L} & \boldsymbol{D} & \boldsymbol{U}^\prime \\
\begin{bmatrix} 2 & 1 \\ 8 & 7 \end{bmatrix}
& = &
\begin{bmatrix} 1 & 0 \\ 4 & 1 \end{bmatrix}
&
\begin{bmatrix} 2 & 0 \\ 0 & 3 \end{bmatrix}
&
\begin{bmatrix} 1 & \frac{1}{2} \\ 0 & 1 \end{bmatrix}
\end{array} \]
4.3 LU 分解的前提
並非所有矩陣都能進行 $\boldsymbol{L}\boldsymbol{U}$ 分解,能夠 $\boldsymbol{L}\boldsymbol{U}$ 分解的矩陣需要滿足以下三個條件:
- 矩陣是方陣( $\boldsymbol{L}\boldsymbol{U}$ 分解主要是針對方陣);
- 矩陣是可逆的,也就是該矩陣是滿秩矩陣,每一行都是獨立向量;
- 消元過程中沒有 $0$ 主元出現,也就是消元過程中不能出現行交換的初等變換。
4.4 LU 分解的計算量
將一個 $n$ 階方陣 $\boldsymbol{A}$ 變換為$\boldsymbol{L}\boldsymbol{U}$ 需要的計算量估計:
- 將第一列中主對角線以下的元素變為 $0$ 。
以第二行為例,為了使第一個元素為 $0$ ,需要讓第一行乘以某個數(第一行 $n$ 個元素,共進行了 $n$ 次乘法運算),再將第一行和第二行相加或相減(第二行 $n$ 個數與第一行的 $n$ 個數相加,共進行了 $n$ 次加法運算)。
因此,第二行的消元共進行了 $2n$ 次運算。共有 $n-1$ 行需要類似運算,所以第一次消元共進行了 $2 \times n(n - 1) \approx 2 \times n^2$ 次運算。這一次消元達到的效果如下(其中 $\blacksquare$ 是矩陣中原本的元素,$\triangle$ 是在消元操作中被改變過的元素,$0$ 是操作達到的效果):
\[ \begin{bmatrix}
\blacksquare & \blacksquare & \cdots & \blacksquare \\
\blacksquare & \blacksquare & \cdots & \blacksquare \\
\vdots & \vdots & \ddots & \vdots \\
\blacksquare & \blacksquare & \cdots & \blacksquare
\end{bmatrix}
\xrightarrow{\mbox{消元}}
\begin{bmatrix}
\blacksquare & \blacksquare & \cdots & \blacksquare \\
0 & \triangle & \cdots & \triangle \\
0 & \vdots & \ddots & \vdots \\
0 & \triangle & \cdots & \triangle
\end{bmatrix} \]
- 以此類推,接下來每一步計算量約為$2 \times (n-1)^2$ 、$2 \times (n-2)^2$ 、$\cdots$ 、$2 \times 2^2$ 、$2 \times 1^2$ ;
- 則將 $\boldsymbol{A}$ 變換為 $\boldsymbol{L}\boldsymbol{U}$ 的總運算量應為$O(2 \times n^2+2 \times (n-1)^2+\cdots+2 \times 2^2+2 \times 1^2)$ ,即 $O(\frac{2n^{3}}{3})$ 。
4.5 LU 分解的作用
對於 $\boldsymbol{A}\boldsymbol{x}=\boldsymbol{b}$ ,我們可以看一下使用高斯消元法求解和利用$\boldsymbol{L}\boldsymbol{U}$ 分解來求解的過程。
- 使用高斯消元法求解:
- 直接根據 $\boldsymbol{A}\boldsymbol{x}=\boldsymbol{b}$ 進行求解。 對應的操作為:$\left[\begin{array}{c|c}\boldsymbol{A} & \boldsymbol{b}\end{array}\right]\xrightarrow{\text{消元}}\left[\begin{array}{c|c}\boldsymbol{I} & \boldsymbol{x}\end{array}\right]$ 。
- 利用 $\boldsymbol{L}\boldsymbol{U}$ 分解來求解:
- 將$\boldsymbol{A}$ 分解為$\boldsymbol{L}\boldsymbol{U}$ ,即$\boldsymbol{A}=\boldsymbol{L}\boldsymbol{U}$ 。此時 $\boldsymbol{L}$ 、 $\boldsymbol{U}$ 和$\boldsymbol{b}$ 都是已知的了。
- 根據$\begin{cases}\boldsymbol{A}\boldsymbol{x}=\boldsymbol{b} \\\boldsymbol{A}=\boldsymbol{L}\boldsymbol{U} \end{cases}$ ,有$\boldsymbol{L}\boldsymbol{U}\boldsymbol{x}=\boldsymbol{b}$ 。令 $\boldsymbol{y}=\boldsymbol{U}\boldsymbol{x}$ ,有$\boldsymbol{L}\boldsymbol{y}=\boldsymbol{b}$ ,我們根據該式子可求解出 $\boldsymbol{y}$ 。對應的操作為:$\left[\begin{array}{c|c}\boldsymbol{L} & \boldsymbol{b}\end{array}\right]\xrightarrow{\text{消元}}\left[\begin{array}{c|c}\boldsymbol{I} & \boldsymbol{y}\end{array}\right]$ 。
- 根據$\boldsymbol{U}\boldsymbol{x}=\boldsymbol{y}$求解出 $\boldsymbol{x}$ 。對應的操作為:$\left[\begin{array}{c|c}\boldsymbol{U} & \boldsymbol{y}\end{array}\right]\xrightarrow{\text{消元}}\left[\begin{array}{c|c}\boldsymbol{I} & \boldsymbol{x}\end{array}\right]$ 。
可以結合下面這張圖來理解上面的兩種求解過程。
$\boldsymbol{L}\boldsymbol{U}$ 分解法本身就可以看做是從高斯消元法演變出來的,對線性方程組 $\boldsymbol{A}\boldsymbol{x}=\boldsymbol{b}$ 的系數矩陣$\boldsymbol{A}$ 進行 $\boldsymbol{L}\boldsymbol{U}$分解這個操作就需要大約 $\frac{2n^{3}}{3}$ 次運算。這只是將系數矩陣 $\boldsymbol{A}$ 進行$\boldsymbol{L}\boldsymbol{U}$ 分解,還沒進行后續對 $x$ 的求解。而高斯消元法整個的運算量大約是 $\frac{2n^{3}}{3}$ 次,所以 $\boldsymbol{L}\boldsymbol{U}$ 分解法耗時比高斯消元法長是必然的。
$\boldsymbol{L}\boldsymbol{U}$ 分解法的優勢是,當左側的系數矩陣 $\boldsymbol{A}$ 一定,可以使得每一個形如 $\boldsymbol{A}\boldsymbol{x}=\boldsymbol{b}$的方程組的求解過程變得更為簡單。
在求解$\boldsymbol{A}\boldsymbol{x}=\boldsymbol{b_1}$ 、$\boldsymbol{A}\boldsymbol{x}=\boldsymbol{b_2}$ 、... 、$\boldsymbol{A}\boldsymbol{x}=\boldsymbol{b_k}$這一系列線性方程組時,只需要替換右側向量,而每次通過 $\boldsymbol{L}$ 、 $\boldsymbol{U}$ 矩陣進行求解的復雜度只有$O(n^2)$ ,這比使用高斯消元法每次求解都需要 $O(n^3)$ 復雜度運算要方便。即,如果使用系數矩陣 $\boldsymbol{A}$ 進行 $k$ 次求解,$\boldsymbol{L}\boldsymbol{U}$ 分解法需要進行$O(n^3) + kO(n^2)$ 復雜度運算,而高斯消元法需要進行 $kO(n^3)$ 復雜度的運算。
4.6 允許行交換的 LU 分解
對於 $\boldsymbol{L}\boldsymbol{U}$ 分解,我們在前面限制了對系數矩陣中行的互換,但如果不可避免的必須進行行互換,只需要把 $\boldsymbol{A}=\boldsymbol{L}\boldsymbol{U}$ 變成$\boldsymbol{P}\boldsymbol{A}=\boldsymbol{L}\boldsymbol{U}$ 就可以了,其中 $\boldsymbol{P}$ 是置換矩陣 。
實際上所有的 $\boldsymbol{A}=\boldsymbol{L}\boldsymbol{U}$ 都可以寫成$\boldsymbol{P}\boldsymbol{A}=\boldsymbol{L}\boldsymbol{U}$ 的形式,當 $\boldsymbol{A}$ 沒有行互換時, $\boldsymbol{P}$ 就是單位矩陣。
在下一講的置換矩陣中敘述了置換矩陣的性質有$\boldsymbol{P}^T = \boldsymbol{P}^{-1}$,所以$\boldsymbol{A}=\boldsymbol{P}^{-1}\boldsymbol{L}\boldsymbol{U}=\boldsymbol{P}^T\boldsymbol{L}\boldsymbol{U}$ 。