(已编辑)
是否有任何库或工具可以了解算术运算中的最大累积误差?
例如,如果我进行一些迭代计算...
myVars = initialValues;
while (notEnded) {
myVars = updateMyVars(myVars)
}
...我最后不仅想知道计算值,还想知道潜在的错误(如果每个单独操作的结果采用每个操作数的范围限制,则可能值的范围)。
我已经编写了一个名为EADouble.java(错误会计的 EA)的 Java 类,它保存并更新最大正负误差以及计算值,用于一些基本操作,但恐怕我可能正在重新发明一个方轮.
任何库/Java中的任何东西/任何东西?有什么建议么?
- 7 月 11 日更新:检查现有库并添加示例代码链接。
- 正如同仁评论的,有区间算术的概念,并且有一个关于该主题的先前问题(一个好的不确定性(区间)算术库? )。关于我的意图只有几个小问题:
- 我更关心“主要”值而不是上限和下限。但是,为开放库添加额外的价值应该是直截了当的。
- 将误差计入一个独立的浮点数可能允许更精确的精度(例如,对于加法,上限将仅增加一半ULP,而不是整个 ULP)。
- 我看过的图书馆:
- ia_math(Java。只需要添加主要值。到目前为止我最喜欢的)
- Boost/numeric/Interval(C++,非常复杂/完整)
- ErrorProp(Java、帐户值和错误作为标准差)
- 示例代码 ( TestEADouble.java ) 可以运行弹道模拟和数字 e 的计算。然而,这些都不是非常苛刻的场景。