fbpx
维基百科

捨入誤差

舍入误差(英語:round-off error),是指运算得到的近似值和精确值之间的差异。比如当用有限位数的浮点数来表示实数的时候(理论上存在无限位数的浮点数)就会产生舍入误差。舍入误差是量化误差的一种形式。 如果在一系列运算中的一步或者几步产生了舍入误差,在某些情况下,误差会随着运算次数增加而积累得很大,最终得出没有意义的运算结果。

表示误差

把一个浮点数在计算机中表示,可能会引起误差,这样的误差叫做表示误差。例如:

数学表达式 精确值 近似值 误差
1/7 0.142 857OEIS數列A020806 0.142 857 0.000 000 142 857
ln 2 0.693 147 180 559 945 309 41...  (OEIS數列A002162 0.693 147 0.000 000 180 559 945 309 41...
log10 2 0.301 029 995 663 981 195 21...  (OEIS數列A007524 0.3010 0.000 029 995 663 981 195 21...
 2  1.259 921 049 894 873 164 76...  (OEIS數列A002580 1.25992 0.000 001 049 894 873 164 76...
 2  1.414 213 562 373 095 048 80...  (OEIS數列A002193 1.41421 0.000 003 562 373 095 048 80...
e 2.718 281 828 459 045 235 36...  (OEIS數列A001113 2.718 281 828 459 045   0.000 000 000 000 000 235 36...
π 3.141 592 653 589 793 238 46...  (OEIS數列A000796 3.141 592 653 589 793 0.000 000 000 000 000 238 46...

增加数字位数可以减少可能会产生的舍入误差,但是位数是有限的,在表示无限浮点数时仍然会产生误差。在用常规方法表示浮点数的情况下,这种误差是不可避免的,但是可以通过设置警戒位来减小。

多步舍入会增加舍入误差,例如数字9.945309在输入时被舍入到小数点后两位 (9.95),显示时再舍入到小数点后一位 (10.0),舍入误差是0.054691。如果原来的数只经过一步舍入到小数点后一位 (9.9),舍入误差仅为0.045309。

IEEE二进制浮点数算术标准中定义了以下几种舍入规则:

  • 朝0方向舍入: 即截尾,直接将需要精确的位数以后的数位舍去。
0.142857 ≈ 0.142 (将小数点后第3位以后的数位全部舍去)
  • 舍入到最接近: 即四舍五入,结果可能会变大或变小。
0.142857 ≈ 0.143 (因小数点后第4位 ,所以小数点后第3位加1)
0.142857 ≈ 0.14 (因小数点后第3位 ,所以直接舍去)
  • 朝-∞方向舍入: 总是向数轴的左方向舍入。
  • 朝+∞方向舍入: 总是向数轴的右方向舍入。

举例

  • 1990年2月25日,海湾战争期间,在沙特阿拉伯宰赫兰爱国者导弹防御系统因浮点数舍入错误而失效,该系统的计算机精度仅有24位,存在0.0001%的计时误差,所以有效时间阙值是20个小时。当系统运行100个小时以后,已经积累了0.3422秒的误差。这个错误导致导弹系统不断地自我循环,而不能正确地瞄准目标。结果未能拦截一枚伊拉克飞毛腿导弹,飞毛腿导弹在军营中爆炸,造成28名美国陆军死亡。[1] [2]
  • 1996年6月4日,在亚利安五号运载火箭发射后37秒,偏离预定轨道而炸毁。原因是软件系统试图将64位浮点数转换为16位浮点数,造成溢出错误。[1]
  • 温哥华证券交易所曾开发了一项股票指数. 当其在1982年推出时,指数的值是1000.000。在后来的重新计算时多次运用舍入到小数点后三位的操作。22个月以后,指数的值是524.881,然而事实上应该是1009.811。[1]

参考文献

  1. ^ 1.0 1.1 1.2 Weisstein, Eric W. (编). Roundoff Error. at MathWorld--A Wolfram Web Resource. Wolfram Research, Inc. [2010-06-17]. (原始内容于2020-11-11) (英语). 
  2. ^ Liam McBrien; Craig McNulty. The Patriot Missile Disaster – What Went Wrong? (pdf). Dr Mark Dunlop, University of Strathclyde. [2010-06-17]. (原始内容 (PDF)于2011-07-19). 

外部链接

  • (英文)MathWorld上关于舍入误差 (页面存档备份,存于互联网档案馆)的解释
  • (英文)D. Goldberg. 计算机科学家必备的浮点运算知识 (页面存档备份,存于互联网档案馆
  • (英文)20个著名的软件灾难 (页面存档备份,存于互联网档案馆

参见

捨入誤差, 此條目需要擴充, 2013年3月18日, 请協助改善这篇條目, 更進一步的信息可能會在討論頁或扩充请求中找到, 请在擴充條目後將此模板移除, 舍入误差, 英語, round, error, 是指运算得到的近似值和精确值之间的差异, 比如当用有限位数的浮点数来表示实数的时候, 理论上存在无限位数的浮点数, 就会产生舍入误差, 舍入误差是量化误差的一种形式, 如果在一系列运算中的一步或者几步产生了舍入误差, 在某些情况下, 误差会随着运算次数增加而积累得很大, 最终得出没有意义的运算结果, 目录, 表示误差. 此條目需要擴充 2013年3月18日 请協助改善这篇條目 更進一步的信息可能會在討論頁或扩充请求中找到 请在擴充條目後將此模板移除 舍入误差 英語 round off error 是指运算得到的近似值和精确值之间的差异 比如当用有限位数的浮点数来表示实数的时候 理论上存在无限位数的浮点数 就会产生舍入误差 舍入误差是量化误差的一种形式 如果在一系列运算中的一步或者几步产生了舍入误差 在某些情况下 误差会随着运算次数增加而积累得很大 最终得出没有意义的运算结果 目录 1 表示误差 2 举例 3 参考文献 4 外部链接 5 参见表示误差 编辑把一个浮点数在计算机中表示 可能会引起误差 这样的误差叫做表示误差 例如 数学表达式 精确值 近似值 误差1 7 0 142 857 OEIS數列A020806 0 142 857 0 000 000 142 857ln 2 0 693 147 180 559 945 309 41 OEIS數列A002162 0 693 147 0 000 000 180 559 945 309 41 log10 2 0 301 029 995 663 981 195 21 OEIS數列A007524 0 3010 0 000 029 995 663 981 195 21 2 1 259 921 049 894 873 164 76 OEIS數列A002580 1 25992 0 000 001 049 894 873 164 76 2 1 414 213 562 373 095 048 80 OEIS數列A002193 1 41421 0 000 003 562 373 095 048 80 e 2 718 281 828 459 045 235 36 OEIS數列A001113 2 718 281 828 459 045 0 000 000 000 000 000 235 36 p 3 141 592 653 589 793 238 46 OEIS數列A000796 3 141 592 653 589 793 0 000 000 000 000 000 238 46 增加数字位数可以减少可能会产生的舍入误差 但是位数是有限的 在表示无限浮点数时仍然会产生误差 在用常规方法表示浮点数的情况下 这种误差是不可避免的 但是可以通过设置警戒位来减小 多步舍入会增加舍入误差 例如数字9 945309在输入时被舍入到小数点后两位 9 95 显示时再舍入到小数点后一位 10 0 舍入误差是0 054691 如果原来的数只经过一步舍入到小数点后一位 9 9 舍入误差仅为0 045309 IEEE二进制浮点数算术标准中定义了以下几种舍入规则 朝0方向舍入 即截尾 直接将需要精确的位数以后的数位舍去 0 142857 0 142 将小数点后第3位以后的数位全部舍去 舍入到最接近 即四舍五入 结果可能会变大或变小 0 142857 0 143 因小数点后第4位8 5 displaystyle 8 geq 5 所以小数点后第3位加1 0 142857 0 14 因小数点后第3位2 lt 5 displaystyle 2 lt 5 所以直接舍去 朝 方向舍入 总是向数轴的左方向舍入 朝 方向舍入 总是向数轴的右方向舍入 举例 编辑1990年2月25日 海湾战争期间 在沙特阿拉伯宰赫兰的爱国者导弹防御系统因浮点数舍入错误而失效 该系统的计算机精度仅有24位 存在0 0001 的计时误差 所以有效时间阙值是20个小时 当系统运行100个小时以后 已经积累了0 3422秒的误差 这个错误导致导弹系统不断地自我循环 而不能正确地瞄准目标 结果未能拦截一枚伊拉克飞毛腿导弹 飞毛腿导弹在军营中爆炸 造成28名美国陆军死亡 1 2 1996年6月4日 在亚利安五号运载火箭发射后37秒 偏离预定轨道而炸毁 原因是软件系统试图将64位浮点数转换为16位浮点数 造成溢出错误 1 温哥华证券交易所曾开发了一项股票指数 当其在1982年推出时 指数的值是1000 000 在后来的重新计算时多次运用舍入到小数点后三位的操作 22个月以后 指数的值是524 881 然而事实上应该是1009 811 1 参考文献 编辑 1 0 1 1 1 2 Weisstein Eric W 编 Roundoff Error at MathWorld A Wolfram Web Resource Wolfram Research Inc 2010 06 17 原始内容存档于2020 11 11 英语 Liam McBrien Craig McNulty The Patriot Missile Disaster What Went Wrong pdf Dr Mark Dunlop University of Strathclyde 2010 06 17 原始内容存档 PDF 于2011 07 19 引文使用过时参数coauthors 帮助 外部链接 编辑 英文 MathWorld上关于舍入误差 页面存档备份 存于互联网档案馆 的解释 英文 D Goldberg 计算机科学家必备的浮点运算知识 页面存档备份 存于互联网档案馆 英文 20个著名的软件灾难 页面存档备份 存于互联网档案馆 参见 编辑浮点数 数值修约规则 取自 https zh wikipedia org w index php title 捨入誤差 amp oldid 74740745, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。