作者LPH66 (-858993460)
看板Prob_Solve
标题Re: [问题] 高斯消去法流程细节
时间Fri Nov 18 09:59:07 2011
你要先有一个概念就是: 电脑上的浮点数计算只会取有限位数
因此会有计算精确度的问题
来看这个例子 (小修改自我之前修数值方法这门课上提到的例子)
这是一个很简单的 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
1F:推 EdisonX:感谢 L 大说明,没举这例子真没想到.感谢。 11/18 12:29