摘要? 介紹歷史上由于計算精度問題引起的災難或事件。
? ? ? ?今天換個話題,說說歷史上曾經發生過的一些事件。
- 1961 年 , 美國麻省理工學院氣象學家洛倫茲在仿真天氣預報時 , 將 0.506127 舍入到 0.506 , 所得計算結果大相徑庭 ! 這種“差之毫厘 , 謬以千里”的現象導致他不得不發出感嘆:南美洲亞馬遜河流域熱帶雨林中的一只蝴蝶 , 偶爾煽動幾下翅膀 , 可能在兩周后引起美國德克薩斯的一場龍卷風 ( 即“蝴蝶效應” )
- 1967 年 , 統計學家 James Longley 通過手工和幾個回歸軟件包對 1947 年至 1962 年共 16 年的“國民生產總值 (GNP) ”、“人口”等數據進行了“就業”的回歸分析 . 結果發現軟件包給出的答案錯得離譜 (drastically incorrect answers)
- 1982 年 , 溫哥華證券交易所推出一項股票指數 , 其初值設定為 1000.000. 在經濟并無衰退的 22 個月后 , 指數跌到了 520.? 正確指數是 1098.892. 軟件在計算時 , 多次從小數點后第 4 位開始截斷 , 只保留了 3 位小數
- 1987 年 , ?英國政府發現由于軟件的舍人誤差導致對過去的 21 個月的通脹低估了 0.1%. 這意味著與通脹掛鉤的養老金測算系統的計算有誤 , 因此不得不重新計算養老金 , 并緊急給超過 9 百萬的客戶做補償 , 總金額達上億英鎊
- 1991 年 2 月 25 日 , 在海灣戰爭中 , 美軍愛國者導彈防御系統未能攔截一枚來犯的薩達姆導彈 , 造成美軍士兵 28 名死亡 , 98 人受傷 . 此次攔截失敗的原因在于實數的不精確的二進制表示所造成的舍入錯誤累積所致 . 愛國者導彈控制系統的系統時鐘采用 24 位寄存器存儲時鐘值 0.1 秒 , 這種編碼方式造成 0.000000095 秒的誤差 . 由于這種微小誤差的存在 , 導致系統長時運行的累積誤差達 0.34 秒 , 進而使得攔截失敗
- 1991 年 8 月 23 日 , 挪威的海上油氣平臺 Sleipner 在建設的最后階段沉沒了 . 原因是由于工程師在使用有限元軟件 NASTRAN 計算時的精度不夠 , 導致平臺的壓力被低估了 47%. 最終損失達 7 億美元
- 1994 年 10 月 , 一位數論研究者發現 Pentium 處理器存在除法錯誤 .? 比如 4195835/3145727, 只能精確到小數點后 3 位小數 , 第 4 位小數是錯的 . 此次事件導致 Intel 公司召回其 CPU, 損失 4 億 7500 萬美元
- ...
? ? ? ?說古鑒今,今天或將來如何避免類似事件的發生?
內容或涉及的文獻請參考:
? ? ? [1] 趙世忠. 算術表達式的一種可信計算算法及其軟件ISReal(含有補充材料的版本). 中國科學F輯: 信息科學, 2016, 46(6): 698-713?