算术运算的误差控制方法

 2022-01-17 23:40:59

论文总字数:16061字

目 录

1.引言 1

  1.1研究背景和意义 1

  1.2国内外研究现状 2

2.预备知识 3

  2.1 浮点数的基本概念 3

    2.1.1浮点数的定义及规格化 3

    2.1.2浮点数的舍入模式 5

  2.2绝对误差和相对误差 6

  2.3区间算术 7

    2.3.1区间的表示 8

    2.3.2区间的相关性质 8

3.算术运算的误差分析及控制 11

  3.1算术运算中的误差来源及分析方法 11

  3.2误差控制原则 11

4.算术运算的精度预测方法 14

  4.1精度及相关定义 14

  4.2四则运算的精度预测方法 15

  4.3混合运算的精度预测算法 20

5.总结 25

参考文献: 25

致谢 26

算术运算的误差控制方法

李晓薇

,China

Abstract: In computer environment of floating point arithmetic, mixing operations may lead to accumulation of rounding errors.In the large-scale, wide-ranging, long-term operation, the cumulative effect of rounding errors may make the numerical calculation results inaccurate, unreliable, or even incorrect.In this paper, we use the interval arithmetic and forward error analysis method to introduce the corresponding precision prediction formulas.On this basis, the algorithm of calculating the lower bound of the mixed operation accuracy is introduced.The algorithm is based on the rank and accuracy of the initial inputs of the arithmetic expression to calculate the lower bound of the rank and accuracy of the expression result.From the lower bound of accuracy it is easy to get the error range, which helps us to do error control.

Key words: floating point operations, interval arithmetic, error analysis, precision prediction

1.引言

1.1研究背景和意义

当今社会,随着高性能超级计算机的飞速发展,大规模科学工程计算已广泛应用于科研、工程及其他各个领域.严格控制误差累积已成为计算数学和计算机科学的根本任务之一.当前,绝大部分高性能计算平台在IEEE-754浮点运算标准下执行科学工程计算,而舍入误差在浮点运算中是不可避免的,在大规模、大尺度、长时程数值计算中,甚至在求解某些小规模的病态问题时,舍入误差的累积效应都可能使得数值计算结果不精确、不可靠、不可信、甚至不正确,进而影响到了科研工程的成败.然而,在实践中,人们很容易忽略误差,这就造就了一些悲剧的发生.1991年,海湾战争中,爱国者导弹防御系统因无法侦察并拦截伊拉克的飞毛腿导弹,致使美国28名士兵死亡,事故原因是导弹系统内时钟存在时间计算误差,导致100小时内偏差了1/3秒[1].1996年6月,欧洲航天局的“阿丽亚娜5号”火箭在发射38秒后发生爆炸,其原因是将一个64 bits浮点数赋值给了一个16 bits的整形变量,从而引起了数据精度的丢失.

下面我们通过一个简单的例子来显示微小的扰动将可能导致惊人的误差.

例:求解方程组

我们通过MATLAB来运算,输入不同的求得:

计算结果:

,求得

由此我们可以看出,的微小变化引起了的很大变化,即对于的扰动是敏感的,这种问题称为为病态问题.

为提高运算精度,严格控制算术运算中的误差,科学家提出了许多使浮点数值运算操作产生的误差尽可能小的算法,也提出了一些可保证算术运算结果精确可靠的数值计算理论.例如,计算两个浮点数之和时,返回两个值,一个是和的估计值,一个是和的误差值.当多个浮点数进行求和时,可将每次求和的舍入误差进行累积,从而对最终和的估计值进行修正,从而得出较为精确的计算结果[2].尽管可以通过有效的算法来提高浮点数值计算的准确性,但由于计算机固有的局限性带来的舍入误差问题仍然没有从根本上解决.在进行某些复杂运算后,误差就会不断地累积扩大,无法保证数据的可靠性.因此,需要一种有效的方法来保证输入数据在经过若干浮点运算处理后所产生数据的可靠性.

本文所要做的工作就是通过对误差分析[3]和区间算术的研究,推出前向[5]精度预测公式.其中,精度预测公式主要是通过已知算术表达式中每个数的精度,预测结果的精度范围,这将对控制误差起到至关重要的作用.本文的精度预测公式涉及加减乘除四则运算,能够基本满足混合运算对精度预测的要求.在此基础之上,本文推出计算混合运算精度下界的算法.该算法是建立在语义分析和语法分析的基础上.通过算法我们可以求出混合运算的精度下界.通过精度下界容易得到误差范围,由误差范围,我们就可以有效的进行误差控制.

区间算法作为一种可靠的计算方法,提供了一个包含真实解的区间包络,是解决误差问题的一种有效策略.通过区间运算,可以获得一个区间数据,能够保证准确数据一定在这个区间范围内,而区间的宽度,则体现了数据产生的误差范围.利用这种计算模型,可以很容易地计算出浮点算法下的舍入误差与近似误差界,从而有效的进行误差控制.

1.2国内外研究现状

1985年制定的IEEE 754-1985浮点标准对数值计算有着跨时代的意义,从此浮点数成为计算机中最广泛应用的实数近似方法,它利用有限的浮点数值集合来描述连续的实数集,为实数的近似与计算提供完整的理论体系.随后,在研究人员的不断努力下,浮点算法得到了进一步的改善,他们提出许多新的高效精确算法,如混合FMA等.自2001年开始,浮点标准的改进工作得以实施.于2008年,IEEE 754-2008标准最终修订完成.

尽管浮点算法理论已经相当成熟,但由于其无法真正地达到无误差的数值计算,因此对于浮点数值计算的误差分析以及高精度可靠计算仍是科学研究的热点.对于浮点数计算误差的研究,可追溯到上世纪40年代,V.Neumann和A.Turing对浮点数的舍入误差进行了初步的研究.随后J.H.Wilkinson和D.Goldberg等对浮点数的数值计算误差进行了详细的分析与研究,为后来浮点标准的制定提供了可靠的依据.

上世纪60年代R.E.Moore提出了区间算法[9],并在其编写的《Introduction to Interval Analysis》中做了详细阐述.这是一种能够自动提供有保证的误差界的计算模型.在区间计算中,每个变量用一对浮点数表示,一个是下界,一个是上界.区间变量之间的运算以一种有保证的方式舍入计算.例如,将区间和区间相加,向下舍入得到最接近的浮点数,向上舍入得到最接近的浮点数.这样保证区间包含来自的任意一对变量之和.德国汉堡大学可靠计算实验室主任S.M.Rump编写的INTLAB软件包在Matlab平台上实现了区间算法的基本运算,在科学研究领域得到广泛应用.随后,M.Berz和K.Makino,A.Neumaier,van Emden等对区间算法进行了进一步的研究.

到目前为止,很多软件包中已经实现区间的相关算法.最流行和免费的区间运算包是C 语言编写的PROFIL/BIAS,以及用Fortran77编写的INTLAB.

2.预备知识

2.1 浮点数的基本概念

目前,浮点数是计算机中使用最广泛的表示实数的方法.一个浮点数是由符号位(),有效位()和指数位()三部分共同组成.

2.1.1浮点数的定义及规格化

本节主要是依据J.M Muller的著作[10]及IEEE 754-2008浮点标准中的相关内容对浮点数的表示方法以及相关理论进行简单介绍.

剩余内容已隐藏,请支付后下载全文,论文总字数:16061字

您需要先支付 80元 才能查看全部内容!立即支付

该课题毕业论文、开题报告、外文翻译、程序设计、图纸设计等资料可联系客服协助查找;