数值分析例题 下载本文

绪论:

例 已知x1?3.142,x2?3.141作为?=3.141592…的近似值,试分别求出它们有效数字的位数及相对误差限

解:(1)x1??<3.142-3.14159=0.00041<0.5×10

-3

3.142=0.3142×10 ,1-n=-3,∴n=4

∴3.142有4位有效数字

1

?x1r??1x1?0.00041?0.013%

3.142-2

(2)x2??<0.000593<0.5×10

∴1-n=-2 ∴n=3

∴3.141有3位有效数字

?∴当3.141作为?的近似数时有3位有效

数字,不具有4位有效数字,3.14有效,千分位1不是有效数字。

练习 已知x1=2.71,x2=2.72,x3=2.7181作为e=2.71828…的近似值,求这3个近似数的有效数字的位数。 (n=2, 3, 4 )

推论1 对于给出的一个有效数,其绝对误差限不大于其末位数字的半个单位。

m

推论2 若近似值x=± 0.a1a2…an*10 (其中a1≠0) 具有n位有效数字,则其相对误1*差er≤2a1x2r0.000593???0.019% x23.141?2

*10?(n?1)。

m

m-1

*

证明:∵x=±0. a1…an*10 ∴| x |≥a1*10 1 又x具有n位有效数字,则| x- x|≤2*10m?n

| e* r |=

m?n1*10x*?x1?(n?1)2??*10 x*a1*10m?12a1 ∴n越大,|e* r |就越小,一般应用中取?r=例1:求6的近似值,使其相对误差不超过

1*10?(n?1) 2?11*10?3。 2*

解:6=2.4494……取?1=2,设x=6有n位有效数字,由推论2,

?r=

11*10?(n?1)≤*10?3,∴n=4,取x*=2.449 2?12练习:要使20的近似值相对误差不超过0.1%,则至少要求几位有效数字?

解:设x=20,其近似数x具有n位有效数字,其相对误差限满足

*

?r=

1*10?(n?1)≤0.1%?n≥3.097 ∴n=4 2?1例1 求有效数3.150950,15.426463, 568.3758, 7684.388之和。 解 ∑=……=8271.341 213 而这和的绝对误差限为

2*0.5*10-6+0.5*10-4+0.5*10-3 ≈0.5*10-3

∴∑应舍入成8271.341最末3位的计算没有意义,合理的做法是将小数位较多的各位数按小数位最少的位数多取1位作舍入处理,再相加

3.1510+15.4265+568.3758+7684.388=8271.3413 3*0.5*10-4+0.5*10-3=0.00065<0.5*10-2 和8271.3413舍入至小数后2位得 8271.34

例2:求x+(???2

?b?b2?4ac9

)x+10 =0的根,求根公式x=,?=-10 ,?=-1 2a9

10

10

10

b=???=-0.1*10-0.0000000001*10=-0.1*10(设为八位机运算)

109?109?109 ???b-4ac=10-4*1*10=0.1*10=10? x1,2=

20?2

18

9

19

18

??b?sgn(b)b2?4acb?9x?x??x??10?121???a2a换一种算法 ? ??

9c?x1x2??x?c?10?129?a??ax10?1注意:(1)大量运算时,??i可能很大。(举例,如高考估分)

(2)两个相差很大的数进行加减时,要防止大数“吃”小数现象,在多个数求和时,

如果被加数的绝对值之间差异较大,且包含许多绝对值较小的数,则应按绝对值从小到大的次序相加。

(3)要避免两个相近数相减

例:cos20=0.9994,但1-cos20=0.0006却只有一位有效数字……,遗失有效位。为避免这种情况,改变计算公式

21?co?s?2sin?2

x?x?1?1x?x?1(当x很大)

sin(x+?)-sinx=2cos(x+lnx1- lnx2= ln

??)sin 22x1(当x与x2接近时) x2*4.2 y=a*x (a为常数) 易知| e*y|=| a*ex|≤|a|*?x,若a增大,则| ey| 也增大

*(4)避免小数作除数和大数作乘数

(5)尽量简化计算步骤,减少运算次数。

例如,如果直接计算x255 的值须进行254次乘法运算若采用公式 x255=x* x2* x4* x8* x16* x32* x64* x128,只需做14次乘法运算 (6)注意运算次序 例 计算D?解 算法一:

0.0005*0.0143*0.0012

0.0003*0.0125*0.0135A?0.0005*0.0143*0.0012???0.000 000 009 (有舍入) B?0.0003*0.0125*0.0135???0.000 000 051 (有舍入)

D1 =A/B= 0.176 47

D的真值为0.169 481 48…,只精确到小数后一位 算法二:

a = 0.0005/0.0003≈1.666 667 b = 0.0143/0.0125=1.14400 c = 0.0012/0.0135≈0.088 889

