请解释每个计算机科学家应该知道的关于浮点运算的定理4

时间:2016-01-23 11:42:36

标签: floating-point precision floating-accuracy

我正在阅读What Every Computer Scientist Should Know About Floating-Point Arithmetic。我发现了一个有趣的定理:(如果你已经读过这篇文章,你可以跳到最后一段。)

定理4

如果使用公式计算ln(1 + x):

enter image description here

当0≤x<0时,相对误差至多为5ε。如果用保护数字执行减法,则e <3。 0.1和ln计算到1/2 ulp。

此公式适用于x的任何值,但仅对x&lt;&lt; 1,这是在幼稚公式ln(1 + x)中发生灾难性取消的地方。虽然这个公式可能看起来很神秘,但有一个简单的解释,说明它的工作原理。将ln(1 + x)写为

enter image description here

可以精确计算左手因子,但是当向x添加1时,右手因子μ(x)= ln(1 + x)/ x将遭受大的舍入误差。然而,μ几乎是常数,因为ln(1 + x)≈x。因此稍微改变x不会引入太多错误。换句话说,如果x̄≈x,则计算xμ(x̄)将是xμ(x)= ln(1 + x)的良好近似。是否有x̄的值可以准确计算x̄和x̄+ 1?有;即x̄=(1 enter image description here x)enter image description here 1,因为那时1 +x̄正好等于1 enter image description here x。

根据作者的说法,1 +x̄完全等于1 enter image description here x。这使我感到困惑:当x非常小时,将x加1会导致信息丢失在x的低位。此外,(1 enter image description here x)enter image description here 1将会发生灾难性取消,这将导致许多准确的数字消失。

那么请告诉我,为什么在此定理中1 +x̄完全等于1 enter image description here x?

1 个答案:

答案 0 :(得分:2)

您必须重新阅读x̄和+的定义。 x̄是接近x的值,没有丢失的低位。因此,1 +x̄是精确的,与舍入结果1 + x

相同