浮點(diǎn)運(yùn)算錯誤計算原因_第1頁
浮點(diǎn)運(yùn)算錯誤計算原因_第2頁
浮點(diǎn)運(yùn)算錯誤計算原因_第3頁
浮點(diǎn)運(yùn)算錯誤計算原因_第4頁
浮點(diǎn)運(yùn)算錯誤計算原因_第5頁
已閱讀5頁,還剩53頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、 原因:現(xiàn)有計算模式浮點(diǎn)運(yùn)算錯誤計算原因趙世忠華東師范大學(xué)上海市高可信計算重點(diǎn)實驗室提綱 浮點(diǎn)運(yùn)算錯誤計算原因 錯數(shù)概念并計算方法 有效位數(shù)計算模式的缺陷 定性或定量解釋幾個錯誤計算案例 總結(jié) 一、原因 有效位數(shù)計算模式 人類千百年來的主要計算方式。 表示誤差 十進(jìn)制數(shù)與二進(jìn)制數(shù)之間的轉(zhuǎn)換誤差。一、原因 有效位數(shù)計算模式 人類千百年來的主要計算方式。 特點(diǎn): 所有運(yùn)算(包括所有中間運(yùn)算與最終結(jié)果)保留相同長度的有效位數(shù)。一、原因二、錯位數(shù)(或錯數(shù)) 計算結(jié)果中錯誤的有效數(shù)字個數(shù)。二、錯位數(shù)(或錯數(shù))定義: 已知 x0, f(x0), f (x0)的擴(kuò)展整數(shù)位數(shù)分別是m1,m2, m0. 則稱

2、m1 - m2 + m0 為 f(x) 在 x0 的錯位數(shù), 簡稱錯數(shù), 用 ErrorNumber(f(x), x0)來表示. 二、錯位數(shù)(或錯數(shù))F(x0)的計算值中,總有約“錯數(shù)”位有效數(shù)字不正確!錯數(shù)是3. 因此結(jié)果中總有3位左右的數(shù)字不正確二、錯位數(shù)(或錯數(shù))F(x0)的計算值中,總有約“錯數(shù)”位有效數(shù)字不正確!錯數(shù)是2. 因此結(jié)果中總有2位左右的數(shù)字不正確二、錯位數(shù)(或錯數(shù))F(x0)的計算值中,總有約“錯數(shù)”位有效數(shù)字不正確!錯數(shù)是2. 結(jié)果中正好有2位數(shù)字不正確錯數(shù)是2. 結(jié)果中正好有2位數(shù)字不正確錯數(shù)是2. 結(jié)果中正好有2位數(shù)字不正確二、錯位數(shù)(或錯數(shù))F(x0)的計算值中,

3、總有約“錯數(shù)”位有效數(shù)字不正確!二、錯位數(shù)(或錯數(shù))F(x0)的計算值中,總有約“錯數(shù)”位有效數(shù)字不正確!錯數(shù)是3. 結(jié)果中有2位數(shù)字不正確錯數(shù)是3. 結(jié)果中有3位數(shù)字不正確錯數(shù)是3. 結(jié)果中有1位數(shù)字不正確二、錯位數(shù)(或錯數(shù))F(x0)的計算值中,總有約“錯數(shù)”位有效數(shù)字不正確!二、錯位數(shù)(或錯數(shù))三、固定長度有效位數(shù)計算模式的缺陷對于“病態(tài)”模型, 無論有效位數(shù)多長, 計算結(jié)果中均含有錯誤的有效數(shù)字, 即始終不會獲得正確答案不同有效位數(shù)計算模式下的計算結(jié)果可能不一致等價表達(dá)式的計算結(jié)果可能不等價分配律、結(jié)合律等規(guī)則不再成立減少運(yùn)算次數(shù)并不一定能獲得更精確的值提高計算精度并不能確保計算結(jié)果更

4、精確存在“相減(不) 相消”、“大數(shù)吃小數(shù)”等現(xiàn)象1. 對于“病態(tài)”模型, 無論有效位數(shù)多長, 計算結(jié)果中均含有錯誤的有效數(shù)字, 即始終不會獲得正確答案 錯數(shù)若大于0,則結(jié)果中始終有錯誤的數(shù)字! 2. 不同有效位數(shù)計算模式下的計算結(jié)果可能不一致3. 等價表達(dá)式的計算結(jié)果可能不等價例如:2065 與 e65*ln(20) 的計算結(jié)果不等價。4. 分配律、結(jié)合律等規(guī)則不再成立4. 分配律、結(jié)合律等規(guī)則不再成立5. 減少運(yùn)算次數(shù)并不一定能獲得更精確的值6. 提高計算精度并不能確保計算結(jié)果更精確6. 提高計算精度并不能確保計算結(jié)果更精確6. 提高計算精度并不能確保計算結(jié)果更精確6. 提高計算精度并不能

5、確保計算結(jié)果更精確6. 提高計算精度并不能確保計算結(jié)果更精確7. 存在“相減(不) 相消”、“大數(shù)吃小數(shù)”等現(xiàn)象7. 存在“相減(不) 相消”、“大數(shù)吃小數(shù)”等現(xiàn)象7. 存在“相減(不) 相消”、“大數(shù)吃小數(shù)”等現(xiàn)象1030“吃掉了”99!7. 存在“相減(不) 相消”、“大數(shù)吃小數(shù)”等現(xiàn)象b2很容易“吃掉”4ac!四、定性或定量解釋幾個錯誤計算案例例1.例2:著名的錯誤計算案例 正確答案是:-0.8273960599例3.例4.例5:著名的錯誤計算案例例1.精度不同, 則會得到不同數(shù)量級的數(shù); 精度相同, 但是舍入策略有異, 則“微小”的表示誤差可能會導(dǎo)致不一樣的結(jié)果, 甚至是符號的不同.例