D2 = abc = … = 0.169 482, 则D1 精确到小数后五位

?1nx例 计算 In?e?0xedx (n= 0, 1, 2, 3…),

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

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.2074I5?1?5I4?0.1480I7?1?7I6?0.2160I4?1?4I3?0.1704I6?1?6I5?0.1120, , .

I8?1?8I7??0.7280 估算In

e?111?1xnIn?emine?xdx? In?emaxe?xdx?

00n?1n?10?x?10?x?1?1x1ne?11?In?故0? n?1n?10.0409?I8?0.1111 0,0460?I7?0.1250,。

于是I7,I8与精确值已经面目全非,一位有效数字也没有。这是由于如果I0有误差

e?0.5?10?4,

2k(?1)(?1)?1???, 当k?7时,e?1?0.3679(e?1?(?1)?2!k!

其截断误差

f(7?1)(?)11?4?4(x?x0)7?1 R7?e?0.3679???10?0.5?10, R7?(7?1)!8!4?1不计中间再产生的舍入误差,该误差随着计算过程分别乘以2,3…7,8,到I8时已经变成了

8! e?40320 e,误差扩大了4万倍。因而该算法不是稳定的。

如果换一种算法,将递推式改为In?1?1(1?In), ne?11?I?取n = 9 , ∵91010其传播到I0所引起的误差仅为

11e?1)?0.0684 ∴I9?(?21010由I9,逐步计算I8 , I7 …直到I0 = 0.6321,。计算结果有四位有效数字,如果I9有误差e,

1e。故该算法是稳定的。 9!练习 序列{yn}满足递推关系yn = 10yn-1-1 (n=1,2,…),若y0=2?1.41(3位有效数字),计算到y10时误差有多大?这种算法是稳定的吗?

**-2解 y0?1.41 ?(y0)?0.5?10??

**y1?y1?10y0?y0?10?

***y10?y10?10y9?y9???1010y0?y0?1010?

由此递推关系每计算一次,其结果误差比上一次增长10倍,故算法是不稳定的。

例 证明方程1-x-sinx=0在区间[0,1]内有唯一实根,如果使用二分法求该区间内的根,

且误差不超过0.5×104,试问需要二分区间[0,1]多少次? 证明 令f(x)=1-x-sinx, ∵ f(0)=1>0,f(1)=-sin1<0

∴ f(x)=1-x-sinx=0在[0,1]有根。又

f?(x)= -1-cosx<0 (x?[0,1]),故f(x)=0在区间[0,1]内有唯一实根。

给定误差限?=0.5×104,有

k?ln(b?a)?ln??ln0.5?4ln10?1??1?13.2877

ln2ln2 故只要取n=14即可。

练习 证明方程ex+10x-2=0在区间[0,1]内有一个根,如果使用二分法求该区间内的根,

且误差不超过106,试问需要二分区间[0,1]多少次? 证明 令f(x)=ex+10x-2, ∵ f(0)=-1<0,f(1)=e+8> 0

∴ f(x)= ex+10x-2 =0在[0,1]有根。又

f?(x)= ex+10 >0(x?[0,1]),故f(x)=0在区间[0,1]内有唯一实根。

给定误差限106,有

k?ln(b?a)?ln?6ln10?1??1

ln2ln2只要取k=19次.

第一章

例 求过这三个点 (0,1),(1,2),(2,3)的拉格朗日插值多项式。 解: P2(x)?(x?1)(x?2)(x?0)(x?2)(x?0)(x?1)?1??2??3?x?1

(0?1)(0?2)(1?0)(1?2)(2?0)(2?1)此为一条直线,其原因在于(0,1),(1,2), (2,3)三点共线 注意2:

?l(x)?1

ii?0n例1 已知函数y=f(x)的观察数据为下表,试构造拉格朗日多项式

Ln (x), 并计算L(-1)。 xk yk

解: 先构造基函数

-2 5 0 1 4 -3 5 1 l0(x)?x(x?4)(x?5)x(x?4)(x?5)??

(?2?0)(?2?4)(?2?5)84(x?2)(x?4)(x?5)(x?2)(x?4)(x?5)?

(0?(?2))(0?4)(0?5)40(x?2)x(x?5)x(x?2)(x?5)??

(4?2)(4?0)(4?5)24

l1(x)?l2(x)?l3(x)?(x?2)(x?0)(x?4)x(x?2)(x?4)?

(5?2)(5?0)(5?4)35

所求三次多项式为

L3(x)

??5?=

x(x?4)(x?5)(x?2)(x?4)(x?5)x(x?2)(x?5)x(x?2)(x?4)??(?3)??84402435

??????x?x?x?? ??????L3(-1)=?515524 ???1?4214217