封存 Archive
封存 Archive
科普系列 - 數學與圖像修復(三)
- 取得連結
- X
- 電子郵件
- 其他應用程式
解決多元一次方程組的辦法
要解決上面那一個四元一次方程組不太困難,一般同學多花一點時間也可以把答案找出來。只需要將不同方程式做一些加加減減,把方程式的左手邊排除掉多餘的變數,都剩下只有一個未知數,一步一步的就可以把四個未知數都找出來。這個方法叫做消除法(Method of Elimination)。網上有太多對這個方法的介紹,我在這裏就不再仔細講解[1]。當然,人手去做這個消除法,那一條方程式跟那一條方程式作加減,也沒有太大關係。可以根據自己興趣,找不同的方程式去做計算。那到底找那一條放晴色跟那一條方程式做運算可以更有效的消除一些變數,其實就要靠經驗的累積。一般在中學課堂上,我想老師也不會有一個一般的解釋。如果可以把未知數消除,那就是一個好的方法。我猜想,這其實也是一個為什麼中學同學不喜歡數學的原因,有些時候他們用一些方法可能需要花更多的時間才可以把答案找出來,這可能會加深了同學對數學的挫敗感。可是,反過來說,這不唯一性其實也是數學有趣的地方。同學們可以有不同的「創意」去解決同一個問題,每個人解決問題的方法都可能是不相同。可是如果每一部都做對了,最後的答案也會是一樣的。而且,答案最後也會是滿分。
雖然說, 四元一次方程組還是可以用手解決,可是就算在大學課程,我們一般都不會要求同學用手計算(其實自己也不可能把所有計算準確做出來,所以我也不會要求同學在功課或考試時計算這些問題)。打就更不用說我們上面討論的N元一次線性方程組。假設我們需要補回來的像素點顏色有100個,我們就必須要解決一個100元一次線性方程組。不是說不可能,不過不會有人真的會用手解決。這就是為什麼我們需要運用電腦幫我們去做計算。所以我在「數值分析」那一門本科課裏面經常提到,數學家都是非常懶惰的。有很多我們可以做的問題我們都不想去做,反而要叫電腦去幫我們做。
那電腦是怎麼幫我們解決這個線性方程組的問題呢?電腦其實是非常愚蠢的,他只會根據我們編寫的程式去執行一些加減乘除的過程。如果,我們做消除法是可以那麼的隨心,電腦如何可以有一個固定的方法去解決這些方程組的問題呢?計算數學的其中一個目的,就需要設計不同的算法(Algorithm)去教導電腦解決一些數學上的問題。去解決線性方程組問題上,其中一個電腦可以按着指令執行的方法叫做高斯消去法(Gaussian Elimination)[2]。在大部份情況下,高斯消去法都可以有效地找到線性方程組的答案。這裏我只是說大部份,就是說有一小部份的問題高斯消去法是不成功的(或者在電腦運算出來的答案可能會有比較大的誤差)。那到底是在什麼情況下我們需要小心使用這些算法呢?那也是計算數學這個範疇裏面我們需要解答的問題(這個問題的答案,我們可以使用Partial Pivoting[3]。我在這裏就不再仔細討論)。
當然,如果這個方程組太大,我們其實也不會運用高斯消去法找出方程組的答案。主要原因有兩個。第一,這個方法需要做的運算太多。如果我們要解決一個N元一次線性方程組,加減乘除總共的運算可能是N³增長。假設一個2GHz的處理器每秒大致可以做兩億次操作。這意味著,解決一個100乘100的線性方程組問題可能只需要少於一毫秒。這似乎不太差。但是,很多時在實際應用中,需要解決許多一百萬乘一百萬的線性方程組問題。做一次高斯消去法將需要多於5年[4]!第二個原因,在很多生活應用上,我們其實不需要用消去法找出一個精確解。反而一個近似值就已經可以了。你上面那個一百萬乘一百萬的線性方程組問題,如果使用一些好的疊代方法去找一個近似值,通常一部尋常的台式或筆記本型電腦已經可以在少於一秒裡面得到一個非常準確的答案。
- 取得連結
- X
- 電子郵件
- 其他應用程式
留言
發佈留言