6、1.對例 2 的分析z與x均是37位的整數(shù).與例1類似, z+x要么為0,要么是一個大的整數(shù). 要么“相減相消”;要么“相減不相消”.例2:著名的錯誤計算案例 正確答案是:-0.8273960599先“相減不相消”后“大數(shù)吃小數(shù)”.第3個:可能先“大數(shù)吃小數(shù)”,后“相減相消”.先“相減相消”, 后“表示誤差”前兩個:先“相減不相消”后“大數(shù)吃小數(shù)”.前兩個:先“相減不相消”后“大數(shù)吃小數(shù)”.第3個: 先“相減相消”, 后“表示誤差”例3.并且 精度越高, 誤差越大.例3.例4.因為sin(x)在2100的錯數(shù)是31,所以有效數(shù)字全部錯誤.并且 精度越高, 誤差越大.例5:著名的錯誤計算案例因為

7、f(x)在x0的錯數(shù)是8,所以后面的8位數(shù)字是錯的.若采用雙精度計算, 結(jié)果中也只有約一半的有效數(shù)字正確.五、總結(jié) 對于一個算術(shù)表達(dá)式, “錯數(shù)”是個“坎兒” 若計算精度小于等于它,則1位正確的有效數(shù)字也得不到 只有大于它,才可能有:計算精度越高,結(jié)果的誤差越小 浮點(diǎn)運(yùn)算中的應(yīng)用若其相關(guān)錯數(shù)大于16, 則即使采用雙精度計算, 結(jié)果中也很難得到 1 位正確的有效數(shù)字, 有時甚至連符號都不對; 若其小于0, 則不論是單精度計算, 還是雙精度計算, 表示誤差均不太容易影響結(jié)果的有效數(shù)字的正確性。謝 謝!請批評指正! 單精度(24位)、雙精度(53位)、擴(kuò)展精度(64位)下標(biāo)準(zhǔn)的錯誤答案如下:51影響

8、航天嵌入式軟件可信的十個核心問題分析計算誤差造成的危害1961 年, 美國麻省理工學(xué)院氣象學(xué)家洛倫茲在仿真天氣預(yù)報時, 將0.506127 舍入到0.506 , 所得計算結(jié)果大相徑庭! 這種“差之毫厘, 謬以千里”的現(xiàn)象導(dǎo)致他不得不發(fā)出感嘆:南美洲亞馬遜河流域熱帶雨林中的一只蝴蝶, 偶爾煽動幾下翅膀, 可能在兩周后引起美國德克薩斯的一場龍卷風(fēng)(即“蝴蝶效應(yīng)”)1967 年, 統(tǒng)計學(xué)家James Longley 通過手工和幾個回歸軟件包對1947 年至1962 年共16 年的“國民生產(chǎn)總值(GNP)”、“人口”等數(shù)據(jù)進(jìn)行了“就業(yè)”的回歸分析. 結(jié)果發(fā)現(xiàn)軟件包給出的答案錯得離譜(drastical

9、ly incorrect answers)1982 年, 溫哥華證券交易所推出一項股票指數(shù), 其初值設(shè)定為1000.000. 在經(jīng)濟(jì)并無衰退的22 個月后, 指數(shù)跌到了520. 正確指數(shù)是1098.892. 軟件在計算時, 多次從小數(shù)點(diǎn)后第4 位開始截斷, 只保留了3 位小數(shù)1987 年, 英國政府發(fā)現(xiàn)由于軟件的舍人誤差導(dǎo)致對過去的21 個月的通脹低估了0.1%. 這意味著與通脹掛鉤的養(yǎng)老金測算系統(tǒng)的計算有誤, 因此不得不重新計算養(yǎng)老金, 并緊急給超過9 百萬的客戶做補(bǔ)償, 總金額達(dá)上億英鎊計算誤差造成的危害1991 年2 月25 日, 在海灣戰(zhàn)爭中, 美軍愛國者導(dǎo)彈防御系統(tǒng)未能攔截一枚來犯的

10、薩達(dá)姆導(dǎo)彈, 造成美軍士兵28 名死亡, 98 人受傷. 此次攔截失敗的原因在于實數(shù)的不精確的二進(jìn)制表示所造成的舍入錯誤累積所致. 愛國者導(dǎo)彈控制系統(tǒng)的系統(tǒng)時鐘采用24 位寄存器存儲時鐘值0.1 秒, 這種編碼方式造成0.000000095 秒的誤差. 由于這種微小誤差的存在, 導(dǎo)致系統(tǒng)長時運(yùn)行的累積誤差達(dá)0.34 秒, 進(jìn)而使得攔截失敗1991 年8 月23 日, 挪威的海上油氣平臺Sleipner 在建設(shè)的最后階段沉沒了. 原因是由于工程師在使用有限元軟件NASTRAN 計算時的精度不夠, 導(dǎo)致平臺的壓力被低估了47%. 最終損失達(dá)7 億美元1994 年10 月, 一位數(shù)論研究者發(fā)現(xiàn)Pentium 處理器存在除法錯誤. 比如4195835/3145727, 只能精確到小數(shù)點(diǎn)后3 位小數(shù), 第4 位小數(shù)是錯的. 此次事件導(dǎo)致Intel 公司召回其CP

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論