(编辑)
是否有任何库或工具,允许在知道算术运算的最大累积误差?跟踪最坏的情况下误差运算库
例如,如果我做出一些迭代计算...
myVars = initialValues;
while (notEnded) {
myVars = updateMyVars(myVars)
}
...我想知道在最后不仅计算值,同时也是潜在的错误(如果更多钞票值范围每个操作的结果都是每个操作数的范围限制)。
我已经编写了一个名为EADouble.java(EA for Error Accounting)的Java类,它对一些基本操作持有并更新最大的正面和负面错误以及计算的值,但恐怕我可能会重新创建一个方形轮。
任何库/无论在Java /什么?有什么建议么?
- 更新于7月11日:审议现有的库并添加链接,示例代码。
- 正如研究员评论的那样,有Interval Arithmetic的概念,并且有关于该主题的前一个问题(A good uncertainty (interval) arithmetic library?)。有几个关于我的意图的小问题:
- 我更关心“主”值而不是关于上限和下限。但是,向开放式库添加额外的值应该是直截了当的。将错误记录为独立浮点可能允许更精确的准确性(例如,对于添加而言,上限将仅增加一半而不是整个ULP的一半)ULP。
- 库我看了一下:
- ia_math(Java的就必须添加的主要价值,到目前为止我最喜欢的。)
- Boost/numeric/Interval(C++,非常复杂的/完成)
- ErrorProp(爪哇,帐户值和误差标准偏差)
- 的代码示例(TestEADouble.java)运行确定弹道模拟器上离子和数字e的计算。但是这些并不是非常苛刻的情况。
这就是我们使用定点类型的原因。 – 2012-07-09 21:08:10
您可能想尝试[间隔算术](http://en.wikipedia.org/wiki/Interval_arithmetic)。 – lhf 2012-07-10 00:23:17
请注意,对于大规模浮点运算(如线性代数或数值模拟),“最差情况”误差可能比“平均/预期”误差大得多。最坏情况下的时间间隔分析应该可行,但最终可能会不必要地保守。 – comingstorm 2012-07-10 00:30:52