我收到的一项最近的家庭作业要求我们采取措辞,在计算机上执行时可能会造成精度损失,并对其进行修改,以避免造成损失。避免精度损失的最佳算法?
不幸的是,这样做的方向尚未明确。通过观察正在执行的各种示例,我知道有一些方法可以做到这一点:使用泰勒级数,如果涉及平方根使用共轭,或者在减去两个分数时找到共同的分母。
但是,我在准确发现精确度丢失时会发生一些麻烦。到目前为止,我唯一知道的是,当你减去接近于相同的两个数字时,由于高位数字很重要,所以会出现精度损失,并且你会从四舍五入中丢失这些数字。
我的问题是我应该寻找哪些其他常见情况,以及哪些被认为是接触它们的“好”方法?
例如,这里有一个问题:
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)几乎相同。我不明白如何或为什么这些算法对于解决问题更好或更差。