[说明]数值分析例题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

绪论:
例 已知142.31=x ,141.32=x 作为π=3.141592…的近似值,试分别求出它们有效数字的位数及相对误差限
解:(1)π-1x <3.142-3.14159=0.00041<0.5×10-3
3.142=0.3142×101
,1-n =-3,∴n =4
∴3.142有4位有效数字
%013.0142
.300041
.01
1
1==
=
x r
x εε
(2)π-2x <0.000593<0.5×10
-2
∴1-n=-2 ∴n=3
∴3.141有3位有效数字
∴当3.141作为π的近似数时有3位有
效数字,不具有4位有效数字,3.14有效,千分位1不是有效数字。

练习 已知x 1=2.71,x 2=2.72,x 3=2.7181作为e =2.71828…的近似值,求这3个近似数的有效数字的位数。

(n =2, 3, 4 )
推论1 对于给出的一个有效数,其绝对误差限不大于其末位数字的半个单位。

推论2 若近似值x=± 0.a 1a 2…a n *10m (其中a 1≠0) 具有n 位有效数字,则其相对误
差*
r e ≤)1(2110
*1--n a 。

证明:∵x=±0. a 1…a n *10m ∴| x |≥a 1*10m-1
又x 具有n 位有效数字,则| x- x *
|≤n
m -10*2
1
| e * r |=
)1(1
1121
**10*2110*10*----=≤-n m n m a a x x x
∴n 越大,|e * r |就越小,一般应用中取r ε=)1(1
10*21
--n α
例1:求6的近似值,使其相对误差不超过
310*2
1
-。

解:6=2.4494……取1α=2,设x *
=6有n 位有效数字,由推论2,
r ε=
)1(1
10*21
--n α≤310*21-,∴n=4,取x *=2.449
%019.0141
.3000593
.022
2===x r
x εε
练习:要使20的近似值相对误差不超过0.1%,则至少要求几位有效数字?
解:设x *=20,其近似数x 具有n 位有效数字,其相对误差限满足
r ε=
)1(1
10*21
--n α≤0.1%⇒n ≥3.097 ∴n=4
例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+768
4.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
+(β
α+)x+109
=0的根,求根公式x=a
ac
b b 242-±-,α=-109 ,β=-1
b=βα+=-0.1*1010-0.0000000001*1010=-0.1*1010(设为八位机运算)
b 2
-4ac=1018
-4*1*109
=0.1*1019
=1018
⇒ x 1,2=
2101099±⎩⎨⎧=010
9
换一种算法 ⎪⎪⎩⎪⎪⎨⎧=-=+a c
x x a
b x x 2121 ⇒⎪⎪⎩⎪⎪⎨⎧====---=110101024)sgn(99
1
2921ax c x a ac b b b x
注意:(1)大量运算时,i ε∑可能很大。

(举例,如高考估分)
(2)两个相差很大的数进行加减时,要防止大数“吃”小数现象,在多个数求和时,
如果被加数的绝对值之间差异较大,且包含许多绝对值较小的数,则应按绝对值从小到大的次序相加。

(3)要避免两个相近数相减
例:cos20=0.9994,但1-cos20
=0.0006却只有一位有效数字……,遗失有效位。

为避免这种情况,改变计算公式
2
s i n
2c o s 12
α
α=-
1
11++=
--x x x x (当x 很大)
sin(x+ε)-sinx=2cos(x+2ε
)sin 2
ε
lnx 1- lnx 2= ln
2
1
x x (当x 与x 2接近时)
4.2 y=a*x (a 为常数) 易知| *
y e |=| a**x
e |≤|a|*x ε,若a 增大,则| *
y e | 也增大
(4)避免小数作除数和大数作乘数
(5)尽量简化计算步骤,减少运算次数。

例如,如果直接计算x 255 的值须进行254次乘法运算若采用公式
x 255=x* x 2* x 4* x 8* x 16* x 32* x 64* x 128,只需做14次乘法运算
(6)注意运算次序
例 计算0135
.0*0125.0*0003.00012
.0*0143.0*0005.0=D
解 算法一:
)( 009 000 000.00012.0*0143.0*0005.0有舍入≈== A )( 051 000 000.00135.0*0125.0*0003.0有舍入≈== B
D 1 =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
D 2 = abc = … = 0.169 482, 则D 1 精确到小数后五位
例 计算 ⎰=-1
01dx e x e I x
n n (n= 0, 1, 2, 3…),
解 用分部积分公式得递推式:
1011 ,1---=-=e I nI I n n 。

用四位有效数字计算: I 0 = 0.6321,
.10103679
I I =-=, .211202642I I =-=,
.321302074I I =-=, .431401704I I =-=,
.541501480I I =-=, .651601120
I I =-=,
.761702160
I I =-=,
.871807280
I I =-=-.
估算I n
11
1
0101min +=>-≤≤-⎰n e dx x e e I n x x n 11101
01ma x +=<⎰≤≤-n dx x e e I n x x n
故1
1
101+<
<+<-n I n e n
,.70046001250I <<,
..80040901111I <<。

于是I 7,I 8与精确值已经面目全非,一位有效数字也没有。

这是由于如果I 0有误差
.40510e -=⨯,
(3679.07k ,!
)1(!2)1()1(1121
≈=-++-+-+≈--e k e k
时,当
其截断误差
4
41
7105.01041!813679.0---⨯<⨯<≤-=e R , 1
70)17(7)()!
17()(++-+=x x f R ξ
不计中间再产生的舍入误差,该误差随着计算过程分别乘以2,3…7,8,到I 8时已经变成了
! 840320e e =,误差扩大了4万倍。

因而该算法不是稳定的。

如果换一种算法,将递推式改为)1(1
1n n I n
I -=
-,
取n = 9 , ∵
10
1
1091<<-I e ∴0684.0)10
101(211
9=+
≈-e I
由I 9,逐步计算I 8 , I 7 …直到I 0 = 0.6321,。

计算结果有四位有效数字,如果I 9有误差e ,
其传播到I 0所引起的误差仅为
e !
91。

故该算法是稳定的。

练习 序列{y n }满足递推关系y n = 10y n-1-1 (n=1,2,…),若y 0=41.12≈(3位有效数字),计算到y 10时误差有多大?这种算法是稳定的吗?
解 εε=⨯==-2
*0*0100.5)(y 41.1y
ε10100*
01*1≤-=-y y y y
ε100*0109*910*10101010≤-==-=-y y y y y y
由此递推关系每计算一次,其结果误差比上一次增长10倍,故算法是不稳定的。

例 证明方程1-x -sin x =0在区间[0,1]内有唯一实根,如果使用二分法求该区间内的根,且误差不超过0.5×10-4
,试问需要二分区间[0,1]多少次?
证明 令f (x )=1-x -sin x , ∵ f (0)=1>0,f (1)=-sin1<0 ∴ f (x )=1-x -sin x =0在[0,1]有根。


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

给定误差限 =0.5×10-4,有
7287.1312
ln 10ln 45.0ln 12ln ln )ln(=-+-=---≥
εa b k
故只要取n =14即可。

练习 证明方程e x +10x -2=0在区间[0,1]内有一个根,如果使用二分法求该区间内的根,且误差不超过10-6
,试问需要二分区间[0,1]多少次?
证明 令f (x )=e x +10x -2, ∵ f (0)=-1<0,f (1)=e+8> 0
∴ f (x )= e x +10x -2 =0在[0,1]有根。


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

给定误差限10-6
,有
12
ln 10
ln 612ln ln )ln(-=---≥
εa b k
只要取k =19次.
第一章
例 求过这三个点 (0,1),(1,2),(2,3)的拉格朗日插值多项式。

解: 1
3)
12)(02()
1)(0(2)21)(01()2)(0(1)20)(10()2)(1()(2+=⨯----+⨯----+⨯----=
x x x x x x x x P
此为一条直线,其原因在于(0,1),(1,2), (2,3)三点共线
注意2:
1
)(0
=∑=n
i i x l
例1 已知函数y =f (x )的观察数据为下表,试构造拉格朗日多项式
L n (x ), 并计算L(
解: 先构造基函数
84
)
5)(4()52)(42)(02()5)(4()(0---=--------=
x x x x x x x l
40)
5)(4)(2()50)(40))(2(0()5)(4)(2()(1--+=
------+=
x x x x x x x l 24
)
5)(2()54)(04)(24()5()2()(2-+-
=--+-+=
x x x x x x x l 35
)
4)(2()45)(05)(25()4)(0)(2()(3-+=
--+--+=
x x x x x x x l 所求三次多项式为
L 3(x )
35
)
4)(2(24)5)(2()3(40)5)(4)(2(84)5)(4(5-++
-+⨯----++--⨯
-=x x x x x x x x x x x x =
1+21
55
-141-42523x x x L 3(-1)=7
24
12155141425=++--
例2 已给sin0.32=0.314567,sin0.34=0.333487, sin0.36=0.352274, 用线性插值及抛物插值计算 sin0.3367 的值并估计截断误差。

解: 由题意取x 0=0.32, y 0=0.314567 , x 1=0.34 ,y 1=0.333487 , x 2=0.36 , y 2=0.352274 。

用线性插值及抛物插值计算,取 x 0=0.32 及 x 1=0.34 , 又由公式得
sin0.3367≈L 1(0.3367)= )x - (0.3367y 00*0
10
1x x y y --+
=0.01670.02
0.01892
0.314567*+ =0.330365 .
其截断误差得
)
)((2
)(102
1
x x M R x x x --≤
其中)(//
1
max 2
x f x
x x M ≤≤=
,因 f(x)=sinx ,f //(x)= -sinx ,
可取3335.0)(11
)(max 2
≤==
≤≤x Sin x Sin x
x x M ,于是
∣R 1(0.3367)∣=∣sin 0.3367 –L 1(0.3367)∣
≤1/2(0.3335)(0.0167)(0.0033)≤0.92⨯10–5

若取x 1=0.34,x 2=0.36为节点,则线性插值为
330387.0)0033.0(02
.0018787
.0333487.0)
3367.0(3367.01~
0.3367sin 1
1
2
1
21
)(=-+
=---+=≈x x x y y y L ,
其截断误差为))((2
)(~
212
1x x M
x x x R --≤

其中
3523
.0)(//
2
1
2max ≤≤≤=
x x
x x f M
于是
51036.1)0233.0)(0023.0)(3523.0(2
1
)
3367.0(1~
3367.0sin )3367.0(1~
-⨯≤≤-=L R
用抛物插值计算 sin0.3367时,可得
330374
.00008
.0105511.0352274.00004.01089.3333487.00008.0107689.0314567.0)
3367.0()
)(())(())(())(())((
)
)((3367.0sin 4
442120210221012012010210y =⨯-⨯
+⨯⨯+⨯⨯==----+----+----≈---L x x x x x x y x x x x x x y x x x x x x x x x x x x
这个结果与六位有效数字的正弦函数表完全一样,这说明查表时用二次插值精度已相
当高了。

其截断误差得
)
)()((6
|)(2103
1
|x x x x x x x M R ---≤
其中828
.0)(0cos ///
2
max 3<=≤≤=x x M f x
x x
于是
6
2
2
10178.0 )0233.0)(033.0)(0167.0)(828.0(61
)3367.0(3367.0sin )3367.0(L -⨯<≤-=R
练习:已知函数y =ln x 的函数表如下:
分别用Lagrange 线性插值和抛物线插值求ln 11.5 的近似值,并估计误差。

解 线性插值。

取两个节点110=x ,121=x ,插值基函数为
)12()(1010--=--=
x x x x x x l 11)(0
10
1-=--=x x x x x x l
由式(1-4)得
)11(4849.2)12(3979.2)(1-+--=x x x L
将5.11=x 代入,即得
4414.25.04849.25.03979.2)5.11(5.11ln 1=⨯+⨯=≈L
按式(1-12)得
)12)(11(!
2)(ln )(1x x x x R --''=
ξ
因为2
1
)(ln x x -
='',ξ在11与12之间,故
ξ
)(ln ''x =0082645.011
1
1
2
2
=≤
ξ
于是
311003306.15.05.00082645.02
1
)5.11(-⨯=⨯⨯⨯≤
R 抛物线插值。

取110=x ,121=x ,132=x ,插值多项式为
)
1213)(1113()
12)(11(5649
.2)
1312)(1112()
13)(11(4849.2)1311)(1211()13)(12(3979.2)(2----+
----+----=x x x x x x x L
)
12)(11(28245.1)13)(11(4849.2)13)(12(19895.1--+
-----=x x x x x x
所以
+-⨯⨯--⨯-⨯=≈)5.1(5.04849.2)5.1()5.0(19895.1)5.11(5.11ln 2L
442275
.2)5.0(5.028245.1=-⨯⨯ 因为32
)(ln x
x =
''',于是
2313
11101503.011
2
)(ln max -≤≤⨯=≤
'''x x 因此用抛物线插值计算的误差为
)135.11)(125.11)(115.11(!
3)(ln )5.11(2---'''=
ξ
x R
5
2103938.95
.15.05.0101503.06
1
--⨯=⨯⨯⨯⨯⨯≤
查表可得442347.25.11ln =。

例 给定函数
)(x f y =的函数表
写出函数
的差商表。

解 差商表如下:
练习:试列出f (x )=x 3
在节点x =0,2,3,5,6上的各阶差商值。

例 对上例的中的
)(x f ,求节点为10,x x 的一次插值多项式,节点为2
10,,x x x 的二次插值多项式和节点为
3210,,,x x x x 的三次插值多项式。

解 差商表如下:
由上例知
17
)(0=x f ,
8
],[10-=x x f ,
3
],,[210=x x x f ,
1],,,[4210=x x x x f ,于是有
x
x x N 81)2(817)(1--=+-=)
)(](,,[)](,[)()(1021001002x x x x x x x f x x x x f x f x N --+-+=1
23)2(381)(22--=++--=x x x x x x N )](,[)()(01001x x x x f x f x N -+=
8
5.95.25.2)3)(1(5.0)1(1]
()(22101010002+-=⨯--+⨯-+==∴x x x x x x f x N )
)()(](,,,[))(](,,[)](,[)()(21032101021001003x x x x x x x x x x f x x x x x x x f x x x x f x f x N ---+
--+-+=
1
44)1()2(123)
1()2()()(23223--+=-++--=-++=x x x x x x x x x x x x N x N
练习已知函数表(见下表),试用牛顿插值公式求)(2x N ,并计算
)5.1(f 的近似值。

解:列出差商表:
例. 求方程f(x)=0的根的尽可能好的近似值
解:分析如果直接运用插值公式,可以求得4次插值多项式。

从而可以得到一元4次
方程。

然而我们没有可靠的办法直接解高次方程。

因为函数y =f(x)单调连续,所以f(x)必存在反函数x =f -1(y)
利用已知函数值表可知
625
.0)5.1()5.1(2-==≈ N f
)
11)(1)(5)(10(0.000072 )1)(5)(10(0.001272)5)(10(012121.0)10(2.02)(4--+++-++-+++++-=y y y y y y y y y y y N 709250
.0)0()0(41≈≈=-N f x 特别注意:反插值只有在y = f (x )为单调函数才能使用。

例.已知函数表
求函数y =f(x)在[0,2]上零点的近似值
解:由于y i 是严格单调的,可用反插值求其零点。

可先求出插值多项式)(y x ϕ=,并令y =0
0.445
2
)
5.718)(818()
5.70)(80(1)185.7)(85.7()180)(80(0)188)(5.78()180)(5.70( )0())(())(())(())(())(()
)(()(2
12021012101200201021=⨯+---+-+⨯+---+-+⨯++++==----+----+----==ϕϕx x y y y y y y x y x y y y y y y y y x y y y y y y y y y x 练习.
求方程f(x)=0的根的尽可能好的近似值
解:利用函数值表
建立差商表
得到牛顿插值
)
11)(1)(5)(10(0.000072 )1)(5)(10(0.001272)5)(10(012121.0)10(2.02)(4--+++-++-+++++-=y y y y y y y y y y y N 709250
.0)0()0(41≈≈=-N f x
练习2 已知函数表
求函数y =f(x)在[0,2]上零点的近似值
解:由于y i 是严格单调的,可用反插值求其零点。

可先求出插值多项式)(y x ϕ=,并令y =0
0.445
2
)
5.718)(818()
5.70)(80(1)185.7)(85.7()180)(80(0)188)(5.78()180)(5.70( )0())(())(())(())(())(()
)(()(2
12021012101200201021=⨯+---+-+⨯+---+-+⨯++++==----+----+----==ϕϕx x y y y y y y x y x y y y y y y y y x y y y y y y y y y x 例. 给定函数y =f(x)的函数值表如下,已知该函数是一个多项式,试求其次数及x 的最高
幂的系数
解:构造差商表如下
由表知,函数的三阶差商均为1,故多项式的最高次数为3
由牛顿插值公式得
f (x)=-7+3(x -0)+3(x -0)(x -1)+(x -0)(x -1) (x -2)
=x 3+2x -7 故 x 3的系数为1
例 求一个次数不高于3
解:设P 2(x )满足 P 2(1)=2,P 2(2)=4,P 2(3)=12,则有
P 2(x )=3x 2
-7x +6
为求得P 3(x ),根据插值条件知,P 3(x )应具有下面的形式
P3(x)=P2(x)+k(x-1) (x-2) (x-3),这样的P3(x)自然满足:
P3(x i)= f (x i)
由P3’(2)=3
P3’(2)= P2’(2)+k[(2-2) (2-3)+ (2-1) (2-3)+ (2-1) (2-2)]
= P2’(2)-k = 3
∵P2’(2) = 5 ∴k = 2
∴P3(x)=P2(x)+2(x-1) (x-2) (x-3)
=2x3-9x2+15x-6
作业
1.
2. P55 11题
3. 证明方程e x+10x-2=0在区间[0,1]内有一个根,如果使用二分法求该区间内的根,且误差不超过10-6,试问需要二分区间[0,1]多少次?
4. 设x t=451.01为准确值,x a=451.023为x t 的近似值,试求出x a有效数字的位数及相对误差
练习用牛顿插值法求7的近似值
3
1432141214341101-=⎪⎭
⎫ ⎝⎛-⎪⎭⎫
⎝⎛-⎪⎭⎫ ⎝⎛-⎪⎭⎫ ⎝⎛
-=⎰dx x x A 第二章
例 试构造求积公式
)4
3
()41()(101
f A f A dx x f +≈⎰使其代数精度尽可能高,并证明构造出的求积公式是插值型的。

解:设原式对于f=1,f=x 精确,可列方程
⎪⎩⎪⎨⎧=+=+2
1434111010
A A A A ⇒21 1
0==A A 这样构造出的求积公式是)4
3
(21)41(21)(10f f dx x f +≈⎰
设43 , 4110==x x 易知拉格朗日插值基函数分别为23
2)(0+-=x x l ,2
12)(1-
=x x l
21
)(1
0=

dx x l 2
1)(101=⎰dx x l
故所求积公式是插值型的。

练习:用两种方法计算
试构造形如
)4
3
()21()41()(2101
f A f A f A dx x f ++≈⎰
的插值型求积公式,并指明该求
积公式所具有的代数精度。

解 按题设原式是插值型的,故有
同样,容易计算出 3
2
02=
=A A ,于是有求积公式
⎪⎭

⎝⎛+⎪⎭⎫ ⎝⎛-⎪⎭⎫ ⎝⎛≈⎰
433221314132)(1
f f f dx x f
由于原式含有3个节点,按定理1它至少有2阶精度。

考虑到其对称性,可以猜到它可能有3阶精度。

事实上,对于
3
)(x
x f =原式左右两端相等。

此外,容易验证原式对
4
)(x
x f =不准确,故所构造的求积公式确实有3阶精度。

特例:
①当n=1的牛顿-柯特斯公式为:梯形公式
32434121414321100=
⎪⎭
⎫ ⎝⎛-⎪⎭⎫ ⎝⎛-⎪⎭
⎫ ⎝⎛-⎪⎭⎫ ⎝⎛
-=⎰dx x x A
②当n=2 时 牛顿-柯特斯公式为:辛普森(Simpson)公式
③当n=4 时 牛顿-柯特斯公式为:柯特斯公式
[])(7)(32)(12)(32)(790
43210x f x f x f x f x f a
b C ++++-= 这里x k =a +k h (k =0,1,…,4), h =(b-a)/4
练习1 用n=6牛顿—柯特斯公式计算定积分
⎰+1
01x dx
的值(下列数据表作为参考)
解:h=(b-a)/n=1/6,x i =0+i/6=i/6
∑=-=n
i i n i
x f c a b I 0
)
()()(
6933.021
840416
51135932112809211110534311128097635984041=⨯
++⨯++⨯++⨯++⨯+⨯+=
练习2 分别利用梯形公式、Simpson 公式和柯特斯公式计算积分

1
dx e x 的值
解:(1)梯形公式
.
2
1
.
)(21)(21
)()
()()1(1)1(0
1
)1(==⎪⎭
⎫ ⎝⎛+-=-=∑=C C b f a f a b x f C a b k k k T .
6
4;61.)()2(4)(6)(61)2(64)(61)()
()()2(1)
2(2)
2(0
2
)2(===⎥⎦
⎤⎢⎣⎡+++-=⎥


⎢⎣⎡+++-=-=∑=C C C b f b a f a f a b b f b a f a f a b x f C a b k k k S 9
140 859.1][211
01
0=+≈⎰e e dx e x
⎰=1
)()(dx
x f f I (2)Simpson 公式
(2)柯特斯公式
73212327[9014
3
214101
++++≈⎰e e e e dx e x
练习3 当n =1,2,3时,分别用牛顿-柯特斯公式计算积分
⎰=1
0sin dx x
x
I 的值。

解: 取x x
x f sin )(=
当n =1时,9207354.0)8414709.01(2
1
)]1()0([21sin 10=+=+≈=⎰f f dx x x I
当n =2时,9461359.0)]1()21(4)0([61sin 1
0=++≈=
⎰f f f dx x x I
当n =3时,9461109.0)]1()3
2
(3)31(3)0([81sin 10=+++≈=⎰f f f f dx x x I
练习1 试检验下列求积公式的代数精度。

解 记
因为

==1
011)(dx f I 113
2131132)(~
=⨯+⨯-⨯=f I
⎰==1
02
1
)(xdx f I 21433221314132)(~=⨯+⨯-⨯=f I
⎰==10231)(dx x f I 3
116932413116132)(~
=⨯+⨯-⨯=f I
⎰=
=1
03
4
1
)(dx x f I
7188612.1]4[6
112
1
01
=++≈⎰e e e dx e x
⎪⎭
⎫ ⎝⎛+⎪⎭⎫ ⎝⎛-
⎪⎭⎫ ⎝⎛≈⎰
43322131
4132)(1
f f f dx x f ⎪

⎫ ⎝⎛+⎪⎭⎫ ⎝⎛-⎪⎭⎫ ⎝⎛=433221314132)(~
f f f f I
4
1642732813164132)(~
=⨯+⨯-⨯=f I
⎰=
=1
04
5
1
)(dx x f I
5
1433221314132)(~
4
4
4
≠⎪⎭⎫ ⎝⎛⨯+⎪⎭⎫ ⎝⎛⨯-⎪⎭⎫ ⎝⎛⨯=f I
当4
)(x
x f =时左右两端不等,故所给求积公式仅有三阶精度。

练习2:判别下列求积公式是否是插值型的,并指明其代数精度:
[])2()1(2
3
)(3
f f dx x f +≈⎰
解 这里关于拉格朗日插值基函数)(),(10
x l x l 直接求积知
23
)()(3
013
00=≈⎰⎰dx x l dx x l
因此所给求积公式是插值型的。

按定理1,含有2个节点的求积公式至少有1阶精度。

再考察2
)(x x f =,原式
左端9=,而右端)41(2
3
+=,左右两端不相等。

因此所给求积公式仅有1阶精度。

例 取9个等距节点(包括区间端点)分别用复化梯形公式和复化辛甫生公式求积分⎰+1
02
14x dx
的近似值(取6位小数)
解:易知125.08
1
==
h 列表如下
对复化梯形公式
223818
.50)(2872101=++++=∑f f f f f 138989.321411
02=∑≈+⎰h x dx
对复化辛甫生公式
389224.7542424248765432102=++++++++=∑f f f f f f f f f
练习 利用n =5的复化辛甫生公式计算积分⎰+=
1
01x dx
I 的近似值.
分析:n =5,需要2×5+1=11个点的函数值,h=(1-0)/5=1/5,
然后计算。

解: 区间长度为b-a=1, n =5,h=1/5=0.2
所需节点x k =0+k h (k =0,1,…,5),在每个小区间[x k-1, x k ]中还要计算
]
)(4)(2)()([61
02
111∑∑-=+-=+++=n k k n k k n x f x f b f a f h
S 69315
.0]1
11
)9.0117.0115.0113.0111.011(4)8
.011
6.0114.0112.011(2011[5161=+++++++++++⨯++++++++⨯++⨯⨯=
∴ S 5
例. 依次利用n =8的复化梯形公式和n =4时的复化辛甫生公式计算定积分
dx x x
I ⎰
=1
0sin ,已知函数x
x x f sin )(= 的数据如下表
)
51,2,k ( =+=-+
-h x x
k k 2
1
12
1
1141593.362142
1
02=∑≈+⎰h x dx
解 :
]
)(2)()([2)(1
1
∑⎰
-=++=≈n k k b
a
n x f b f a f h
T dx x f
9456909
.0]
)(2)1()0([161
1
1
8=++=∴∑-=n k k x f f f T ]
)(2)(4)()([6)(1
1102
1∑∑⎰
-=-=++++=≈n k k n k k n b
a
x f x f b f a f h
S dx x f ∴ ])(2)(4)1()0([241
3
1302
14∑∑==++++=
k k k k x f x f f f S
9460832.0]
)]4
3
()42()41([2)]8
7
()85()83()81([4)1()0([241]
)(2)(4)1()0([241
3
0302
14=++++
+++++=
+++=∑∑==+ f f f f f f f f f x f x f f f S k k k k 小结:判断一种算法的优劣,计算量是一个重要的因素。

由于在求)(x f 的函数值时,通常要做许多加减乘除四则运算,因此在统计求积公式∑k
k
k
x f A )(的计算时只要统计求函
数值)(x f 的次数
用复化求积法。

取8=n 用梯形公式(18)求得9456909
.08
=T
再取4=n 用复化公式辛甫生公式(19),又得9460832
.04=S
比较上面两个结果,它们都要提供9个点的函数值,工作量基本相同,然而精度却差别很大,同积分的准确值0.9460831比较,复化梯形方法的结果8T 有两位有效数字,而复化辛甫生公式的结果4S 却有六位有效数字。

复化辛甫生公式是一种常用的数值求积方法。

为了便于编写程序,可将求积公式(19)
事先改写成下列形式
⎪⎭

⎬⎫⎪⎩⎪⎨⎧⎥⎦⎤⎢⎣⎡++-=∑-=+1
021)(2)(4)()(6n k k k n x f x f a f b f h S
例. 用变步长梯形公式计算定积分dx x
x
I ⎰
=1
0sin .
解:我们先对整个区间[0,1]使用梯形公式.对于函数x
x
x f sin )(=
,有1)0(=f ,而
8414709.0)1(=f ,据梯形公式计算得:9207355
.0)]1()0([2
11=+-=f f T
然后再计算中点的函数值9588510.0)2
1
(=f ,从而据
)(2211
02
12∑-=++=n k k n n x f h T T 有9397933.0)21(212112=+=f T T .以此类推
9445135.0)]4
3
()41([412124=++=f f T T …
这样不断二分下去,二分10次可以得到比较精确的值0.9460381.
练习:用变步长梯形公式计算积分⎰+=
1
02
12x dx I ,要求2
1105.0-+⨯≤-k k T T
解:设2
12
)(x x f +=
,应用变步长梯形公式有
5695.1)]875.012625.012375.012125.012(415656.1[21)]
87()85()83()81([81215656
.1)]75.01225.012(2155.1[21)]75.0()25.0([412155.1)5.0125.1(21)5.0(21215.1)112
012(21)]1()0([2012222482
2242
12221≈++++++++=++++=≈++++=++==++=+==+++=+-=
f f f f T T f f T T f T T f f T ∵2
48105.00039.0-⨯≤=-T T
∴取
5695
.1≈I
第三章
例1 求解初值问题
解 为便于进行比较,本章将多种差分方法求解上述初值问题。

这里先用欧拉方法。

求解方程(3-8)的欧拉格式具有形式
取步长1.0=h ,计算结果见下表。

例2 用欧拉方法计算初值问题

⎨⎧=+='0)0(1002
2y y x y 的解函数)(x y 在x = 0.3时的近似值。

(取步长h =0.1,小数点后至少保留4位)
解:欧拉格式为:
)
100(1.0)100(2
2221n n n n n n n y x y y x h y y +⨯+=++=+由

= 0)0(y
0000.0)1.0(1=≈y y
0010.01.01.0)2.0(22=⨯=≈y y
0050.0)0010.01002.0(1.0)3.0(2223=⨯+⨯+=≈y y y
⎪⎩


⎧=<<-='1)0()
10(2y x y x y y ⎪
⎪⎭⎫

⎛-+=+n n n n n y x y h y y 21
练习:用梯形格式求解初值问题⎩
⎨⎧=≤≤-='2)1(2)
x (1 , 38y y y ,取步长h =0.2,小数
点后至少保留五位
解:梯形格式为
)],(),([2111+++++
=n n n n n n y x f y x f h
y y ,于是
1316137 , ]3838[2
2
.0111+
=⇒
-+-+=+++n n n n n n y y y y y y
由2)1(0==y y 计算得
63649
.2)0.2(61062.2)8.1(56258.2)6.1(47337.2)4.1(30769.2)2.1(54321=≈=≈=≈=≈=≈y y y y y y y y y y
思考题
对初值问题

⎨⎧==+'1)0(0y y y
试证明用梯形格式所求得的近似解为: )(
n
n h
h y +-=22 (其中h 为步长)
证明:梯形格式为
)],(),([2
111+++++
=n n n n n n y x f y x f h
y y ,于是
)(2
11++--+
=n n n n y y h
y y ⇒ 011)22(222
121y h h y h h y h h
y n n n n ⋅+-=⋅+-=⋅+-
=++ 而1)0(0
==y y ,故得
)(n
n h
h y +-=22
例 用欧拉预-校格式求初值问题⎩
⎨⎧==++'1)1(0
sin 2y x y y y ,要求取步长h =0.2
试计算y(1.2)及y(1.4)的近似值(小数点后至少保留五位)
解:⎪⎩⎪⎨⎧++=+=++++)],(),([2
)
,(1111n n n n n n n n n n y x f y x f h
y y y x hf y y
于是有
⎪⎩⎪
⎨⎧+++-=+-=+++++)
sin sin (1.0)sin (2.012112
121n n n n n n n n n n n n n x y y x y y y y x y y y y 由1)1(0==y y 计算得
⎩⎨
⎧=≈=715488.0)2.1(63171
.011y y y ⎩⎨
⎧=≈=52611
.0)4.1(47696
.022y y y 练习 用欧拉预-校格式求初值问题⎪⎩⎪⎨⎧=≤<+-='
)0(,1212
y t
ty y 2t 0 ,要求取步长h =0.5,计算结果保留6位小数。

解: ⎪⎩⎪⎨⎧=++=+=++++ ,2,1,0)],(),([2
),(1111n y t f y t f h y y y t hf y y n n n n n n n n n n 将h =0.5,2121),(t
ty
y t f +-=代入,于是有
⎪⎪⎩
⎪⎪⎨
⎧+-+-⨯+=+-+=+++++)111(5.0)15.0(12112121n n n n n n n n n n n n n y t t y t t y y y t t y y
由00=y 计算得
练习 试写出欧拉预报-校正格式。

⎪⎩
⎪⎨
⎧++=+=++++)]
,(),([2
)
,(1111n n n n n n n n n n y x f y x f h y y y x hf y y 校正预报
练习 试写出欧拉预报-校正格式。

000
400.0)5.0( , 000 500.011=≈=y y y 000
635.0)0.1( , 000 740.022=≈=y y y 596
787.0)5.1( , 500 817.033=≈=y y y 025
921.0)0.2( , 090 924.044=≈=y y y ⎪⎩
⎪⎨⎧++=+=++++)]
,(),([2
)
,(1111n n n n n n n n n n y x f y x f h
y y y x hf y y 校正预报
第四章
例 用方程的迭代解法求方程
01=-x
xe 的一正根,要求根的
近似值
*x 稳定至小数点后5位。

解:设
1)(-=x xe x f ∵01)1(1)0(>-=-=e f f ,

0)(=x f 在区间[0,1]上有根
] [0,x ∞+∈>+='0)(x
x xe e x f

0)(=x f 在区间[0,1]上有唯一实根
取5.00=x ,将01=-x
xe 改写成 x e x -=,建立迭代公式
) 2, 1, 0,(k ==-+k x k e x 1 进行迭代:
, , , , 56714.056715.060653.05.016171510=====x x x x x ∴根的近似值为
*x ≈0.56714
练习 用方程的迭代解法求方程
01)(3
=--=x x x f 在5.10=x 附
近的一根*
x 。

如建立
311+=+k k x x 的迭代公式,其迭代过程是收敛的。

32472.187==x x
如建立131-=+k k x x (5.10=x )的迭代公式,则有
375.21=x 39.122=x … k x 会越来越大,不可能趋于某个极限。

这种不
收敛的迭代过程称作是发散的,纵使进行了千百次迭代,其结果也是毫无价值。

例. 用不同的迭代公式求方程
032
=-x 的正根(3*=x )
解 设
3)(2-=x x f ,可以将0)(=x f 改写成不同的等价式)(x x
ϕ=,由此可构
成不同的迭代式。

(1)3)(2
-+=x x x ϕ , 3
21-+=+k k k x x x
∵ 1132)3()(*
>+='='ϕϕx
(2)x
x 3
)(=ϕ,
k k x x 31=+,23)(x
x -='ϕ,
1)3()(*-='='ϕϕx
(3))3(4
1)(2
--=x x x ϕ,)3(4121--=+k k
k x x x ,
x x 211)(-
='ϕ,
1134.02
31)3()(*
<≈-='='ϕϕx
(4)
))3(21)(x
3x (2x +=+=x x x ϕ,)3(211k k k x x x +=+,
)3
1(21)(2x
x -=
'ϕ,0)3()(*='='ϕϕx
很明显,迭代法(1)、(2)不满足1|)(<≤'q x ϕ|的条件,其迭代法发散;迭代法(3)、(4)满足1|)(<≤'q x ϕ|的条件,均局部收敛,且(4)比(3)收敛得快。

练习 设)5()(2
-+=x x x αϕ,要使迭代过程
x n +1
=ϕ(x n
)局部收敛到
5*
=x ,求α取值范围。


x
x *21)(αϕ+='
由在根5*
=x 邻域具有局部收敛时,收敛条件
1|521||)(|*<+='αϕx ⇒
例 用牛顿迭代法求方程x x =10的一个实根,精度要求ε=10-6
解:原方程同解变形为x lg x -1=0,令f (x )=x lg x -1
5
5<<-α
∵f (2)=2lg2-1<0,f (3)=3lg3-1>0,∴f (2)﹡f (3)<0
∴f (x )=x lg x -1=0的根区间为(2,3)。


lge lg(x)(x)f +='>0 x ∈(2,3)
注意( log a x )’=1 / (xlna )
0lg )(>=
''x
e
x f ,并且f (3)与)(x f ''同号
∴牛顿迭代法收敛.
∴取x 0
=3,计算)()
(1
k k k k x f x f x x '-=+,得
x 1=2.526710,x 2=2.506228,x 3=x 4=2.506184
最后取实根x *=2.506184
练习 讨论用牛顿迭代法求解 013=--x x 在5.1=x 附近的收敛性,若收敛,
用牛顿迭代法求其解。

要求
5
110-+<-k k x x
答案 ∴取
957 717 1.324≈*
x 。

例. 用单点弦截法解方程
01)(=-=x xe x f ,要求51105.0-+⨯≤-k k x x 。

解:0)5.0(<f ,0)6.0(>f 易知根区间为[0.5,0.6]
0)1()(≠+='x e x f x ,0
)2()(>+=''x e x f x
0)5.0()5.0(<''f f 0)6.0()6.0(>''f f
所以取(0.6,
)6.0(f )为不动点,即取x 0
=0.6,x 1
=0.5,代入下式
)
()()
()(0001x f x f x f x x f x x k k k k --=
+ 得x 2
=0.565 32,x 3
=0.56709
经5次迭代后得到x 4
=x 5
=0.56714,满足条件5
1105.0-+⨯≤-k
k x x
∴取56714.0≈x 。

例. 用双点弦截法求方程x 3-x 2-1=0,在x =1.5附近的根.计算中保留5位小数点.
解 f (x )= x 3-x 2-1,f (1)=-1,f (2)=3,有根区间取[1,2].
取x 0=1, x 1=2 ,
023)(2≠-='x x x f (]2,1[∈x )
迭代公式为
)()
()()
(1-1-1+---
=n n n n n n n x x x f x f x f x x (n =1,2,…)
251≈1⨯43
-2=-+--1---=012
302131213112.)(x x x x x x x x x x ≈2-251⨯2
+2-251-2511
-251-251-251=2
323233).(.....x 1.37662
≈251-376621⨯251+251-376621-3766211
-376621-376621-376621=2
32
32
34)..(.......x 148881
≈376621-488811⨯376621+376621-488811-4888111
-488811-488811-
488811=2
3232
35)..(.......x 146348
≈488811-463481⨯488811+488811-463481-4634811
-463481-463481-463481=2
3232
36)..(.......x 1.46553
取≈*
x 1.46553,f (1.46553) -0.000145
练习.用单点弦截法解方程
01)(=-=x xe x f ,要求51105.0-+⨯≤-k k x x 。

(x 4=x 5=0.56714,过程略)
第五、六章
例1 解线性方程组
⎪⎩⎪
⎨⎧=+=++=+-7245241
3221
321321 x x x x x x x x 解:方程的系数矩阵的增广矩阵为
⎥⎥⎥

⎤⎢⎢⎢⎣⎡--⇒⎥⎥



⎢⎢⎢⎣⎡--⇒⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⇒⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⇒61910001000125.55.075.0875.00025.010375.101 6.520.5 1.5-2.501-40 1.50.5-1741 021524
31-2A ∴ x T =( 9,-1,-6 )
例2 解线性方程组
⎪⎩

⎨⎧-=-+-=+-=++15
3181533126321321321x x x x x x x x x (6-3)
解 先消去方程组(6-3)中后两个方程中的变量
1x ,得同解方程组
⎪⎩


⎧=+-=+-=++93
1721579156
3232321x x x x x x x (6-4)
再消去方程组(6-4)中第三个方程中的变量
2x ,又得(6-3)的同解方程组
⎪⎪⎩
⎪⎪⎨⎧=-=--=++5
6652257
9156332321x x x x x x 这是一个三角形方程组。

由(6-5)容易解出。

例. 用高斯消元法解线性方程组
⎪⎩⎪
⎨⎧1
-=4+2+4=+2+31-=4++2321
321321x x x x x x x x x
解:
1
,2,3123===x x x
⎥⎥⎥

⎤⎢⎢⎢⎣⎡---−−−→−⎥⎥⎥

⎤⎢⎢⎢⎣⎡---−−−→−⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--=-⋅+-⋅+-⋅+1717005.555.0014125.025.105.555.00141
2142141231412][)
5
.05
.1()
2
1
()
23
(231312r r r r r r b A
于是有同解方程组
⎪⎩

⎨⎧-==--=++17175.555.0142332321x x x x x x 回代得解
x 3=-1,x 2=1,x 1=1,原线性方程组的解为X =(1,1,-1)T
.
练习. 用高斯消元法解线性方程组 ⎪⎩⎪⎨⎧-=++=++-=++3
422
232
42321
3
21321x x x x x x x x x
答案:原线性方程组的解为X =(1,0,-1)T
.
例 求解线性方程组
⎪⎩

⎨⎧=++=++=++96
.05.696.00.5020.036.05.40.20
.61.31.15.0321321321x x x x x x x x x (6-12)
式中所有系数均有2位有效数字。

解: 为减小误差,计算过程中保留3位有效数字。

按Gauss 消去法步骤,第一次消元得同解方程组
⎪⎩

⎨⎧-=---=-=++0.595.240.100.240.12100.00
.61.31.15.03232321x x x x x x x
第二次消元得
⎪⎩

⎨⎧-=--=-=++246012200.240.12100.00.61.31.15.0332321x x x x x x 回代得解
80.5,40.2,02.2123-===x x x
容易验证,方程组(6-12)的准确解为
00.2,00.1,
60.2321==-=x x x
显然两者相差很大。

但若在解方程组前,先把方程的次序交换一下,如把(6-12)改写成
⎪⎩

⎨⎧=++=++=++0
.61.31.15.0020.036.05.40.296.05.696.00.5321321321x x x x x x x x x (6-13)
再用Gauss 消去法求解,消元后得同解方程组
⎪⎩


⎧=-=+=++99.599.2364.024.212.496
.05.696.00.5332321x x x x x x 回代得解
60.2,
00.1,
00.2123-===x x x
与准确解相同。

例 用列主元素求解线性方程组
⎪⎩

⎨⎧-=-+-=+-=++153181533126321321321x x x x x x x x x
计算过程保留三位小数。

解 按列主元素法,求解过程如下:
⎥⎥⎥⎦
⎤⎢⎢⎢⎣⎡----1513181533126111
⎥⎥⎥⎦

⎢⎢⎢⎣⎡----−−−−−−→−6111153312151318第一行与第三行互换
⎥⎥⎥⎦
⎤⎢⎢⎢⎣⎡----−−−→−167.5944.0167.105333.210151318
第一次消元
⎥⎥⎥⎦
⎤⎢⎢⎢⎣⎡----−−−−→−5333.210167.5944.0167.10151318
三行互换
第二、
⎥⎥⎥⎦
⎤⎢⎢⎢⎣⎡---−−−→−428.9142.300167.5944.0167.10151318
第二次消元
由回代过程得解
000.1,000.2,001.3123===x x x
练习 用高斯列主消去法解线性方程组⎥⎥⎥


⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡---6745150710623321x x x
答案 1
10321=-==x x x
1 1 6.22.57 6.20052.5007-106.12.57 60.1-052.5007-10 2.56.17 52.5060.1-007-10647 5156230710674 5150710623123)251
(10
5)103
(2
332131
22
1=-==⇒⎥⎥⎥
⎦⎤⎢⎢⎢⎣⎡−−−→−⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡−−→−⎥⎥⎥⎦⎤
⎢⎢⎢⎣⎡−−−→−⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡---−−→−⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡---=--↔---↔x x x A r r r r r r r r r r 例4:用追赶法解三对角线方程组
⎪⎪⎩
⎪⎪⎨
⎧=+-=-+-=-+-=-12020212434323212
1x x x x x x x x x x 解:由三对角分解公式有
21111==a l
21111212-==l a u 而由―追‖公式有
12121-==a l
2321212212222=-=-=u l a l 2222323-==l a u 13232-==a l
3423323333=-=u l a l 43333434-==l a u 14343-==a l
4534434444=-=u l a l
最后,由―赶‖公式得原方程组的解
144==y x 143433=-=x u y x 132322=-=x u y x 121211=-=x u y x。

相关文档
最新文档