2012-07-09 42 views
3

(编辑)
是否有任何库或工具,允许在知道算术运算的最大累积误差?跟踪最坏的情况下误差运算库

例如,如果我做出一些迭代计算...

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的计算。但是这些并不是非常苛刻的情况。
+0

这就是我们使用定点类型的原因。 – 2012-07-09 21:08:10

+5

您可能想尝试[间隔算术](http://en.wikipedia.org/wiki/Interval_arithmetic)。 – lhf 2012-07-10 00:23:17

+3

请注意,对于大规模浮点运算(如线性代数或数值模拟),“最差情况”误差可能比“平均/预期”误差大得多。最坏情况下的时间间隔分析应该可行,但最终可能会不必要地保守。 – comingstorm 2012-07-10 00:30:52

回答

1

可能太晚,但看BIAS/PROFIL:http://www.ti3.tuhh.de/keil/profil/index_e.html 相当完整,简单,占电脑错误,如果你的错误都集中到你的名义轻松访问(通过MID(...)) 。

+0

感谢您的建议,并抱歉延误。正如2012-07-11版所述,区间数学是一种很好的方法,但不是我所期待的:本身并不追踪每个操作的最坏情况算术错误。另一方面,如果它是一个间隔数学库我在找什么,那么这个问题本身就会被抹杀。 – Javier 2015-08-03 14:23:38

相关问题