1

检查算法中数值精度的最佳做法是什么?是否有任何建议的技术来解决“我们如何知道我们计算的结果是正确的”这个问题?如果可能:是否有一些 C++ 中数值精度增强的例子?

感谢您的任何建议!

4

2 回答 2

2

Math::BigFloat / Math::BigInt会有所帮助。我必须说有很多图书馆可以做到这一点,我不知道哪个是最好的。也许其他人有一个很好的答案给你。

不过,一般来说,您可以编写两次:一次具有无限精度,一次没有然后验证两者。这就是我使用我编写的科学软件所做的。然后我会写第三个来提高速度。这样我就可以验证所有三个。请注意,我知道这三个不会完全相等,但它们应该有足够的佐证有效数字。

要真正知道有多少误差很难准确获得——记住浮点数的运算顺序会导致很大的差异。这确实是特定于问题的,但是如果您知道某些数字的相对大小,则可以更改操作顺序以获得准确性(例如,将列表按排序顺序相乘)。寻找调查的两个地方是,

于 2013-03-27T17:42:36.563 回答
0

看看区间算术,例如

http://www.boost.org/doc/libs/1_53_0/libs/numeric/interval/doc/interval.htm

它将产生结果的上限和下限

PS:也看看http://www.cs.cmu.edu/~quake/robust.html

于 2013-03-27T17:51:11.193 回答