(編輯)
是否有任何庫或工具,允許在知道算術運算的最大累積誤差?跟蹤最壞的情況下誤差運算庫
例如,如果我做出一些迭代計算...
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