了解消元法最好的方式是看例子。我們以三維開始: or
igin
alsy
stem
2u4u
−2u+
−+v6
v7v+
+w2w
===5
−29(1)
問題是找出未知量u,
v,w ,我們應用高斯消元法。(高斯被公認為最偉大的數學家,當然不是因為這項發明,這個他也許只花了十分鐘。諷刺的是,以他名字命名的所有想法中,這個是最常用的)該方法從其他方程減去第乙個方程的倍數開始。目標是消除後面兩個方程中的
u 。這就要求我們
a. 第二個方程減去第乙個方程的2倍
b. 第三個方程減去第乙個方程的-1倍 eq
uiva
lent
syst
em2u
+−v8
v8v+
−+w2
w3w=
==5−
1214
(2)係數2是第乙個主元。消元法不斷用下面的數除以主元,從而找出正確的乘數。
消去法第二階段的主元是-8。我們現在忽略第乙個方程。從餘下的方程中(例題中也就是第三個方程)減去第二個方程的倍數來消除
v 。我們將第二個方程加上第三個,換句話說
c. 第三個方程減去第二個方程的-1倍
現在完成了消去過程,得到了 tr
iang
ular
syst
em2u
+−v8
v+−w
2w1w
===5
−122(3)
然後反向求解方程組,即從下往上。最後乙個方程給出了w=
2 。將它代到第二個方程,我們發現v=
1 。繼續代入第一方程,求出u=
1 。這個過程稱為回代。
大概總結一下:前向消去過程產生主元2,-8,1。下面的每一行減去上面的倍數,達到(3)那樣的「三角」系統,這是以相反的順序來求解的。然後將每個新計算出來的值代入方程即可。
註解:寫出前向消去步驟的好方法是將右邊包含進來作為額外的列。沒有需要每步都複製u,
v,w,
= ,所以我們最終寫成: ⎡⎣
⎢24−
21−6
7102
5−29
⎤⎦⎥→
⎡⎣⎢2
001−
881−
235−
1214⎤⎦
⎥→⎡⎣
⎢200
1−80
1−21
5−122
⎤⎦⎥
最後是三角形系統,準備回代。你可能會更喜歡這個安排,它保證左邊方程運算的同時,右邊也在運算-因為雙方都在一起。
在乙個更大的問題裡,前向消元法比較費力。我們用第乙個方程的倍數在第乙個主元下邊產生零。然後第二列將第二個主元下面的元素清零。當系統是三角形的時候,前向步驟就完成了;
n 個方程中只有最後乙個只包含乘數和主元。以相反的順序回代,得到完整的解-從最後乙個未知量開始,然後乙個乙個解決,知道第乙個。
根據定義,主元不能為零。因為我們需要除它們。
在什麼情況下消元法會失效呢?奇異情況下它肯定失效,一些非奇異情況也會失效。現在討論這個可能似乎有點太早了-畢竟,我們好不容易知道演算法如何工作。但失效的可能性揭示了方法本身。
答案是:有
n個主元的話,問題只有乙個解。該系統是非奇異的,並且它能用前向消元和回代求解出來。但是,如果零出現在主元的位置,消去法將停止-也可能暫時,也可能永久。系統可能是奇異的,也可能不是。
如果第乙個係數為零,即左上角,那麼就無法從其他方程中消去
u 。在中間的每個階段同樣如此。注意零可以出現在乙個主元的位置上,即使那個位置的原始係數不是零。粗略地說,在執行消去過程之前,我們不知道零是否會出現。
在許多情況下是這一問題可以解決,並且消去法可以繼續執行。這種系統仍算作非奇異;它只需要演算法來修復。而其他情況下,失效是不可避免的。那些無藥可救的系統是奇異的,他們沒有解或者有無窮多個,不能找出完整的主元集合。
例1:非奇異(交換方程2,3就能恢復會非奇異的) u2
u4u+
++v2
v4v+
++w=
_5w=
_8w=
_→u+
v2v+
+w=_
3w=_
4w=_
→u+v
2v++
w=_4
w=_3
w=_這個系統現在變成三角形了,然後回帶就能求解它。
例2:奇異(無法恢復) u2
u4u+
++v2
v4v+
++w5
w8w=
_=_=
_→u+
v+w3
w4w=
_=_=
_ 無論如何交換方程,都不可避免的在第二個主元位置上是零。方程本身可能有解也可能無解。如果最後兩個方程是3w
=6,4
w=7 ,那麼沒有解。如果這些兩個方程碰巧是一致的- 3w
=6,4
w=8 -那麼這個奇異情況有無窮個解。我們知道w=
2 ,但是第乙個方程無法確定u,
v 。後面我們會討論系統非奇異的情況。然後交換方程可以產生完整的主元集合。還有奇異情況,消去法就比較麻煩。3w
仍然可以消去4w
,並且我們將3作為第二個主元。(不存在第三個主元)。目前來說,我們相信在不需更改變方程順序的情況下,所有主元都不為零。這是最好的情況,我們繼續討論這種情況。
我們另乙個問題是非常實用的。對
n 個未知量的
n個方程,消去法需要多少部單獨的算術運算?如果
n 很大,電腦將去掉我們進行消元。然而所有的步驟都是已知的,所以我們能夠推測出操作的數量。
眼下,忽略方程右邊,只考慮左邊的操作。這些操作有兩種。除以主元找出要減的乘數(
ℓ)。當我們做減法的時候,我們不斷遇到「乘法-減法」組合;含有主元的方程乘以
ℓ ,然後減去另乙個方程。
假設我們將每個除法和每個乘法-減法,看做一次操作。在列1 中,為了實現每個為零,我們需要
n 次操作-一方面找乘數
ℓ,另一方面整行的計算。第乙個主元下面有n−
1 行,所以消去法的第一階段需要n(
n−1)
=n2−
n 次操作。(另一種計算n2
−n的方法是這樣的:一共有n2
項,除了第一行的
n 個外,一共有n2
−n項需要改變)下一步計算會更快,因為方程變得更簡單了。
當消去法降為
k 個方程時,與第一階段k=
n時一樣,採用同樣的方法,可以得出僅需要k2
−k次操作就完成列的消去。最終,總的操作次數是
k 從1取到
n時所有k2
−k的和: le
ftsi
de(1
2+⋯+
n2)−
(1+⋯
+n)=
n(n+
1)(2
n+1)
6−n(
n+1)
2=n3
−n3
將n=1
,n=2
,n=100
分別代入公式13
(n3−
n),前向消去法可能不需要任何步驟或兩個步驟或大約有100萬的三分之一步:如果n
是乙個很大的值,那麼運算大概需要13
n3步
如果規模翻了一番,並且係數幾乎不為零,那麼成本將是原來的8倍。
回代是相當快的。最後乙個未知量只需一步操作(除以最後乙個主元)。倒數第二個需要兩步,等等。那麼回代的總數是1+
2+⋯+
n 。
右邊有執行前向消元(跟左邊一樣,減去相同的倍數從而保證方程正確)。從第乙個方程開始有n−
1 次減法。最後右邊一共需要n2
步運算-遠遠小於左邊的n3
/3。前向和回代一共需要 ri
ghts
ide[
(n−1
)+(n
−2)+
⋯+1]
+[1+
2+⋯+
n]=n
2 三十年前,幾乎每個數學家會猜測乙個
n 階系統不可能在少於n3
/3次乘法的情況下計算出來。(甚至有定理來證明它,)。令人驚訝的是,這種猜測已被證明是錯的。現在存在一種方法只需要cn
log7
2 次乘法!它依賴於乙個簡單的事實:二維空間中兩個向量的兩種組合似乎需要8次乘法,但他們可以7次就完成。這將
log8
2 的指數3降為
log72≈
2.8
n 值提供了支援。最後指數(在ibm機器上)低於2.376。幸運的是,對於消元法,常數
c非常大,並且編碼很麻煩,所以新方法更多地(或全部)在理論上很有趣。最新的問題是與多個並行處理器的代價。
線性代數 矩陣消元 高斯消元法
能使用消元法的情況 每次消元過程中,對角線元素始終不能為0,即矩陣可逆 我們一般利用高斯消元法進行矩陣的消元。下面我們通過舉例說明 如果按照我們初中所學的解法,一般是先用第三個方程將z用y表示,然後代入到第二個方程就可以用x來表示y和z,最後代入第乙個方程就可以求得x,y,z。這個演算法的核心就是消...
線性代數導論2 矩陣消元
線性代數導論2 矩陣消元 第二課時 矩陣消元 本課時的目標是用矩陣變換描述消元法。核心概念是矩陣變換。一 消元法 消元法 將主對角線上的主元固定 0不能做主元 把主元下面的元素消為0。過程 先完成左側矩陣的消元 變成上三角矩陣 再回代運算右側向量,最後即可求出解完成整個消元過程 matlab也是先計...
線性代數三部曲 二 Gauss消元
1.上三角行列式 d begin a a dots a 0 a dots a vdots vdots ddots vdots 0 0 dots a end 稱為上三角行列式,即主對角線下均為 0 的行列式,其值等於 d prod n a 即主對角線上元素的乘積.2.下三角行列式 d begin a ...