您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 汽车理论 > 实验二 数值积分实验
实验二数值积分实验一.实验目的(1)熟悉数值积分与数值微分方法的基本思想,加深对数值积分与数值微分方法的理解。(2)熟悉Matlab编程环境,利用Matlab实现具体的数值积分与数值微分方法。二.实验要求用Matlab软件实现复化梯形方法、复化辛甫生方法、龙贝格方法和高斯公式的相应算法,并用实例在计算机上计算。三.实验内容1.实验题目已知xexfx4sin1)(的数据表分别编写用复化梯形法、复化辛甫生公法、龙贝格法、三点高斯法求积分10)(dxxfI近似值的计算机程序。2.设计思想1.复化Simpson公式:设计Simpson公式,即为设计含有3个节点(即为3阶精度)的Newton-Cotes公式。将区间划分为3等份,选取等分点作为求积节点构造求积公式,具有三阶精度的Simpson公式。将区间[a,b]划分为n等分,步长为h=(b-a)/n,等分点xi=a+i*h,i=0,1,2,3…。设计复化求积法,先用低阶求积公式求得每个子段上的积分值,然后再将它们累加求和,用各段积分之和作为所求积分的近似值。即设计出复化Simpson公式。2.复化梯形公式:将区间[a,b]划分为n等分,步长为h=(b-a)/n,等分点xi=a+i*h,i=0,1,2,3…。设计复化求积法,先用低阶求积公式求得每个子段上的积分值,然后再将它们累加求和,用各段积分之和作为所求积分的近似值。再根据梯形公式即可设计出复化梯形公式。3.Romberg公式:再加工Cotes值。将积分区间[a,b]划分为8等份,等分点xi=a+i*(b-a)/8,x0.000.250.500.751.00f(x)1.000001.655341.551521.066660.72159i=0,1,2…,8,则二分前后的Cotes值可求,再对求得的Cotes公式进行松弛,提高精度,设计出Romberg公式。4.三点Gauss公式:根据Newton-Cotes公式,但对求积节点自由选择,适当选取待定参数使公式具有高精度,即设计出Gauss公式。而设计出具有5阶精度即为3点Gauss公式。3.对应程序1.复化Simpson公式:Simpson.m:functionS=FSimpson(f,a,b,N)%f表示被积函数句柄%a,b表示被积区间[a,b]的端点%N表示区间个数%S用复化Simpson公式求得的积分值h=(b-a)/N;fa=feval(f,a);fb=feval(f,b);S=fa+fb;x=a;fori=1:Nx=x+h/2;fx=feval(f,x);S=S+4*fx;x=x+h/2;fx=feval(f,x);S=S+2*fx;endS=h*S/6;f1.m:functionf=f1(x)f=1+exp(-x)*sin(4*x);2.复化梯形公式:function[T,n]=fhtx(f,a,b,eps)%f表示被积函数句柄%a,b表示被积区间[a,b]的端点%eps表示精度%T是用变步长梯形法求得的积分值%n表示二分区间的次数h=b-a;fa=feval(f,a);fb=feval(f,b);T1=h*(fa+fb)/2;T2=T1/2+h*feval(f,a+h/2)/2;n=1;whileabs(T2-T1)=eps;h=h/2;T1=T2;S=0;x=a+h/2;whilexbfx=feval(f,x);S=S+fx;x=x+h;endT2=T1/2+S*h/2;n=n+1;endT=T2;f1.m:functionf=f1(x)f=1+exp(-x)*sin(4*x);3.Romberg公式:function[quad,R]=Romberg(f,a,b,eps)%f表示被积函数句柄%a,b表示积分区间[a,b]的端点%eps表示精度%quad是用Romberg算法求得的积分值%R表示Romberg表%err表示误差的估计h=b-a;R(1,1)=h*(feval(f,a)+feval(f,b))/2;M=1;J=0;err=1;whileerrepsJ=J+1;h=h/2;S=0;forp=1:Mx=a+h*(2*p-1);S=S+feval(f,x);endR(J+1,1)=R(J,1)/2+h*S;M=2*M;fork=1:JR(J+1,k+1)=R(J+1,k)+(R(J+1,k)-R(J,k))/(4^k-1);enderr=abs(R(J+1,J)-R(J+1,J+1));endquad=R(J+1,J+1);f1.m:functionf=f1(x)f=1+exp(-x)*sin(4*x);4.三点Gauss公式:functionG=TGauss(f,a,b)%f表示被积函数句柄%a,b表示被积区间[a,b]的端点%G是用三点Gauss公式求得的积分值x1=(a+b)/2-sqrt(3/5)*(b-a)/2;x2=(a+b)/2+sqrt(3/5)*(b-a)/2;G=(b-a)*(5*feval(f,x1)/9+8*feval(f,(a+b)/2)/9+5*feval(f,x2)/9)/2;f1.m:functionf=f1(x)f=1+exp(-x)*sin(4*x);4.实验结果1.复化Simpson公式:2.复化梯形公式:3.Romberg公式:4.三点Gauss公式:四.实验体会通过这次数值积分实验,我更加深入的掌握了复化Simpson公式、复化梯形公式、Romberg公式以及三点Gauss公式,知道了每种算法的关键设计要点,了解了每种算法设计的注意事项。并且更加熟练的应用matlab进行编程,同时对上述各种算法的精度有了很深刻的认识。对于每种算法的具体设计方法在前面已有详细记述,在此主要对比每种算法的精度。复化Simpson公式求积,区间越小,求得的精度越高,但整体的效果并不是太好,有待进一步改进。复化梯形公式求解积分效果较好,算法简单,但精度低,收敛速度慢,绝对误差较小,复合梯形公式的误差限的系数为-(b-a)/12,而且后面是h平方级还有f的二次导数,而辛普森的系数是-(b-a)/(180*16),后面h是四次方级的,f的导数为四次导数,显然辛普森的误差限更加小而复化梯形公式公式是对代数精度的方面有着更加好的结果。Romberg算法可以经过较少的计算就能达到很高的精度。三点Gauss公式求得的积分值比复化Simpson精度还高,求积节点的选取对数值求积精度的影响非常大。对于数值积分来说,选择合适的算法非常重要。
本文标题:实验二 数值积分实验
链接地址:https://www.777doc.com/doc-3377412 .html