摘要? 計算機的錯誤計算(四)指出一元二次方程的計算精度問題。本節給出其一種解決方案。
? ? ? ?計算機的錯誤計算(四)與(十七)分別指出一元二次方程的求解是具有挑戰性的難題,其出錯原因是因為相減相消而導致損失了精度。
? ? ? ?下面我們仔細分析。
? ? ? ?一元二次方程???? ?的求根公式為
? ? ? ?當???時,
?與?
?會很接近,這樣,
??中一個運算就會發生相減相消。
? ? ? ?比如,若?, 則??
?有相減相消發生;相反,若??
, 則?
? 會發生相減相消。 相減相消的根源在于“相減”,那么如何去掉這個“相減”呢?若您中學數學學得好,不難想到,用公式??
? 即分子分母同乘以??
?(這時是同號的兩數相加),讓“分子有理化”?:?
? ? ? ?上式就是一種很好的解決方案。它沒有增加計算量或復雜度。
例1.? (續計算機的錯誤計算(四)的例1)已知?,計算其較小的根。
? ? ? ?顯然,由于
?
因此較小的根???會發生相減相消。
? ? ? ?現在,利用新的公式???編程如下:
在?Visual Studio 2010 中運行它,則輸出為正確結果1。
? ? ? ?最后,問一句:任給一個可能發生相減相消的算式,若找不到對應的替代公式怎么辦?去不掉相減相消該怎么辦?
? ? ? ?答案是:采用高精度計算。那么問題又來了,高到多少?很簡單:損失多少,增加多少。
? ? ? ?若遇到了,不知結果對不對,不妨先在這里試試(這個是萬能的,任何算術表達式都能得出正確結果。后面有機會再介紹):ISReal 計算器, 可信計算http://www.isrealsoft.cn/