2012-07-09 59 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

相關問題