有效数字加减的正确方法

问题描述 投票:0回答:1

实际上,在不同的书中给出了两种添加或减去有效数字的方法。在 HC Verma 的《物理概念》等书中,写的是先给出数字的一轮,然后添加或减去它们,但在其他书中则写为先将数字相加,然后对答案进行四舍五入。通常答案是相同的,但有时答案是不同的,例如,当我们用两种方式执行时,添加 24.36 + 0.0623 + 256.2 答案将会不同。

那么添加或减去有效数字的正确方法是什么?

addition subtraction units-of-measurement measurement significant-digits
1个回答
0
投票

数值计算的目标是在整个计算过程中尽可能保持尽可能多的精度。 FP 算术 IRL 可能会以传统数学代数看不到的方式变化无常。

对未知数据序列求和时,有一种更好的数值方法。将 N 个随机数天真地添加在一起,最坏情况的误差与 N 成正比,因此 rms 误差以 ~sqrt(N) 的形式增长。大部分错误都可以通过巧妙的技巧来避免,但会因完成额外工作而损失一些速度。

Kahan 的补偿求和算法

通过咬两口樱桃将一些丢失的位添加回下一个被加数来解决该限制。由于 Neumaier 和其他人的贡献,最近有一些更好(即更准确)的变体,但原始方法是 Kahan 的。 请注意,过度激进的优化程序可能会破坏它,因此您可能必须小心使用编译指示才能使其正常工作(和/或检查生成的代码)。

带有 -ffast-math 的 GCC 根本无法使用它,请参阅此

Stack Overflow

帖子。 这个算法的基础可以追溯到 1965 年,在我强烈推荐的优秀文章

“每个计算机科学家应该了解浮点知识”

中的定理 8 中有更详细的解释。我想说大多数科学家,尤其是物理学家都应该阅读它。另一篇相关文章是Fast2Sum 大多数科学测量值都是 6 位或更少,因此另一个快速而肮脏的选择是将它们求和为双精度变量,这将隐藏大量错误(即使在计算点积时)。

如果您关心舍入并将它们放入数组中,另一种选择是按数字的大小和从小到大的总和对数字进行升序排序。这在许多特殊函数多项式中自然发生,其中高阶项具有类似 n! 的值。在分母和固定范围 |x| 中

<= 1.

© www.soinside.com 2019 - 2024. All rights reserved.