Glophy Zone Backup

第一章:解線性方程組 PDF 列印 E-mail
作者 曾正男   
2009/04/23, 週四

1.1    從ax=b 開始

在正式的介紹線性代數是什麼,我們問一個簡單的問題。給一個一元一次方程式 ax=b,其中a, b 是常數。試問x 的解為何?我猜想很多人會不假思索的回答,簡單嘛!答案是x=b/a。這答案怎麼來的?簡單嘛!把a 從左式除到右式,就得到 x=b/a。

確定嗎?你確定ax=b 的正確答案是 x=b/a嗎?

答案是不一定。

請牢記這個例子,依此類推的觀念將不斷地出現。ax=b 的答案是 x=b/a 是有條件的,條件就是 a 不等於 0。只有當 a不等於 0 時,我們才能應用等量除法原理,在左右兩式同時除上a ,進而得到答案 x=b/a。詳細的說,當a 與b 同時為0 時,x 可為任意數;當 a=0 且 b不等於 0時,此方程式無解。多數人會習慣性的忽略這個事實,看到常數a 就除過去就是了。重點是a 不是每次都能當作除數。

倘若 a不等於 0 ,方程式 ax=b 還可以說什麼故事?

首先,我們把 y=ax 當作x 的函數。我們觀察,當 x=0時,函數 y 的值是0。若y1=ax1, y2=ax2,那麼 y=a(x1+x2)正好等於ax1+ax2=y1+y2。意思是說,這樣的函數y具備y(x1+x2)=y(x1)+y(x2)的特性。另外,若y(x)=ax,給定任一常數c ,則y(cx) = acx = cax = cy(x)。上述y(x1+x2)=y(x1)+y(x2) 以及 y(cx)=cy(x) 的特性,是線性函數重要的特徵,在往後的章節我們會更詳細的定義。要記住不是每個函數都具備這樣的特性,在計算上很多人會忽略這個事實,以至於產生一些計算上的錯誤。舉例來說,函數f(x)定義為ax+b,其中a,b 為一固定的常數。這樣的函數就不具備上述兩個特性。

再來,我們觀察a這個數字,對函數y(x)=ax 帶來什麼樣的影響?

若y1(x)=a1x , y2(x)=a2x,其中a1>a2。給定一個x>0 將其帶入y1及y2函數,很明顯的函數值y1(x) 大於y2(x)。反之,若x<0 則函數值y1(x)<y2(x)。因此,我們可以將常數a 的角色視為一個擴展的角色,當a 的絕對值越大的時候,函數y(x)=ax 將x 對應到y 的擴展的能力就越大。 

1.2    二元一次聯立方程式

 約在國中的時候,我們開始學習二元一次聯立方程式,其通式如下。

 http://www.glophy.com/images/equation/linear1_1/latex-image-1.png          (1.2.1)

這裡的aij 與bi 是某個給定的常數,x 和 y 是變數。解二元一次聯立方程式的方式有幾個老招數,例如,代入消去法和加減消去法。簡單的說,這些老招數都是把兩個變數的問題轉化成一個變數的問題,然後解一元一次方程式,解完後再代回方程式中去求另外一個變數的解。

如果你還有映像,當時這一類的問題很喜歡考有是否有解?如果有解,是一個解還是無限多組解?是什麼樣的條件成立,會造成解集合個數的不同?若我們維持一元一次方程式的形式,我們把 aij 集合成一個符號

http://www.glophy.com/images/equation/linear1_1/latex-image-2.png

把變數x, y 與 bi 也分別集合起來成為

 http://www.glophy.com/images/equation/linear1_1/latex-image-3.png

http://www.glophy.com/images/equation/linear1_1/latex-image-4.png

那麼AX=B的形式就可以繼續維持。我們把

http://www.glophy.com/images/equation/linear1_1/latex-image-2.png

 

 

稱為矩陣A,而且是一個2-by-2的矩陣,X 與 B稱為一個2維的向量。從(1.2.1)式我們觀察

 http://www.glophy.com/images/equation/linear1_1/latex-image-5.png

 我們知道矩陣A 乘上向量X 會得到一個2維向量。因此,AX 的詳細運算結果就是

 http://www.glophy.com/images/equation/linear1_1/latex-image-6.png

