(已编辑)
是否有任何库或工具可以了解算术运算中的最大累积误差?
例如,如果我进行一些迭代计算。。。
myVars = initialValues;
while (notEnded) {
myVars = updateMyVars(myVars)
}
最后,我不仅想知道计算出的值,还想知道潜在的误差(如果每个单独操作的结果都超过了每个操作数的范围限制,则可能值的范围)。
我已经编写了一个名为EADouble.Java(EA for Error Accounting)的Java类,它保存并更新最大正误差和负误差以及计算值,用于一些基本操作,但我担心我可能正在重新发明一个方轮。
有Java中的库吗?有什么建议吗?
- 7月11日更新:检查了现有库,并添加了示例代码链接
- 正如同事们所评论的,有区间算术的概念,之前有一个问题(一个好的不确定性(区间)算术库?)关于主题。关于我的意图,只有几个小问题:
- 比起上限和下限,我更关心"main"值。然而,将该额外值添加到开放库应该是直接的
- 将误差计算为独立的浮点可能允许更高的精度(例如,对于加法,上限将仅增加一半ULP,而不是整个ULP)
- 我看过的图书馆:
- ia_math(Java。只需要添加main值。我迄今为止最喜欢)
- Boost/numeric/Interval(C++,非常复杂/完整)
- ErrorProp(Java、accounts value和error作为标准差)
- 示例代码(TestEADouble.java)可以运行弹道模拟和数字e的计算。然而,这些并不是很苛刻的场景
可能为时已晚,但请查看BIAS/Profile:http://www.ti3.tuhh.de/keil/profil/index_e.html相当完整,简单,说明计算机错误,如果您的错误集中在中心,则可以轻松访问您的标称值(通过Mid(…))。