線性代數入門(4) - 解方程

上一部分我們扯了一些幾何上的問題,只是讓大家對向量的幾何意義有一個直觀的概念。現在讓我們回到解方程的問題上來。

我們還是拿第一講裏面的那個二元一次方程組來說。
{2x1+3x2=74x1+5x2=13

我們首先拿加減消元法來對付它。何爲加減消元法?很簡單,就是方程之間加加減減,用於減少未知數的個數。所以,第一步,把第一個方程的兩邊乘以-2,然後和第二個方程相加。這個步驟基於兩個假設:
(1)方程兩邊同乘一個不爲零的數,方程仍然成立
(2)方程兩邊各加上一個相等的數,方程仍然成立
第一個假設用公式表示就是:
如果a=b,那麼ac=bc
第二個假設用公式表示就是:
如果a=b,c=d,那麼a+c=b+d

這兩個假設顯而易見是成立的,所以,我們把第一個方程的兩邊乘以-2,然後和第二個方程相加,就可以得到這樣的結果:
2(2x1+3x2)+(4x1+5x2)=2(7)+13
x2=1
於是,x2=1
很容易得到,x1=2

這是很簡單,但這和我們的線性代數有什麼關係呢?當然有關係,現在是隻有兩個未知數,很容易搞清楚,但是如果有10個未知數呢?相信用這種方式來求解一定會暈頭轉向,半天都未必能求解清楚。但是如果我們用更好的表達方式和規範來做,就會發現這其實是一個很機械的過程,而且是很容易用計算機來進行求解的方法。

首先,我們先把這個方程用矩陣的方式表達:
[2435][x1x2]=[713]

然後我們暫且把那些未知數拿走,把方程的係數矩陣和表示方程右邊的向量寫在一起:
[2435][713]

然後,我們要對矩陣做一些神奇的變化,類似於加減消元法,我們定義三種操作:
1. 交換矩陣的兩行 (對應於把兩個方程交換一下,顯然,不會影響方程的解)
2. 對矩陣某一行的元素同乘以一個不爲零的數(對應於把某個方程的兩邊同乘一個不爲零的數,顯然,也不會影響方程的解)
3. 將矩陣的某一行的元素乘以一個不爲零的數加到另一行上(對應加減消元法裏把一個方程兩邊同乘不爲零的數加到另一個方程上,並進行同類項的合併,也不會改變方程的解)

於是,這三種操作對方程的解沒有影響。注意,操作時要對豎線左邊的矩陣和豎線右邊的矩陣同時進行,因爲這兩部分對應的是方程的左右兩邊。

那我們的目標是把矩陣變成什麼樣呢?如果說我們的解是:
{x1=2x2=1

我們同樣可以把它看作一個方程,只是恰好這個方程已經直接告訴了我們這些未知數的值而已。讓我們用矩陣來寫一下這個方程:
[1001][x1x2]=[21]

所以,我們剛纔希望的變化目標是:
[1001][??]
變化完成之後,這裏的問號自然也就得到了值,而這些值也恰恰就是方程的解。

那我們就來實地做一次變化:
[2435][713]

把第一行乘以-2加到第二行上:
[2031][71]

第二行每個元素乘以-1:
[2031][71]

把第二行乘以-3加到第一行上:
[2001][41]

第一行每個元素乘以0.5:
[1001][21]

於是我們就解出了:
{x1=2x2=1

是不是很簡單?這個例子還不夠強大,我們來找一個複雜的例子來證明一下這個方法的強大。這裏是一個4元的方程組:
x1+2x2+3x3+4x4=202x1+3x2+5x3+3x4=303x1+5x2+2x3+x4=324x1+4x2+2x3+7x4=39

先用剛纔的矩陣形式寫一下:
123423543522431720303239

第一步,把第一行乘以-2加到第二行,乘以-3加到第三行,乘以-4加到第四行,把第一列中除第一行外的元素都變成0:
10002114317104511920102841

然後,第二行所有元素乘以-1,把第二行第二個元素變成1:
10002114317104511920102841

然後用第二行乘以-2,1,4,分別加到一,三,四行上,使得第二列中除了第二行以外的元素都變成0:
10000100116665611010181

然後,第三行所有元素乘以-1/6,把第三行第三個元素變成1:
1000010011166511101031

然後用第三行乘以-1,-1,6,分別加到一,二,四行上,使得第三列中除了第三行以外的元素都變成0:
1000010000107411737317

然後,第4行所有元素乘以1/17,把第四行第四個元素變成1:
10000100001074113731

然後用第四行乘以7,-4,-1,分別加到一,二,三行上,使得第四列中除了第四行以外的元素都變成0:
10000100001000014321

到此,我們已經把左邊的那個矩陣變成了希望變成的形式:主對角線(第i行第i列,即左上到右下的對角線)元素爲1,其他元素爲0。於是,我們就得到了這個方程的解:
x1=4x2=3x3=2x4=1

有沒有覺得每一步都非常類似?從上至下,先把對角線元素變成1,然後把這一列上其他元素變成0,然後從下一列開始做同樣的操作,直至最後一列完成後,就變成了這種豬對角線爲1,其餘爲0的形態了。

細心的朋友現在會有問題了,如果在做某一步的時候,這個主對角線元素恰好是0怎麼辦?就沒有辦法通過乘以一個數把這個元素變成1了啊?這確實是一個問題,所以我們需要三個變換中的第一個,交換兩行。在這一行的下方找一個這列不爲0的行,和當前行交換一下,就可以繼續啦!

那這時,還有問題,如果說在這一行下方的所有行,這列的值都是0,怎麼辦呢?這確實是一個很好的問題,答案是,這個方程將沒有唯一解。所以我們現在就先不用關心這個啦,將來我們會專門討論沒有唯一解的方程。

這裏我們用到的三種變換,有一個名字,叫做矩陣的初等行變換。

差點忘了,這種解方程的方法有一個很牛的名字,是以一位衆所周知的數學家命名的:高斯消去法。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章