我們對應一元一次方程式的例子,探討A 的情況與解集合個數的關係。那麼,什麼是對應的A不等於0呢?

在一元一次方程式裡,我們知道當a 不等於0 的時候,方程式有唯一解。倘若相較於二元一次聯立方程式時,是指A 不是一個零矩陣,我們就必須觀察是否當A 不是一個零矩陣時,聯立方程式都有解。這裡我們給一個反例,

 http://www.glophy.com/images/equation/linear1_1/latex-image-7.png

在這個例子,我們看到對應的A 矩陣其內部元素都是1 ,A 不是零矩陣,但是這個方程組是無解的。因此,我們可以斷定在二元一次方程式裡,斷定解是否為一,不是看A 是否為零矩陣。在高中的時候,我們學到行列式的概念。我們也知道,要判別一個線性方程組的解是否唯一時,行列式佔有重要的地位。一個方陣,可以定義一個行列式值。在2-by-2 的方陣裡,我們定義行列式值為

 http://www.glophy.com/images/equation/linear1_1/latex-image-8.png

所以,上述反例正好是行列式值等於0 的情況,所以,不是唯一解的情形。 我們知道在二元一次聯立方程式裡,若上下兩式的係數不成比例,那麼行列式值不為0 ,此時方程組有唯一解。那麼,在A 不是常數的情況,對應的1/A 代表什麼意思呢?類似的問題,當A 的行列式值為0 的時候,什麼是無解以及無限多組解的條件呢?

1.3    三元一次聯立方程式

若我們將問題在拓展到三元一次聯立方程式,這時變數增加為三個x、y 和z,其通式為

 http://www.glophy.com/images/equation/linear1_1/latex-image-9.png

 或是用矩陣的表示方法將其表示為AX=B 的形式

 http://www.glophy.com/images/equation/linear1_1/latex-image-10.png

同樣的在這裡我們定義A 的3 階行列式值為

http://www.glophy.com/images/equation/linear1_1/latex-image-11.png

這裡我們開始體會到一點壓力了。二階的行列式值的計算非常簡單,但是到了三階的行列式其計算量是以暴增的速度增加。在高中之前,不論求解二元一次,或是三元一次,我們都是利用降階的方式,將變數的個數,由三個變成兩個,再由兩個,變成一個。然後,再反算回來,將所有的變數一一求出。從二維到三維再到四維,計算上增加的複雜度就非常明顯了。

