Re: [問題] 高斯消去法流程細節
看板Prob_Solve (計算數學 Problem Solving)作者LPH66 (-858993460)時間13年前 (2011/11/18 09:59)推噓1(1推 0噓 0→)留言1則, 1人參與討論串2/2 (看更多)
你要先有一個概念就是: 電腦上的浮點數計算只會取有限位數
因此會有計算精確度的問題
來看這個例子 (小修改自我之前修數值方法這門課上提到的例子)
這是一個很簡單的 2x2 聯立方程
[10^-5 2] [x1] = [2]
[ 1 3] [x2] [4]
做消去法將第一列乘以 10^5 由第二列減去
第二列剩下的元素由 3 - 2 * 10^5 給出
假設這個計算精確度是五位有效十進位的話
正確的結果 -199997 會被近似成 -2.0000*10^5
而等號右邊 減下來的結果是 4-2*10^5 也近似成 -2.0000*10^5
於是消去後方程會變成
[10^-5 2 ] [x1] = [ 2 ]
[ 0 -2*10^5] [x2] [-2*10^5]
於是我們會得到 x2 = (-2*10^5)/(-2*10^5) = 1.0
然後 x1 = (2 - 2 * 1.0)/10^-5 = 0
但是!這個聯立方程組
10^-5 x1 + 2 x2 = 2
x1 + 3 x2 = 4
它的精確解其實是 x1 = 200000/199997, x2 = 199996/199997 都是和 1 很接近的數
x2 還勉強可接受 但 x1 就差遠了....
這就是所謂的「數值穩定度」
你可以試著計算一下 當反過來用第二列去消第一列時得到的解就好很多
因此書上那個演算法就是考慮到數值穩定度的問題
才會有「選擇絕對值最大的那一列 pivot」這一步
在一些計算步驟很多的演算法當中如果牽扯到浮點數都要注意這個問題
更多關於這類問題的例子可以看看冼老師的文章
http://blog.dcview.com/article.php?a=VmgBZFE5AzI%3D
--
いああオレたちには見えてるモノがあるbデ きっと誰にも奪われないモノがあるはずさ
け 開口一番一虚一実跳梁跋扈形影相弔yュL羊頭狗肉東奔西走国士無双南柯之夢 歪も
ぶ 意味がないと思えるコトがある ラPきっとでも意図はそこに必ずある んの
く 依依恋恋空前絶後疾風怒濤有無相生 ラH急転直下物情騷然愚者一得相思相愛 だが
ろ 無意味じゃない ラ6あの意図が 恋た
で 有為転変死生有命蒼天已死黄天當立 !!6五里霧中解散宣言千錯万綜則天去私 のり
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.28.91
推
11/18 12:29, , 1F
11/18 12:29, 1F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
1
2
Prob_Solve 近期熱門文章
PTT數位生活區 即時熱門文章