浮点运算错误计算原因.ppt_第1页
浮点运算错误计算原因.ppt_第2页
浮点运算错误计算原因.ppt_第3页
浮点运算错误计算原因.ppt_第4页
浮点运算错误计算原因.ppt_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

原因:现有计算模式,浮点运算错误计算原因 赵世忠 华东师范大学 上海市高可信计算重点实验室,提纲,浮点运算错误计算原因 错数概念并计算方法 有效位数计算模式的缺陷 定性或定量解释几个错误计算案例 总结,一、原因,有效位数计算模式 人类千百年来的主要计算方式。 表示误差 十进制数与二进制数之间的转换误差。,一、原因,有效位数计算模式 人类千百年来的主要计算方式。 特点: 所有运算(包括所有中间运算与最终结果)保留相同长度的有效位数。,一、原因,二、错位数(或错数),计算结果中错误的有效数字个数。,二、错位数(或错数),定义: 已知 x0, f(x0), f (x0)的扩展整数位数分别是m1,m2, m0. 则称 m1 - m2 + m0 为 f(x) 在 x0 的错位数, 简称错数, 用 ErrorNumber(f(x), x0)来表示.,二、错位数(或错数),F(x0)的计算值中,总有约“错数”位有效数字不正确!,错数是3. 因此结果中总有3位左右的数字不正确,二、错位数(或错数),F(x0)的计算值中,总有约“错数”位有效数字不正确!,错数是2. 因此结果中总有2位左右的数字不正确,二、错位数(或错数),F(x0)的计算值中,总有约“错数”位有效数字不正确!,错数是2. 结果中正好有2位数字不正确,错数是2. 结果中正好有2位数字不正确,错数是2. 结果中正好有2位数字不正确,二、错位数(或错数),F(x0)的计算值中,总有约“错数”位有效数字不正确!,二、错位数(或错数),F(x0)的计算值中,总有约“错数”位有效数字不正确!,错数是3. 结果中有2位数字不正确,错数是3. 结果中有3位数字不正确,错数是3. 结果中有1位数字不正确,二、错位数(或错数),F(x0)的计算值中,总有约“错数”位有效数字不正确!,二、错位数(或错数),三、固定长度有效位数计算模式的缺陷,对于“病态”模型, 无论有效位数多长, 计算结果中均含有错误的有效数字, 即始终不会获得正确答案 不同有效位数计算模式下的计算结果可能不一致 等价表达式的计算结果可能不等价 分配律、结合律等规则不再成立 减少运算次数并不一定能获得更精确的值 提高计算精度并不能确保计算结果更精确 存在“相减(不) 相消”、“大数吃小数”等现象,1. 对于“病态”模型, 无论有效位数多长, 计算结果中均含有错误的有效数字, 即始终不会获得正确答案,错数若大于0,则结果中始终有错误的数字!,2. 不同有效位数计算模式下的计算结果可能不一致,3. 等价表达式的计算结果可能不等价,例如:2065 与 e65*ln(20) 的计算结果不等价。,4. 分配律、结合律等规则不再成立,4. 分配律、结合律等规则不再成立,5. 减少运算次数并不一定能获得更精确的值,6. 提高计算精度并不能确保计算结果更精确,6. 提高计算精度并不能确保计算结果更精确,6. 提高计算精度并不能确保计算结果更精确,6. 提高计算精度并不能确保计算结果更精确,6. 提高计算精度并不能确保计算结果更精确,7. 存在“相减(不) 相消”、“大数吃小数”等现象,7. 存在“相减(不) 相消”、“大数吃小数”等现象,7. 存在“相减(不) 相消”、“大数吃小数”等现象,1030“吃掉了”99!,7. 存在“相减(不) 相消”、“大数吃小数”等现象,b2很容易“吃掉”4ac!,四、定性或定量解释几个错误计算案例,例1.,例2:著名的错误计算案例,正确答案是:-0.8273960599,例3.,例4.,例5:著名的错误计算案例,例1.,精度不同, 则会得到不同数量级的数; 精度相同, 但是舍入策略有异, 则“微小”的表示误差可能会导致不一样的结果, 甚至是符号的不同.,例1.,对例 2 的分析,z与x均是37位的整数.,与例1类似, z+x要么为0,要么是一个大的整数.,要么“相减相消”; 要么“相减不相消”.,例2:著名的错误计算案例,正确答案是:-0.8273960599,先“相减不相消”后“大数吃小数”.,第3个:可能先“大数吃小数”,后“相减相消”.,先“相减相消”, 后“表示误差”,前两个:先“相减不相消”后“大数吃小数”.,前两个:先“相减不相消”后“大数吃小数”.,第3个: 先“相减相消”, 后“表示误差”,例3.,并且 精度越高, 误差越大.,例3.,例4.,因为sin(x)在2100的错数是31,所以有效数字全部错误.,并且 精度越高, 误差越大.,例5:著名的错误计算案例,因为f(x)在x0的错数是8,所以后面的8位数字是错的.,若采用双精度计算, 结果中也只有约一半的有效数字正确.,五、总结,对于一个算术表达式, “错数”是个“坎儿” 若计算精度小于等于它,则1位正确的有效数字也得不到 只有大于它,才可能有:计算精度越高,结果的误差越小 浮点运算中的应用 若其相关错数大于16, 则即使采用双精度计算, 结果中也很难得到 1 位正确的有效数字, 有时甚至连符号都不对; 若其小于0, 则不论是单精度计算, 还是双精度计算, 表示误差均不太容易影响结果的有效数字的正确性。,谢 谢! 请批评指正!,单精度(24位)、双精度(53位)、扩展精度(64位)下标准的错误答案如下:,51,影响航天嵌入式软件可信的十个核心问题分析,计算误差造成的危害,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. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论