傳統的解線性方程組,有一個很重要的定理,稱為克萊姆法則(Cramer's rule)。克萊姆法則提供了一個系統化的解法,說明了每一個未知數和方程組係數之間的關係,換句話說,就是線性方程組的公式解。克萊姆法則的主要計算核心,是行列式的運算。關於克萊姆法則的詳細內容請自行到網路上搜尋,在此不多贅述。然而,一個n階行列式的展開有n!項,除非矩陣中非零的元素非常稀少,否則使用克萊姆法則來計算線性方程組的解,通常是非常的費時。當A 的行列式值等於零時,克萊姆法則提供了判別解集合個數很好的解釋。但是,這樣的情況,在實際的應用問題上是很少出現的。

舉例來說,假設A 是一個行列式值為零的矩陣,其元素可以被擾動一點。試問需要擾動多少的量,才能讓行列式值變成非零?

答案是一點點。

什麼是一點點?

一點點就是一點點。只要你能想到一點點,你所想到那一點點的一半擾動,都能讓A 矩陣變成行列式值非零的矩陣。這樣說來,在實際的應用上,我們要遇上行列式值為零的矩陣,機會實在不大。

再回到高中和國中的數學,在三元一次聯立方程式中,我們把每一個算式都當做是一個三度空間中的平面。我們可以換一個角度從幾何的觀點,來看一個線性方程組。方程組的解的形式,可以視為這三個平面交集的狀況。舉例來說,若三平面交於一點,則方程組有唯一解;若三平面保持平行,則方程組無解。在二元一次聯立方程式中,用幾何的觀點來解讀,恰好是兩個直線相交的狀況。對於行列式呢?二階的行列式,我們把它視為是兩個二維的向量所張出平行四邊形的面積。因此若兩個向量的長度皆不為零,那麼只要這兩個二維的向量不平行,其行列式值不為零。很類似的,我們把三階行列式當做三度空間中三個向量所張出的六面體體積。所以,從一階的行列式值所代表的一個數字,到二階行列式所張開的平行四邊形的面積,至於三階行列式所代表張出的六面體體積,正符合我們在第一小節裡所提到的「拓展」的概念。如果再增加一個維度,四階的行列式所代表的,會是某一種四度空間中的體積,我們很難用經驗中觸摸的到形容詞來描述這個觀念。

從上述的一元一次方程式到三元一次聯立方程組,我們很粗糙地歸納出一種感覺。線性方程組AX=B 只有唯一解的情形,是發生在A 的行列式值不為零,亦即方程組所代表的向量所張出的體積不為零的時候。至於怎麼求解?至少我們有兩個簡單的作法,一個是代入克萊姆法則的公式,另一個是利用降階的方式,來計算方程組的解。感覺上,把一組數字排排站,就成為一個在歐氏空間中代表一個方向與長度的向量。向量可以有加減法,向量可以拉長縮短。並且上述的三種方程組,寫成AX=B 的形式,他們都保持著相似的特性。X 的解,應該就是A 的倒數或是A 的相反之類的矩陣乘上B 就是答案了。不只是先前提到過的一元到三元的聯立方程組,繼續往更多變數擴展的線性系統應該也具備這樣的邏輯。倘若線性代數所要教授的,就是如何解一個線性方程組?那麼剛才所提到的部份,不是已經八九不離十了嗎?

1.4    別鬧了,萬元一次聯立方程式

線性代數的課程內容,當然不會僅止於解線性方程組而已。但面對大矩陣的求解問題,的確是一個不可輕忽的問題,特別是近年來熱門的海量計算,其中如何求解大型的矩陣就是這個領域中一個重要的課題。並不是矩陣大,變數多,這樣的線性系統就有計算上的困難。舉例來說,假設我們有一個超大的線性方程組,他的係數矩陣A 只有對角線上有值,其餘的元素都是零。這樣的線性方程組,正好是一堆一元一次線性方程式的集合,因此求解不沒有任何困難。這雖然是一個極端的例子,但也說明了一件很重要的事。那就是若能將一個矩陣對角化,那麼在求解上,會有一定程度的幫助。事實上,對角化是線性代數中一個很重要的議題,我們將會在往後的討論中學習到對角化的各種性質和他所代表的意義。

在二元一次或是三元一次聯立方程式中,我們使用加減消去法來達到變數縮減的目的。因此,我們可以想像對應於處理係數矩陣,將係數矩陣的某一列乘上一個定值,或是加減到另外一列,以及兩列互換等等運算方式,都不會影響到解本身。透過這樣的過程,我們可以有系統的將一個複雜的矩陣變成比較簡單的形式,以方便計算。例如,對角矩陣、上三角或是下三角矩陣,以及稀疏矩陣等。詳細的過程我們會在下一個章節中來介紹。

面對解大型的線性方程組,透過電腦來輔助計算是無可避免的過程。在電腦的世界裡,僅有表達有理數的能力,無法進行真正全實數的運算。因此,利用電腦來求解的數值計算過程,必須非常小心所求得的答案與真實解之間的誤差。在數值計算中,最常討論的問題是計算的精準度,計算的誤差,以及計算時間等。這是一個有趣的領域,特別是當你無法利用筆算算出真解時,要如何去信任電腦軟體或自行設計的程式所計算出來的答案呢?因此,一些誤差估計的定理在這一個課題上便可以發揮其不可替代的角色,雖然我們不知道真解為何,但是我們可以知道數值解和真解之間的誤差。如此一來,只要這個誤差被控制在某個可以接受的範圍之內,數值解就有其代表性了。

在海量計算中,時間的考量也是一個重要的課題。這個章節的名稱或許對讀者來說,會覺得有點誇張。但是就計算的領域來說,一萬,並不是一個龐大的數字。現今關於影音多媒體等資料格式,網路的應用服務,全球地理系統與氣象系統,天文探測,基因工程以及應用力學等。要開出一個上萬個節點的矩陣問題是稀鬆平常的事。因此,我們在學習線性代數課程的時候,雖然我們用二維或三維的圖像來輔助思考,但是請讀者時時留意,當維度很大的情況時,我們所學到的定理和計算技巧,是否能真正的運作。

最後更新 ( 2009/05/11, 週一 )
 
< 前一個   下一個 >