查看“︁捨入誤差”︁的源代码
←
捨入誤差
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{Expand|time=2013-03-18T13:50:55+00:00 }} '''舍入误差'''({{lang-en|'''round-off error'''}}),是指运算得到的[[近似值]]和[[精确值]]之间的差异。比如当用有限位数的[[浮点数]]来表示[[实数]]的时候(理论上存在无限位数的浮点数)就会产生舍入误差。舍入误差是[[量化误差]]的一种形式。 如果在一系列运算中的一步或者几步产生了舍入误差,在某些情况下,误差会随着运算次数增加而积累得很大,最终得出没有意义的运算结果。 == 表示误差 == 把一个浮点数在计算机中表示,可能会引起误差,这样的误差叫做'''表示误差'''。例如: <center><table class="wikitable"> <tr><th>数学表达式</th> <th>精确值</th> <th>近似值</th> <th>误差</th> <tr><td>1/7</td> <td>0.<span style=text-decoration:overline>142 857</span>{{OEIS|id=A020806}}</td> <td>0.142 857</td> <td>0.000 000 <span style=text-decoration:overline>142 857</span></td> <tr><td>[[2的自然對數|ln 2]]</td> <td>0.693 147 180 559 945 309 41... {{OEIS|id=A002162}}</td> <td>0.693 147</td> <td>0.000 000 180 559 945 309 41...</td> <tr><td>[[常用對數|log<sub>10</sub> 2]]</td> <td>0.301 029 995 663 981 195 21... {{OEIS|id=A007524}}</td> <td>0.3010</td> <td>0.000 029 995 663 981 195 21...</td> <tr><td>[[立方根|{{unicode|∛}}<span style=text-decoration:overline> 2 </span>]]</td> <td>1.259 921 049 894 873 164 76... {{OEIS|id=A002580}}</td> <td>1.25992</td> <td>0.000 001 049 894 873 164 76...</td> <tr><td>[[2的算術平方根|√<span style=text-decoration:overline> 2 </span>]]</td> <td>1.414 213 562 373 095 048 80... {{OEIS|id=A002193}}</td> <td>1.41421</td> <td>0.000 003 562 373 095 048 80...</td> <tr><td>[[E (數學常數)|e]]</td> <td>2.718 281 828 459 045 235 36... {{OEIS|id=A001113}}</td> <td>2.718 281 828 459 045 </td> <td>0.000 000 000 000 000 235 36...</td> <tr><td>[[圓周率|π]]</td> <td>3.141 592 653 589 793 238 46... {{OEIS|id=A000796}}</td> <td>3.141 592 653 589 793</td> <td>0.000 000 000 000 000 238 46...</td> </table></center>增加数字位数可以减少可能会产生的舍入误差,但是位数是有限的,在表示无限浮点数时仍然会产生误差。在用常规方法表示浮点数的情况下,这种误差是不可避免的,但是可以通过设置[[警戒位]]来减小。 多步舍入会增加舍入误差,例如数字9.945309在输入时被舍入到小数点后两位 (9.95),显示时再舍入到小数点后一位 (10.0),舍入误差是0.054691。如果原来的数只经过一步舍入到小数点后一位 (9.9),舍入误差仅为0.045309。 [[IEEE 754|IEEE二进制浮点数算术标准]]中定义了以下几种舍入规则: *'''朝0方向舍入''': 即截尾,直接将需要精确的位数以后的数位舍去。 :0.<span style=text-decoration:overline>142857</span> ≈ 0.142 (将小数点后第3位以后的数位全部舍去) *'''舍入到最接近''': 即四舍五入,结果可能会变大或变小。 :0.<span style=text-decoration:overline>142857</span> ≈ 0.143 (因小数点后第4位<math>8\ge5</math>,所以小数点后第3位加1) :0.<span style=text-decoration:overline>142857</span> ≈ 0.14 (因小数点后第3位<math>2 < 5 \!\ </math>,所以直接舍去) *'''朝-∞方向舍入''': 总是向[[数轴]]的左方向舍入。 *'''朝+∞方向舍入''': 总是向数轴的右方向舍入。 == 举例 == * 1990年2月25日,[[海湾战争]]期间,在[[沙特阿拉伯]][[宰赫兰]]的[[爱国者导弹]]防御系统因浮点数舍入错误而失效,该系统的计算机精度仅有24位,存在0.0001%的计时误差,所以有效时间阙值是20个小时。当系统运行100个小时以后,已经积累了0.3422秒的误差。这个错误导致导弹系统不断地自我循环,而不能正确地瞄准目标。结果未能拦截一枚[[伊拉克]][[飞毛腿导弹]],飞毛腿导弹在军营中爆炸,造成28名美国陆军死亡。<ref name="wolf">{{cite mathworld|urlname=RoundoffError|title=Roundoff Error |publisher=Wolfram |access-date=2010-06-17 |archive-date=2020-11-11 |archive-url=https://web.archive.org/web/20201111223326/https://mathworld.wolfram.com/RoundoffError.html |dead-url=no }}</ref> <ref>{{cite web |url=http://personal.cis.strath.ac.uk/~mdd/teaching/pm/Patriot%20Missile%20PM%20Presentation.pdf |format=pdf |title=The Patriot Missile Disaster – What Went Wrong? |author=Liam McBrien |coauthors=Craig McNulty |publisher=Dr Mark Dunlop, University of Strathclyde |access-date=2010-06-17 |archive-date=2011-07-19 |archive-url=https://web.archive.org/web/20110719151906/http://personal.cis.strath.ac.uk/~mdd/teaching/pm/Patriot%20Missile%20PM%20Presentation.pdf |dead-url=no }}</ref> * 1996年6月4日,在[[亚利安五号运载火箭]]发射后37秒,偏离预定轨道而炸毁。原因是软件系统试图将64位浮点数转换为16位浮点数,造成溢出错误。<ref name="wolf" /> * [[温哥华证券交易所]]曾开发了一项[[股票指数]]. 当其在1982年推出时,指数的值是1000.000。在后来的重新计算时多次运用舍入到小数点后三位的操作。22个月以后,指数的值是524.881,然而事实上应该是1009.811。<ref name="wolf" /> == 参考文献 == {{Reflist}} == 外部链接 == * {{en}}[[MathWorld]]上关于[http://mathworld.wolfram.com/RoundoffError.html 舍入误差] {{Wayback|url=http://mathworld.wolfram.com/RoundoffError.html |date=20201111223326 }}的解释 * {{en}}D. Goldberg. [http://www.validlab.com/goldberg/paper.pdf 计算机科学家必备的浮点运算知识] {{Wayback|url=http://www.validlab.com/goldberg/paper.pdf |date=20191212073228 }} * {{en}}[http://www.devtopics.com/20-famous-software-disasters/ 20个著名的软件灾难] {{Wayback|url=http://www.devtopics.com/20-famous-software-disasters/ |date=20210122035630 }} == 参见 == * [[浮点数]] * [[数值修约规则]] [[Category:数值分析]] [[Category:误差理论]]
该页面使用的模板:
Template:Cite mathworld
(
查看源代码
)
Template:Cite web
(
查看源代码
)
Template:En
(
查看源代码
)
Template:Expand
(
查看源代码
)
Template:Lang-en
(
查看源代码
)
Template:OEIS
(
查看源代码
)
Template:Reflist
(
查看源代码
)
Template:Unicode
(
查看源代码
)
Template:Wayback
(
查看源代码
)
返回
捨入誤差
。
导航菜单
个人工具
登录
命名空间
页面
讨论
不转换
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
工具
链入页面
相关更改
页面信息