【发布时间】:2016-04-30 00:22:29
【问题描述】:
我正在阅读What Every Computer Scientist Should Know About Floating-Point Arithmetic。而且我发现了一个有趣的定理:(如果你已经读过这篇文章,你可以跳到最后一段。)
定理 4
如果使用以下公式计算 ln(1 + x):
当 0 ≤ x
这个公式适用于任何 x 值,但只对 x
左手因子可以精确计算,但右手因子 µ(x) = ln(1 + x)/x 在 x 加 1 时会出现较大的舍入误差。然而,µ 几乎是常数,因为 ln(1 + x) ≈ x。所以稍微改变 x 不会引入太大的错误。换句话说,如果 x̄ ≈ x,计算 xμ(x̄) 将很好地近似于 xμ(x) = ln(1 + x)。是否存在可以准确计算 x̄ 和 x̄ + 1 的 x̄ 值?有;即x̄ = (1x)1,因为这样1+x̄正好等于1x。
根据作者的说法,1 + x̄ 恰好等于 1 x。这让我很困惑:当 x 非常小时,将 x 加 1 应该会导致 x 的低位信息丢失。此外,在 (1 x) 1 中会发生灾难性的取消,这将导致许多准确的数字消失。
【问题讨论】:
标签: floating-point precision floating-accuracy