数值分析教材-数值分析大学课程 下载本文

能控制,这与算法有关。 例5 一元二次方程 如用求根公式:

以及字长为8位的计算器求解有:

那么: 的值与精确解有天壤之别。若改用:

其精确解为

因此, 算法的选用很重要。

第四节 数值计

算中应注意的问题

1. 避免两个相近的数相减

两个相近的数相减,有效数字会大大损失。前面一个例子已说明问题,这里再举一例:

如用四位有效数字计算:

结果只有一位有效数字; 如改为:

有四位有效数字。新算法避免了两个相近数的相减。

2. 避免大数吃小数的现象

例如: a=1010 ,b=10, c=-a ,|a+c|<

b被大数吃掉了。如按(a+c)+b=0+b=b,b 就没有被吃掉。这也是构造算法时要注意的问题。

3. 避免分母的绝对值远小于分子的绝对值 由公式

故当|x2* |<<|x1* |, 舍入误差可能会增大。

4. 要简化计算,减少运算次数,提高效率 例如计算ln2,若用公式

-1

取x=1, 前n项部分和来计算ln2的近似值,截断误差为。如果利用级数

-1

来计算,当时,代入上面的展开式得

取前5项之和作为近似值,参数的截断误差为

显然,第二算法比第一算法有效。

又如计算多项式的值: 计算Pn(x)共需

如将Pn(x)写成:

,每取akxk有k次乘法运算,因此

次乘法和n次加法运算。

Pn(x)=(…((anx+an-1)x+an-2)x+…+a1)x+a0

用秦九韶算法:u0=an, uk=uk-1x + an-k,k=1,2,…,n 。最终Pn(x)=un,共需 n次乘法和n次加法运算。一般地要注意,能在循环外计算,就不要放在循环内计算。

5. 选用数值稳定性的算法

例:In=e-1

xnexdx ,n=0,1,2,…

用分部积分公式得递推式:

In=1-nIn-1,I0=1-e-1

用四位有效数字计算:

I0=0.6321 ,I1=1-I0=0.3679 ,I2=1-2I1=0.2642

I3=1-3I2=0.2074 ,I4=1-4I3=0.1704

I5=1-5I4=0.1480 ,I6=1-6I5=0.1120

I7=1-7I6=0.2160 ,I8=1-8I7=-0.7280

可以估计出:

故:

0.0460

于是I7与I8精确值已经面目全非,一位有效数字也没有。这是由于如果I0有误差e=0.5×10-4,不计中间再产生的舍入误差,该误差随着计算过程分别乘以2,3,…,7,8到时已经变成了8!e , 误差扩大了4万倍。因而该算法不是稳定的。

如果递推式改为,由I7=0.1124,逐步计算I6 ,I5 ,…

直到I0=0.6321。计算结果有四位有效数字,如果I7有误差e, 其传播到I0所引起的误差仅为

。故该算法是稳定的。

绪论与误差

1 误差和误差限

x*-ε*≤x ≤x*+ε*或 x = x* ±ε* ε*误差限

2 相对误差和相对误差限

3 有效数字

1) 有效数字

x*=±10m(a1+a2×10-1+ … + an×10-n+1) 其中ai(i=1,…,n)是0到9中的一个数字,a1≠0,m为整数,且 |e*|=|x*-x|≤ε=0.5×10m-n+1

2) 设近似值x*=±0.a1a2 …an ×10m, 有n位有效数字, a1≠0,则其相对误差限

. 反之,若近似值的相对误差限为