实 验 报 告
课程名称: 《 数值计算方法 》 实验名称: 数值积分 实验类型: 验证性■综合性□设计性□ 实验室名称: 数学实验室 班级学号: 09072 学生姓名: 任课教师(教师签名): 成 绩: 实验日期: 2012年3月29日
一、实验目的及题目
实验目的:掌握利用复化辛普森公式和龙贝格方法计算积分,掌握复化辛普森公式以及
龙贝格方法的原理,熟悉matlab的操作。
南昌航空大学数学与信息科学学院实验报告
题目:利用复化辛普森公式和龙贝格方法计算下列积分:
1、?0e?0.5?x2dx
2、?2sin(cos2x)sin02xdx
二、实验原理、程序框图、程序代码等 实验原理:
1、复化求积公式
由于高阶插值的不稳定性,为了提高计算积分的精度,可把积分区间分为若干个小区间,
将I(f)写成这些小区间上的积分之和,然后对每一个小区间上的积分应用到辛普森公式,或柯特斯公式,并把每个小区间上的结果累加,所得到的求积公式就称为复化求积公式。
将求积区间作n等分,并记h?b?an,xi?a?ih(0?i?n),于是
n?1I(f)???k?0xk?1xkf(x)dx
并记
Ik(f)??xk?1xkf(x)dx
1.1复化辛普森公式 记xk?12?12(xk?xk?1),对每一个Ik(f)应用辛普森公式,得到复化辛普森公式
n?1n?1?h?Sn(f)??f(x0)?2?f(xk)?f(xn)?4?f(x1)?
k?6?k?1k?02?其截断误差为
I(f)?Sn(f)??()1802hhn?14?k?0f(4)(?k)
设f(x)?C4?a,b?,则
I(f)?Sn(f)??1180[f(3)(a)?f(3)h4(b)]()
2 1.2、复化柯斯特公式
第 1 页
南昌航空大学数学与信息科学学院实验报告
记xk?14?xk?14h,xk?12?xk?12h,xk?34?xk?34h,对每一个积分Ik(f)应用到柯斯特公
式,得到复化柯斯特公式
n?1Cn(f)??k?0?h?7f(x)?32f(x)?12f(x)?32f(x)?7f(x)?k113k?1?k?k?k?90?424?
其截断误差为
I(f)?Cn(f)??2(b?a)945f(6)h6(?)(),2??[a,b]
且当h适当小时,有
I(f)?Cn(f)???f945?2(5)(a)?f(5)h6(b)?(?2)
2、龙贝格求积公式
由复化柯斯特公式组合得到的计算积分I(f)的近似公式:
Rn(f)?6463C2n(f)?163Cn(f)
称为计算积分I(f)的龙贝格公式,其截断误差为O(h8)。这种加速方法称为龙贝格方法。
MATLAB程序如下:
1、复化辛普森公式
function xps(a,b,eps) %a,b为区间,eps为精度
n=0;Sd=0;
S=(Myfun(a)+Myfun(b))*(b-a)/2; while abs(Sd-S)>eps
Sd=S; n=n+1;
h=(b-a)/n; for i=1:n+1
x(i)=a+(i-1)*h;
end S1=Myfun(x(1))+Myfun(x(n+1)); S2=0; S3=0; for i=2:n
S2=S2+Myfun(x(i)); end
S2=2*S2; for i=1:n
S3=S3+Myfun((x(i)+x(i+1))/2);
第 2 页
南昌航空大学数学与信息科学学院实验报告
end
S3=4*S3;
S=(S1+S2+S3)*h/6;
end
fprintf('%.15f\\n',S);
function f=Myfun(x) % f=exp(-x^2); f=sin(cos(2*x)*(sin(x)^2));
2、龙贝格方法
function lbg(a,b,eps) %a,b为区间,eps为精度 Rd=0;
R=(b-a)/2*(f(a)+f(b)); N=0;
while abs(Rd-R)>eps Rd=R; N=N+1; for k=1:2 if k==1
n=N*2; else;
n=N; end
h=(b-a)/n; for i=1:n+1
x(i)=a+(i-1)*h; end C=0;
for i=1:n
C1=7*f(x(i))+32*f(x(i)+1/4*h)+12*f(x(i)+2/4*h)+32*f(x(i)+3/4*h)+7*f(x(i+1)); C=C+C1*h/90; end if k==1
R=C*64/63; else
R=R-C/63; end end end
fprintf('结果为: %.15f',R);
function y=f(x)
y=exp(-x^2); % y=sin(cos(2*x)*(sin(x)^2));
第 3 页
南昌航空大学数学与信息科学学院实验报告
三、实验过程中需要记录的实验数据表格
第一题:>> xps(0,0.5,0.0000001)
结果为: 0.461281071728228 >> lbg(0,0.5,0.0000001) 结果为: 0.461281006413932
第二题:>> xps(0,pi/2,0.0000001)
结果为: -0.347478139850496 >> lbg(0,pi/2,0.0000001) 结果为: -0.347478139727495
四、实验中存在的问题及解决方案
在编写程序结束运行时,经常出现未定义变量的错误。经过检查,发现程序代码编写的不规范,对象名,函数名因为失误输错导致前后不一致,语法书写格式不正确等情况导致这类情况发生。
五、心得体会
在实验中体会到编写程序需要仔细,熟悉matlab的使用以及matlab程序设计,熟悉并掌握复化辛普森公式的原理以及所设计的程序,以及龙贝格方法的原理以及所设计的程序。
第 4 页