2.1 消元法
消元法,這個方法最早由高斯提出,也叫高斯消元法:是為了求解線性方程組的。應用消元法求解的時候,通常會應用以下三種變換,並且每一種變換都不會改變方程組的解:
- 交換方程組中任意兩個方程的位置;
- 用一個數乘某一個方程的左右兩邊;
- 將一個方程的兩邊乘一個數然后加到另一個方程上。
求解三元方程組$ \left\{ \begin{eqnarray*}x & + & 2y & + & z & = & 2 \\3x & + & 8y & + & z & = & 12 \\\mbox{ } & \mbox{ } & 4y & + & z & = & 2\end{eqnarray*} \right.$ ,對應的矩陣形式 $\boldsymbol{A} \boldsymbol{x} = \boldsymbol{b}$ 為 $\left[ \begin{array}{ccc}1 & 2 & 1 \\3 & 8 & 1 \\0 & 4 & 1\end{array} \right]\left[ \begin{array}{c}x \\y \\z\end{array} \right]=\left[ \begin{array}{c}2 \\12 \\2\end{array} \right]$ 。按照消元法的思路:
- 我們希望在第二個方程中消去 $x$ 項,操作系數矩陣$\boldsymbol{A}=\left[ \begin{array}{ccc}\underline{1} & 2 & 1 \\3 & 8 & 1 \\0 & 4 & 1\end{array} \right]$ ,下划線的元素為主元(pivot):\[\left[ \begin{array}{ccc}\underline{1} & 2 & 1 \\3 & 8 & 1 \\0 & 4 & 1\end{array} \right]\xrightarrow{row_2 - 3row_1}\left[ \begin{array}{ccc}\underline{1} & 2 & 1 \\0 & 2 & -2 \\0 & 4 & 1\end{array} \right]\] 這里我們先不管 $\boldsymbol{b}$ 向量,等做完 $\boldsymbol{A}$ 的消元可以再做 $\boldsymbol{b}$ 的消元。(這是MATLAB等工具經常使用的算法。)
- 我們希望在第三個方程中消去 $y$ 項,現在第二行第一個非零元素成為了第二個主元:\[\left[ \begin{array}{ccc}\underline{1} & 2 & 1 \\0 & \underline{2} & -2 \\0 & 4 & 1\end{array} \right]\xrightarrow{row_3 - 2row_2}\left[ \begin{array}{ccc}\underline{1} & 2 & 1 \\0 & \underline{2} & -2 \\0 & 0 & \underline{5}\end{array} \right]\] 注意到第三行消元過后僅剩一個非零元素,所以它就成為第三個主元。做到這里就算消元完成了。再來討論一下消元失效的情形:
- 首先,主元不能為零;
- 其次,如果在消元時遇到主元位置為零,則需要交換行,使主元不為零;
- 最后提一下,如果我們把第三個方程 $z$ 前的系數成 $-4$ ,會導致第二步消元時最后一行全部為零,則第三個主元就不存在了,至此消元不能繼續進行了,這就是下一講中涉及的不可逆情況。
- 接下來就該回代(back substitution)了,這時我們在 $\boldsymbol{A}$ 矩陣后面加上 $\boldsymbol{b}$ 向量寫成增廣矩陣(augmented matrix)的形式:\[[ \begin{array}{c|c} \boldsymbol{A} & \boldsymbol{b} \end{array} ]=\left[ \begin{array}{ccc|c}1 & 2 & 1 & 2 \\3 & 8 & 1 & 12 \\0 & 4 & 1 & 2\end{array} \right]\rightarrow\left[ \begin{array}{ccc|c}1 & 2 & 1 & 2 \\0 & 2 & -2 & 6 \\0 & 4 & 1 & 2\end{array} \right]\rightarrow\left[ \begin{array}{ccc|c}1 & 2 & 1 & 2 \\0 & 2 & -2 & 6 \\0 & 0 & 5 & -10\end{array} \right]\] 不難看出,$z$ 的解已經出現了,此時方程組變為$\left\{ \begin{eqnarray*}x & + & 2y & + & z & = & 2 \\\mbox{ } & \mbox{ } & 2y & - & 2z & = & 6 \\\mbox{ } & \mbox{ } & \mbox{ } & \mbox{ } & 5z & = & -10\end{eqnarray*} \right.$ ,從第三個方程求出 $z = -2$ ,代入第二個方程求出 $y = 1$,再代入第一個方程求出 $x = 2$。
2.2 消元矩陣
上一講我們學習了矩陣乘以向量的方法,有三個列向量的矩陣乘以另一個向量,按列的線性組合可以寫作 $\left[ \begin{array}{ccc} v_1 & v_2 & v_3 \end{array} \right]\left[ \begin{array}{c} 3 \\ 4 \\ 5 \end{array} \right]= 3v_1 + 4v_2 + 5v_3$ 。
但現在我們希望用矩陣乘法表示行操作,則有$\left[ \begin{array}{ccc} 1 & 2 & 7 \end{array} \right]\left[ \begin{array}{c} row_1 \\ row_2 \\ row_3 \end{array} \right]= 1row_1 + 2row_2 + 7row_3$ 。易看出這里是一個行向量從左邊乘以矩陣,這個行向量按行操作矩陣的行向量,並將其合成為一個矩陣行向量的線性組合。
介紹到這里,我們就可以將消元法所做的行操作寫成向量乘以矩陣的形式了:
- 消元法第一步操作為將第二行改成 $row_2 - 3row_1$ ,其余兩行不變,則有$\left[ \begin{array}{ccc}1 & 0 & 0 \\-3 & 1 & 0 \\0 & 0 & 1\end{array} \right]\left[ \begin{array}{ccc}1 & 2 & 1 \\3 & 8 & 1 \\0 & 4 & 1\end{array} \right]=\left[ \begin{array}{ccc}1 & 2 & 1 \\0 & 2 & -2 \\0 & 4 & 1\end{array} \right]$ 。這個消元矩陣將第二行第一個元素變為零,我們將其記作 $\boldsymbol{E}_{21}$ 。另外,如果三行都不變,消元矩陣就是單位矩陣 $\boldsymbol{I}=\left[ \begin{array}{ccc}1 & 0 & 0 \\0 & 1 & 0 \\0 & 0 & 1\end{array} \right]$ ,$\boldsymbol{I}$ 之於矩陣運算相當於 $1$ 之於四則運算。
- 接下來就是求 $\boldsymbol{E}_{32}$ 消元矩陣了,即將第三行第二個元素變為零,則 $\left[ \begin{array}{ccc}1 & 0 & 0 \\0 & 1 & 0 \\0 & -2 & 1\end{array} \right]\left[ \begin{array}{ccc}1 & 2 & 1 \\0 & 2 & -2 \\0 & 4 & 1\end{array} \right]=\left[ \begin{array}{ccc}1 & 2 & 1 \\0 & 2 & -2 \\0 & 0 & 5\end{array} \right]$ 。這就是消元所用的兩個初等矩陣(elementary matrix) 。
- 最后,我們將這兩步綜合起來,即$\boldsymbol{E}_{32}(\boldsymbol{E}_{21} \boldsymbol{A}) = \boldsymbol{U}$ ,也就是說如果我們想從 $\boldsymbol{A}$ 矩陣直接得到 $\boldsymbol{U}$ 矩陣的話,只需要$\boldsymbol{E}_{32}(\boldsymbol{E}_{21} \boldsymbol{A})$ 即可。
矩陣乘法雖然不能隨意變動相乘次序,但是可以變動括號位置,也就是滿足結合律(associative law),而結合律在矩陣運算中非常重要,很多定理的證明都需要巧妙的使用結合律。
既然提到了消元用的初等矩陣,那我們再介紹常用的置換矩陣(permutation matrix) :
- $\left[ \begin{array}{cc}0 & 1 \\1 & 0\end{array} \right]\left[ \begin{array}{cc}a & b \\c & d\end{array} \right]=\left[ \begin{array}{cc}c & d \\a & b\end{array} \right]$ ,置換矩陣將原矩陣的兩行做了互換。
- $\left[ \begin{array}{cc}a & b \\c & d\end{array} \right]\left[ \begin{array}{cc}0 & 1 \\1 & 0\end{array} \right]=\left[ \begin{array}{cc}c & d \\a & b\end{array} \right]$ ,置換矩陣將原矩陣的兩列做了互換。
我們現在能夠將 $\boldsymbol{A}$ 通過行變換寫成 $\boldsymbol{U}$ ,
那么如何從 $\boldsymbol{U}$ 再變回 $\boldsymbol{A}$ ,也就是求消元的逆運算。
對某些“壞”矩陣,並沒有逆 ,而本講的例子都是“好”矩陣。
2.3 逆
現在,我們以 $\boldsymbol{E}_{21}$ 為例,什么矩陣可以撤銷這次的行變換,即$[?]\left[ \begin{array}{ccc}1 & 0 & 0 \\-3 & 1 & 0 \\0 & 0 & 1\end{array} \right]=\left[ \begin{array}{ccc} 1 & 0 & 0 \\ 0 & 1 & 0 \\0 & 0 & 1\end{array} \right]$ 。這次變換是從第二行中減去三倍的第一行,那么其逆變換就是給第二行加上三倍的第一行,所以逆矩陣就是$\left[ \begin{array}{ccc}1 & 0 & 0 \\3 & 1 & 0 \\0 & 0 & 1\end{array} \right]$ 。
我們把矩陣 $\boldsymbol{E}$ 的逆記作 $\boldsymbol{E}^{-1}$ ,所以有$\boldsymbol{E}^{-1} \boldsymbol{E} = \boldsymbol{I}$。