您好,欢迎访问三七文档
当前位置:首页 > 幼儿/小学教育 > 小学教育 > 实验二-数值方法计算积分
实验二数值方法计算积分学号:姓名:指导教师:实验目的1、了解并掌握matlab软件的基本编程、操作方法;2、初步了解matlab中的部分函数,熟悉循环语句的使用;3、通过上机进一步领悟用复合梯形、复合辛普森公式,以及用龙贝格求积方法计算积分的原理。一、用不同数值方法计算积分10xlnxdx=-94.(1)取不同的步长h.分别用复合梯形及辛普森求积计算积分,给出误差中关于h的函数,并与积分精确值比较两个公式的精度,是否存在一个最小的h,使得精度不能再被改善?(2)用龙贝格求积计算完成问题(1)。二、实现实验1、流程图:下图是龙贝格算法框图:开始读入a,b,ch=b-a,T1=h[f(a)+f(b)/2,k=1S=0,x=a+h/2S=S+f(x)x=x+hxb?YNT2=T1/2+hS/2S2=T2+(T2-T1)/3k=1?Yk=k+1,h=h/2T2=T1,S2=S1NC2=S2+(S2-S1)/15C2=C1YNR2=C2+(C2-C1)/63k=2?k=3?YR2=R1N│R2-R1│εεεNY输出R2结束2、算法:(1)复合梯形公式:Tn=)()([2bfafh211)](nkxkf;(2)复合辛普森公式:Sn=6h[f(a)+f(b)+211)](nkxkf+410)2/1(nkxf];以上两种算法都是将a-b之间分成多个小区间(n),则h=(b-a)/n,xk=a+kh,xk+1/2=a+(k+1/2)h,利用梯形求积根据两公式便可。(3)龙贝格算法:在指定区间内将步长依次二分的过程中运用如下公式1、Sn=34T2n-31Tn2、Cn=1516S2n-151Sn3、Rn=6364C2n-631Cn从而实现算法。3、程序设计(1)、复合梯形法:functiont=natrapz(fname,a,b,n)h=(b-a)/n;fa=feval(fname,a);fb=feval(fname,b);f=feval(fname,a+h:h:b-h+0.001*h);t=h*(0.5*(fa+fb)+sum(f));(2)、复合辛普森法:functiont=natrapz(fname,a,b,n)h=(b-a)/n;fa=feval(fname,a);fb=feval(fname,b);f1=feval(fname,a+h:h:b-h+0.001*h);f2=feval(fname,a+h/2:h:b-h+0.001*h);t=h/6*(fa+fb+2*sum(f1)+4*sum(f2));(3)龙贝格法:function[I,step]=Roberg(f,a,b,eps)if(nargin==3)eps=1.0e-4;end;M=1;tol=10;k=0;T=zeros(1,1);h=b-a;T(1,1)=(h/2)*(subs(sym(f),findsym(sym(f)),a)+subs(sym(f),findsym(sym(f)),b));whiletolepsk=k+1;h=h/2;Q=0;fori=1:Mx=a+h*(2*i-1);Q=Q+subs(sym(f),findsym(sym(f)),x);endT(k+1,1)=T(k,1)/2+h*Q;M=2*M;forj=1:kT(k+1,j+1)=T(k+1,j)+(T(k+1,j)-T(k,j))/(4^j-1);endtol=abs(T(k+1,j+1)-T(k,j));endI=T(k+1,k+1);step=k;4、实验结果;(1)复合梯形法(2)、复合辛普森法结果:(3)龙贝格法结果四.总结由结果(1)、(2)可知复合辛普森法求积分精度明显比复合梯形法求积的精度要高,且当步长取不同值时即n越大、h越小时,积分精度越高。实验结果说明不存在一个最小的h,使得精度不能再被改善。又两个相应的关于h的误差(余项)Rn(f)=-12abh2f’’(η);Rn(f)=-180ab(h/2)4f(4)(η),其中η属于a到b。可知h愈小,余项愈小,从而积分精度越高。
本文标题:实验二-数值方法计算积分
链接地址:https://www.777doc.com/doc-7251818 .html