数值计算中的误差
使用计算机解决科学计算问题时大致经历如下几
个过程:
2
实际问题Leabharlann 数学模型数值计算方法
上机计算求出结果
程序设计
随着科学技术的突飞猛进,无论是工农业生
产还是国防尖端技术,例如机电产品的设计、建
筑工程项目的设计、气象预报和新型尖端武器的 研制、火箭的发射等,都有大量复杂的数值计算
3
问题急待解决。它们的复杂程度已达到非手工计 算所能解决的地步。数字式电子计算机的出现和 飞速发展大大推动了数值计算方法的进展,许多 复杂的数值计算问题现在都可以通过电子计算机 进行数值计算得到妥善解决。
题。
数值计算过程中会出现各种误差,它们可分 为两大类:一类是由于算题者在工作中的粗心大
7
意而产生的,例如笔误以及误用公式等,这类误 差称为“过失误差”或“疏忽误差”。它完全是 人为造成的,只要工作中仔细、谨慎,是完全可 以避免的;而另一类为“非过失误差”,在数值 计算中这往往是无法避免的,例如近似值带来的
p( x) an xn an1 xn1 a1 a0
5
的值时,若直接计算 ai xi (i 项相加,共需做
0,1,, n) ,再逐
n(n 1) 1 2 (n 1) n 2
次乘法和n 次加法。n=10时需做55次乘法和10次 加法。若用著名秦九韶(我国宋朝数学家)算法 ,将多项式P(x)改成
各问题的数据不同,计算快慢也会不同,一般是用
最坏情况下所花的时间来作讨论。设输入数据的规 模(size)是l(在网络问题中,l一般与节点数及弧数
有关,而对一般极值问题,l往往与变量数及约束
数有关),设在最坏情况下运算次数是f(l),则f(l) 称为算法的计算复杂性。
12
具有什么样的计算复杂性的算法被认为是好的呢?目 前计算机科学中广为接受的观点是:多项式时间算法, 即f(l)是关于l的一个多项式,或者以一个多项式为 上界的。例如, l 2 l , l 3 , l logl 等是好的算法;而指 数时间算法,即f(l)是关于l的指数式,或以一个指数 式为下界的,例如
第一章
§1 §2 §3 §4 §5 §6
数值计算中的误差
引 言 误差的种类及其来源 绝对误差和相对误差 有效数字及其与误差的关系 误差的传播与估计 算法的数值稳定性
1
§1 引 言
计算方法也称数值分析。数值分析是研究各 种数学问题求解的计算方法,即数值计算。利用 计算尺、电子计算机等计算工具来求出数学问题 得到数值解的全过程,称为数值计算。 在电子计算机成为数值计算的主要工具的今 天,需要研究适合计算机使用的数值计算方法。
1 12 0.005076 0.005046 197 2378
11
衡量一个算法的好坏时,计算时间的多少是非常重 要的一个标志。由于实际的执行时间依赖于计算机 的性能,因此所谓算法所花时间是用它执行的所有 基本运算,如算术运算、比较运算等的总次数来衡 量的。这样时间与运算的次数直接联系起来了。当 然,即使用一个算法计算同一类型的问题时,由于
10
表1-1
序 号 算 式 计 算 结 果
2 7/5
2 17 / 12
5 0.005233 12
6
1 2 3 4
1 0.166667 1 6 6 6 12 0.005020 5 0.005233 29 12
误差,模型误差、观测误差、截断误差和舍入误
差等。对于“非过失误差” ,应该设法尽量降 低其数值,尤其要控制住经多次运算后误差的积
累,以确保计算结果的精度。
下面是一个简单的例算,可以看出近似值带 来的误差和算法的选择对计算结果的精度所产生 的巨大影响。例如,要计算
8
2 1 x 2 1
3l , l! 等 情况,则是坏的。这个
看法的依据是很明白的,因为当l增大时,指数函数 比多项式函数增长快。
用数值计算的方法来解决工程实际和科学技
术中的具体技术问题时,首先必须具体问题抽象 为数学问题,即建立起能描述并等价代替该实际 问题的数学模型,例如各种微分方程、积分方程 、代数方程……等等,然后选择合适的计算方法 ( 算法),编制出计算机程序,最后上机调试并 进行计算,以得到所欲求解的结果。
4
所谓数值计算方法,是指将所欲求解的数学 模型(数学问题)简化成一系列算术运算和逻辑
可用四种算式算出:
3
x
2 1
6
x 99 70
2
6
x
1 2 1
1 x 99 70
2
9
2 7 5 1.4 和 2 17 12 1.4166 按上列四种算法计
如果分别用近似值
算 x 值,其结果如下表1-1所示。
由表1-1可见,按不同算式和近似值计算出 的结果各不相同,有的甚至出现了负值,这真是 差之毫厘,谬以千里。可见近似值和算法的选定 对计算结果的精确度影响很大。因此,在研究算 法的同时,还必须正确掌握误差的基本概念,误 差在近似值运算中的传播规律,误差分析、估计 的基本方法和算法的数值稳定性概念,否则,一 个合理的算法也可能会得出一个错误的结果。
P( x) ((((a n x a n1) x a n2) x a 2) x a1) x a0
6
来计算时,只要做n次乘法和n次加法即可。 对于小型问题,计算的速度和占用计算机内
存的多寡似乎意义不大。但对于复杂的大型问题
而言,却是起着决定性作用。算法取得不恰当, 不仅影响到计算的速度和效率,还会由于计算机 计算的近似性和误差的传播、积累直接影响到计 算结果的精度甚至直接影响到计算的成败。不合 适的算法会导致计算误差达到不能容许的地步, 而使计算最终失败,这就是算法的数值稳定性问
运算,以便在计算机上求出问题的数值解,并对
算法的收敛性和误差进行分析、计算。这里所说 的“算法”,不只是单纯得数学公式,而且是指
由基本的运算和运算顺序的规定所组成的整个解
题方案和步骤。一般可以通过框图(流程图)来 较直观地描述算法的全貌。 选定适合的算法是整个数值计算中非常重要 的一环。例如,当计算多项式