实验三 数值积分

更新时间:2023-11-17 19:26:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验名称:实验三数值积分指导教师:吴开腾 张莉

实验时数:2实验设备:安装了Matlab、C++、VF软件的计算机 实验日期:2015年10月 28日实验地点:第五教学楼北902 实验目的:

1. 掌握数值积分的基本思想和基本步骤。

2. 理解各类数值积分方法的优缺点,并能自行编程求解。

3. 比较各类数值积分的代数精度,体会复化、变步长及其加速的思想和实现步骤。

实验准备:

1. 在开始本实验之前,请回顾教科书的相关内容;

2. 需要一台准备安装Windows XPProfessional操作系统和装有数学软件的计算机。

实验内容及要求

A题 计算积分

I??exp(sinx?x2/100)dx。

???B题用Romberg法求函数积分I?

C题用复化梯形公式计算积分

sinx?0xdx,精度为0.5e?6。

1I??4dx

01?x21并分析剖分区间数对误差的影响,取n?2,4,8,16,32,64,128,256,512,积分精确值

I???3.141592653?。

D题计算

?30152000udu。 28.1u?1200说明:实验过程应包括对问题的简要分析、求解方法、求解步骤、程序及其必要的图表等内容。

实验过程:

实验选题:A题 实验分析:

对于积分I??exp(sinx?x2/100)dx,而已学的积分公式中无法求无穷区间

???的积分,考虑积分是一个极限过程,对于区间(0,?)由于:

???0r0?0f(x)dx?lim?f(x)dx,

r??0r因此,取0?r0?r1?r2?????rn????,且rn??(n??),有

f(x)dx??f(x)dx??f(x)dx??????0r0r1rn?1rnf(x)dx????

等式的右端每个积分都是正常积分,可以用前面介绍方法求解,(我这里采用的Romberg法求解),终止准则:当

?rn?1rnf(x)dx??

时,停止计算。对于(??,0)是类似的,而(??,?)的积分可以分成两个区间(??,0)和(0,?)来计算。

对以上方法,编写为一个通用的Matlab程序:

程序名:myquad_inf 功能:将无穷限积分区间转化为求极限的方法计算 程序: function I=myquad_inf(fun,a,b,tol,ep) if nargin<5 ep=10^-5; %用于迭代终止准则的精度要求(默认值) end if nargin<4||isempty(tol) tol=10^-6;%用于正常积分的精度要求(默认值) end N=2;I=0; if isinf(a)==1 &&isinf(b)==1 I=myquad_inf(fun,-inf,0)+myquad_inf(fun,0,inf);%采用递归的方式 elseifisinf(b)==1 while 1 b=a+N; T=Romberg(fun,a,b,tol); I=I+T; if abs(T)

程序名:Romberg 功能:用Romberg法求积分 程序: function t=Romberg(fun,a,b,e)%Rom %Romberg法求函数的积分 %fname是被积函数,a是上限,b是下限,e为精度(默认1e-4) format short if nargin<4,e=1e-4; end i=1; j=1; h=b-a; T(i,1)=h/2*(feval(fun,a)+feval(fun,b)); T(i+1,1)=T(i,1)/2+sum(feval(fun,a+h/2:h:b-h/2+0.001*h))*h/2; T(i+1,j+1)=4^j*T(i+1,j)/(4^j-1)-T(i,j)/ (4^j-1); while abs(T(i+1,i+1)-T(i,i))>e i=i+1; h=h/2; T(i+1,1)=T(i,1)/2+sum(feval(fun,a+h/2:h:b-h/2+0.001*h))*h/2; for j=1:i T(i+1,j+1)=4^j*T(i+1,j)/(4^j-1)-T(i,j)/(4^j-1); end end t=T(i+1,j+1); 实验步骤:

Step1:编写通用Romberg积分公式函数程序,命名为Romberg以作备用 Step2:编写求无穷限积分的函数程序,命名为myquad_inf Step3: 在命令窗口输入f=@(x)exp(sin(x)-x.^2/100) Step4:在命令窗口输入myquad_inf(f,-inf,inf)

求解结果:

I= 22.4404

实验总结(由学生填写):通过这次实验,学会了求解无穷限积分的方法,并且学会了程序中,函数递归调用的编写方式。对各类数值积分公式的优缺点及应用都有了比较深的了解。

本文来源:https://www.bwwdw.com/article/su2v.html

Top