检验算法中的数值精度

时间:2013-03-27 17:37:14

标签: c++ algorithm numerical

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

感谢您的任何建议!

2 个答案:

答案 0 :(得分:2)

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

一般情况下,你可以写两次:一次是无限精度,一次没有,然后验证两者。这就是我用我写的科学软件做的事情。然后我会写第三个做更高速的速度增强功能。这样我可以验证这三个。请注意,我知道三人并不完全相同,但他们应该有足够的重要证据。

实际上知道难以准确获取多少错误 - 浮点数的记录顺序可能会导致很大的差异。它确实是特定于问题但如果您知道某些数字的相对大小,您可以更改操作的顺序以获得准确性(例如,按排序顺序乘以列表)。有两个值得研究的地方是,

答案 1 :(得分: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