我收到的一項最近的家庭作業要求我們採取措辭,在計算機上執行時可能會造成精度損失,並對其進行修改,以避免造成損失。避免精度損失的最佳算法?
不幸的是,這樣做的方向尚未明確。通過觀察正在執行的各種示例,我知道有一些方法可以做到這一點:使用泰勒級數,如果涉及平方根使用共軛,或者在減去兩個分數時找到共同的分母。
但是,我在準確發現精確度丟失時會發生一些麻煩。到目前爲止,我唯一知道的是,當你減去接近於相同的兩個數字時,由於高位數字很重要,所以會出現精度損失,並且你會從四捨五入中丟失這些數字。
我的問題是我應該尋找哪些其他常見情況,以及哪些被認爲是接觸它們的「好」方法?
例如,這裏有一個問題:
f(x) = tan(x) − sin(x) when x ~ 0
什麼是評價這一點這三個選項的最佳和最差的算法:
(a) (1/ cos(x) − 1) sin(x),
(b) (x^3)/2
(c) tan(x)*(sin(x)^2)/(cos(x) + 1).
我明白,當x接近零,tan(x)和sin(x)幾乎相同。我不明白如何或爲什麼這些算法對於解決問題更好或更差。