線性代數/增廣矩陣的高斯消去法

接下來的內容要有系統性的求出一個一般的 n 元一次聯立方程式的所有解,而這個聯立方程式不再限於未知數與限制式個數相同。

首先,必須要認知道的一項事實是,就單純要一眼判斷出一個聯立方程式是否有解是不可能的,因此退而求其次,要找一套固定的標準的流程,看最終結果來判斷。

換句話說,要找到一個演算法可以交給電腦來執行,而不是期待電腦能像人類可以見機行事,判斷當下哪種做法比較「好算」。

基本列運算

編輯

對於一個聯立方程式,或其所對應的增廣矩陣,其求解過程總是將方程式的各式,或增廣矩陣的各列,進行一些類似加加減減的運算。那麼,要研究出到底有哪些動作是可以被執行的,下面將舉盡所有的基本列運算:兩列互換、一列乘上非零常數、一列加上另一列的常數倍。

1. 兩列互換,例如
 
將第一列和第三列互換,而它所對應的聯立方程式是  
2. 一列乘上非零常數,例如
 
是將第二列乘上常數  ,而它所對應的聯立方程式是
 
3. 一列加上另一列的常數倍,例如
 
是將第三列加上 -2 倍的第一列,而它所對應的聯立方程式是
 

在第 2 點中,乘上的常數不可以是 0,否則會把整列歸零,換言之,會使一整條等式直接消失,可能造成最後解出不合的解;但在第 3 點中,一列加上另一列的常數倍,那個常數就可以是 0,因為一列加上另一列的 0 倍,等於是不對任何式子做變動,所以此作用雖然合法,但是沒有意義。

而基本列運算的名稱來源於,其他用於解方程式的複雜變換,都可以由多個基本列運算組合而成,例如多列的順序重排、多列同乘常數、一列加上多列的線性組合……等等。

求解過程

編輯

由於接着要處理的是給電腦來執行的一般性解法,因此必須照着   的順序依序消除便變數,並且要妥善安排消完變數後的列的上下順序。

第一步驟

編輯

首先,假設拿到一個增廣矩陣

 

同時我們在心裏要秉記着它所對應的聯立方程式

 

第一個步驟要消掉  ,然後分成三種情況分別處理:

  • 如果增廣矩陣   的第一列各項皆 0,換句話說  ,那麼這就意味着變數   根本不存在於聯立方程式之中,因此不需要做任何處理,直接前往下一步處理  
  • 如果   的最左上角那一項   不等於 0,那麼將第一行乘以  ,得到
 
其中對所有  ,有  。然後下一步是要將   、…、  消掉,因此,分別將第二行、第三行、…、第 m 行減去   、…、  倍的第一行,得到
 
特別要注意的是,從    的過程不是一個基本行運算,而是要將各行分別做,總共要做   次。
  • 如果   的最左上角那一項   等於 0,但   、…、  不全為 0,那麼設 k 是最小的正整數使得  ,接着將   的第一行和第 k 行互換,就回到上面第二點的情況。

第一步驟做完的結果

編輯

在此做個統整,順便看看下一步該怎麼操作,如果是第一點的情況

 

接下來就對   裏面的

 

進行與第一步驟相同的處理,一樣如上分成三種情況討論;如果是第二或第三點的情況,經處理後得到

 

接下來就對   裏面首行首列以外的部分

 

進行與第一步驟相同的處理,一樣如上分成三種情況討論。

終止況態

編輯

依據前一節的步驟,不斷重複對   進行列運算,由於每執行一次前一節的動作,  待處理的部分的長度或寬度會變小,因此在有限步的操作之內,上述的動作將會終止。而在上一節的操作中可以發現,在   最後兩行之間的那一槓其實沒有起什麼作用,因此在就算重複到最後,出現形如

 

的部分,仍然可以繼續操作:將第一個非 0 元素換到最上面,並且將它除成 1,再將剩下的元素減成 0。

那麼接着來看看在終止時的狀態,先直接下結論,此時   將形如

 

其中   代表連續 m 個 0,而 △ 則代表該項可以填入任意的數。

接下來解釋   的終止狀態會形如上式的原因:最左邊的連續  列的 0 代表前  次操作都是第一點的狀況,也就首列全為 0;而第一行第   列的 1 代表接着出現的狀況是第二或三點的狀況,因此操作完會使第   列上除了第一行的 1 以外全部都是 0。再之後便沒有第一行的事了,因此在 1 之後全都是 △,可能填入任何的數。然後第二列的  又代表着連續  次操作都是第一點的狀況,而接下去的 1 則代表接着出現的狀況是第二或三點的狀況,依此類推。

例子

編輯

實際上,在前述中的    …中,有可能下標中出現的是 0,也就連續出現零個 0,直接在 1 的右下角又出現一個 1,如果  ,那麼   終止狀態是

 

在此這情況下,最下面好幾列的全零列對應到的方程式是 0 = 0,毫無任何意義。忽略那些全 0 列之後,最後一列有意義的列是  ,對應到的方程式是 0 = 1,代表增廣矩陣   無解。

階梯形矩陣

編輯

在很多時候,矩陣中的 0 常會被省略不寫,而如果這樣的話,增廣矩陣經過列運算後的最終狀態長得像是個階梯,這就是階梯型矩陣的名字由來。

定義

一個矩陣   被稱為是階梯形矩陣如果   滿足以下條件

  • 所有   的非零列(矩陣的列至少有一個非 0 元素)在所有全零列的上面。即全零列都在矩陣的底部。
  • 非零列的首項非 0 系數,即最左邊的首個非零元素,必定是 1,而且其位置必需嚴格地比上面列的首項非 0 系數更靠右。

可以很容易的看出,一個增廣矩陣經過列運算後的最終狀態必然是一個階梯形矩陣。

例子

編輯

   都是階梯形矩陣。