当前位置:文档之家› 第一章数值计算方法与误差分析分析

第一章数值计算方法与误差分析分析


控制误差传播的例子
例10 计算积分 In=∫01 xn ex-1dx,n=0,1, 2, … , 9 利用分部积分法,可得 In= xn ex-1| 01 –∫01 ex-1dxn
=1– n∫01 xn-1 ex-1dx =1– nIn-1
从而有递推公式
I0= ∫01 ex-1dx= ex-1 | 01 = 1-e-1 ≈0.6321 In= 1– nIn-1 (n=0, 1, 2, … , 9)
所谓算法,是指对一些数据按某种规定的顺序 进行的运算序列。在实际计算中,对于同一问题我 们选用不同的算法, 所得结果的精度往往大不相同。 这是因为初始数据的误差或计算中的舍入误差在计 算过程中的传播,因算法不同而异,于是就产生了 算法的数值稳定性问题。一个算法, 如果计算结果 受误差的影响小,就称这个算法具有较好的数值稳 定性。否则,就称这个算法的数值稳定性不好。
简化计算步骤、减少运算次数、避免误差积累的例子
又如计算
1/(1*2)+1/(2*3)+…+1/(1000*1001)
的值。 若一项一项进行计算,不仅计算次数多,而 且误差积累也很大。若简化成 1-1/1001 进行计 算,则整个计算只要一次求倒数和一次减法。
(四)要避免绝对值小的数作除数
由式 ε(x1/x2)≈d(x1/x2)≈[x2ε(x1)-x1ε(x2)]/ x22 , (x2≠0) 可知,当除数x2接近于零时,商的绝对误差就可能很大。因此 , 在数值计算中要尽量避免绝对值小的数作除数, 避免的方法是把 算式变形或改变计算顺序。 例8 当x接近于0时 (1-cosx)/sinx 的分子、分母都接近0,为避免绝对值小的数作除数,可将原式 化为 (1-cosx)/sinx=sinx/(1+cosx) 例9 当x 很大时,可化 x/[(x+1)0.5-x0.5]=x[(x+1)0.5 + x0.5]
0.4900 0.484 1 1 0.012397 0.0125 10 1 10 ( 21) 0.484 2 4 2 4
数值运算中误差的影响
要分析数值运算中误差的传播,首先就要估 计数值运算中的误差。数值运算的误差估计情况 较复杂, 通常利用微分来估计误差。
二元函数 设数学问题的解y与变量x1 , x2有关, y=f(x1,x2)。若 x1,x2的近似值为x1*, x2*,相应解为y*,则当数据误差较 小时解的绝对误差 ε(y)=y-y*=f(x1,x2 )-f(x1*,x2* )
取x1*=3作为π的近似值,则|ε1(x)|=0.1415 … ≤0.5×100;
取x2*=3.14,则|ε2(x)|=0.00159 … ≤0.5×10-2;
取x3*=3.1416, 则|ε3(x)|=0.0000074 … ≤0.5×10-4 。
它们的误差都不超过末位数字的半个单位。
有效数字的概念
例4 对于绝对值小的 x,可利用泰勒级数
ex–1= x+x2/2+x3/6+…
取前n项来计算。
(二)要防止大数“吃掉“小数,注意保护重要数据 在数值运算中,参加运算的数有时数量级相差很大,而计算 机位数有限,如不注意运算次序就可能出现大数“吃掉”小数的 现 象,影响计算结果的可靠性。 例5 在五位浮点十进制计算机上,计算 y=54321+0.4+0.3+0.4 如果按从左到右的顺序进行加法运算,后三个数都在对阶过 程中被当作零,得出含有较大绝对误差的结果y=54321。要避免 这种大数“吃掉”小数的现象,可以调整计算顺序,采用先小数 后 大数的计算次序,即先将0.4,0.3,0.4加起来,然后再加上54321, 结果等于54322。 一般情况下,若干数相加,采用绝对值较小者先加的算法,
计算积分In=∫01 xn ex-1dx的过程
如果直接应用递推公式
I0= ∫01 ex-1dx= ex-1| 01 = 1-e-1 ≈0.6321 In= 1– nIn-1 (n=1, 2, … , 9)
用四位小数计算依次得到: 0.6321, 0.3679, 0.2642, 0.2074, 0.1704 0.1480, 0.1120, 0.2160, -0.7280, 7.5520 由此看到I8为负值、 I9 >1,显然与一切0<In<1 (由于 e-1/(n+1)= min(ex-1)∫01xndx<In (0≤x≤1) <max (ex-1)∫01xndx=1/(n+1) ) 矛盾。事实上,从I7开始已经连一位有效数字也没有了 ( I7<1/8=0.125,而上面算得I7 = 0.2160)。是什么原因 造成这种结果呢?
,
二、设计算法的若干原则
为防止误差使计算结果失真(失常)现 象发生,要选用数值稳定的计算公式,以 保证算法的数值稳定性。下面我们给出设 计算法的若干原则,并给出改善算法的例 子,这些原则有助于鉴别算法的可靠性并 防止误差危害的现象产生。
(一)要避免相近两数相减
下面再举几个例说明改善算法的方法。 例2 x充分大时 1/x – 1/(x+1)=1/[x(x+1)] (1+x)1/2 – x1/2=1/[(1+x) 1/2+x1/2] 例3 对于小的正数ε sin(x+ε) – sinx=2cos(x+ε/2)sin(ε/2) (注: sin(x) – sin(y)=2 cos [(x+y)/2] sin [(x-y)/2] )
有效数字
• 为了既能表示近似数的大小,又能 表示近似数的精确程度,我们下面介绍 有效数字的概念(注意:有效数字既能 表示近似数的大小知道,当x有很多位数字时,常常按照 “四舍五入”原则取前几位数字作为x的近似值x*。 例1 设 x = π = 3.1415926 …
• 定义3 若近似值x*的绝对误差限是 某一位上的半个单位,该位到 x* 的第一 位非零数字一共有n位,则称近似值x*有 n位有效数字,或说x*精确到该位。 • 准确数本身有无穷多位有效数字, 即从第一位非零数字以后的所有数字都 是有效数字。
有效数字举例
• 如例1中的x*1,x*2 ,x*3,分别有1,3,5位有效数字。 • 实际上,用四舍五入法取准确值x 的前n位(不 包括第一位非零数字前面的零)作为它的近似 值x*时,x*有n位有效数字。 • 例2 设 x = 4.26972,则按四舍五入法,取2位, x1*=4.3有效数字为2位,取3位,x2*=4.27,有效数 字为3位,取4位,x3*=4.270,有效数字为4位。
特别注意
近似值后面的零不能随便省去, 如 例2中4.27和4.270,前者精确到4.27,有效 数字为3位,取4位,x3*=4.270,有效数字 为4位。可见,它们的近似程度完全不同, 与准确值的最大误差也完全不同。
有效数字和绝对误差的关系
定义3换一种说法就是:设x的近似值 x*= ±0.a1a2… an … ×10p 若其绝对误差 |ε(x)|=|x-x*| ≤0.5 ×10p-n 则称近似数x*具有n 位有效数字。这里p为整数,a1 , a2 , … , an 是0 到9中的一个数字且a1≠0 。 例如,若x*=0.23156×10-2是x 的具有五位有效数字的近似 值,则绝对误差是 |x-x*| ≤0.5 ×10-2-5 = 0.5 ×10-7 定义3或式 |ε(x)|=|x-x*| ≤0.5 ×10p-n 建立了绝对误差(限)和有效数字之间的关系。由于n 越大,10p-n 的值越小,所以有效数字位越多,则绝对误差(限)越小。
有效数字与相对误差关系举例
注意从
|εr(x)| ≤1/(2×a1) ×10-(n-1)
并不能保证x*一定具有n位有效数字。 如 x=sin29020´=0.4900 设其近似值 x*=0.484 , 其相对误差为
我们不能由此推出x*有两位有效数字,这是因为 x-x*=0.4900-0.484=0.0060>0.005 即可知近似值x*并不具有两位有效数字。 实际上, x*只有一位有效数字。
一元二次方程 X2+2pX +q=0的求解方法
根据根与系数的关系可知 x1x2=q=1 所以 x2=1/x1 因此,如果仍用上述方法算出x1,然后用 x2=1/x1 计算x2,可得 x1=100000.00,x2=0.00001000 该结果是非常好的。这就说明这种算法有较好的数值稳 定性。 一般说来,当|p|>>|q|时,用公式x1= –p–sign(p)•(p2–q)0.5 x2=q/x1来求解方程 X2+2pX+q=0 是数值稳定的。 从而可知,算法数值稳定性的讨论甚为重要。
6 .做出算法的误差分析
从工程实际中抽象出来的数学问题往往很复杂,典型的有: 1、数据点的插值 2 、曲线拟和 3、复杂函数的微积分运算
4、非线性方程f(x)=0的根的求解
5、当n很大时线性方程组AX=B的求解 6、常微分方程的求解
min
xX
f ( x)
参考书籍的几种名称: 1、数值分析 2、数值计算原理 3、计算方法 4、算法设计 5、计算机数值计算方法与程序设计
数值计算方法:研究怎样利用计算 工具求出数学问题的数值解,并对算 法的收敛性、稳定性和误差进行分析 计算的全过程。
构建一个完整的数值算法,包含着以下环节: 1. 提出数值问题(即对对象建立数学模型)
2 .构思处理数值问题的基本思想(即提出理论) 3 .列出计算公式 4 .设计程序框图
5 .编制源程序并调试
数值计算中的误差
1、误差的种类和来源
① 模型误差
② 观测误差
③ 截断误差
④ 舍入误差
2、误差的有关概念:
① 绝对误差:
真 值
近似值
( x) x x
相关主题