数值分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
华中科技大学
数值分析
姓名祝于高
学号T201389927
班级研究生院(717所)
2014年4月25日
实验4.1
实验目的:复化求积公式计算定积分
试验题目:数值计算下列各式右端定积分的近似值。
(1)3
22
1
ln 2ln 321
dx x -=--⎰; (2)12
1
41
dx x π=+⎰; (3)
10
2
3ln 3x dx =⎰; (4)2
21
x e xe dx =⎰;
实验要求:
(1)若用复化梯形公式、复化Simpson 公式和复化Gauss-Legendre I 型公
式做计算,要求绝对误差限为71
102
ε-=⨯,分别利用他们的余项对每种算法做出
步长的事前估计。
(2)分别用复化梯形公式、复化Simpson 公式和复化Gauss-Legendre I 型公式做计算。
(3)将计算结果与精确解做比较,并比较各种算法的计算量。
实验内容:
1.公式介绍
(1)复化梯形公式: []110(x )(x )2n n k k k h T f f -+==+∑=1
1(a)2(x )(b)2n k k h f f f -=⎡⎤++⎢⎥⎣⎦
∑;
余项:2''
(f)()12
n b a R h f η-=-
; (2)复化Simpson 公式:
1
1210
(x )4(x )(x )6n n k k k k h S f f f -++=⎡⎤=++⎣⎦∑
=11
1201(a)4(x )2(x )(b)6n n k k k k h f f f f --+==⎡⎤+++⎢⎥⎣⎦
∑∑; 余项:4(4)
(f)()()1802
n b a h R f η-=-
; (3)复化Gauss-Legendre I 型公式:
112120(x)(x (x 2n b
k k a
k h f dx f f -++=⎡⎤
≈++⎢⎥⎣⎦
∑⎰
;
余项:4
)4(4320
)())(h f b a f R n η-=
(; 该余项是这样分析的:
由Gauss 求积公式)()()(0
k b
a
n
k k x f A dx x f x ⎰∑=≈ρ得:
余项dx x x n f x f A dx x f x f b
a n n b
a
n
k k k )()()!22()()()()()(R 12)22(0
G ⎰⎰
∑++=+=-=ωρηρ 由于复化G-L 求积公式在每个子区间],[1+k k x x 上用2点G-L 求积公式:
)]3
1
22()3122([2)(111111
k k k k k k k k x x k k x x x x f x x x x f x x dx x f k k
-+++--+-≈
+++++⎰
+ 其余项为:dx x x x x f f R k k
x x G 2
1
20)4()()(!4)()(1--=⎰+η,其中kh a x k +=,h k a x k )1(1++=+。
可得)(4320
)()4(5
k G f h f R η=
,则: 4
)4(10)4(51
4320)()()(4320)()(h f b a f h f R f R k n k n k G n ηη-===∑∑-=-= 2.步长估计
利用公式7102
1
)(-⨯≤f R n ,令)(x f n 在区间上取最大,通过matlab 编程求得h 的估计值。 3.编程计算结果
(1)计算结果及误差:
分别对4题作复化Trapezoid 、Simpson 、Gauss_Legendre 计算,并计算计算值与精确值之间的误差,结果如下表:
(1)3
221
ln 2ln 32
dx -=-⎰计算结果表
(2)1
201
4
dx π
=⎰
计算结果表
(3)
1
2
3x dx =⎰计算结果表
(4)2
2
1
x e
xe dx =⎰计算结果表
由上表中的误差分析可知,利用题目所要求的复化求积公式运算的结果均在
绝对误差限71
102
ε-=⨯内,精度满足要求。
由各种算法的步长可知,在相同精度的情况下复化梯形公式的步长最小,比其它两个方法要小两个数量级(为-410),计算量最大,精度也是最低的;复化Simpson 公式和复化Gauss_LegendreI 公式,它们的步长基本上相差无几(在同一个数量级-210),但是Gauss_LegendreI 公式步长更大计算量更小,精度更却更高,。
4.附Matlab 程序
clear all ;
x=input('请输入函数:\n','s'); a=input('请输入积分下限:\n'); b=input('请输入积分上限:\n');
m=input('复化梯形输T ,复化Simpson 输S ,复化G-L 输G :\n','s'); if (m=='T') n=2; else
n=4; end
f=inline(sym(x)); y=diff(sym(x),n); g=inline(y);