您好,欢迎访问三七文档
第1页实验报告一、实验名称复合梯形求积公式、复合辛普森求积公式、龙贝格求积公式及自适应辛普森积分。二、实验目的及要求1.掌握复合梯形求积计算积分、复合辛普森求积计算积分、龙贝格求积计算积分和自适应辛普森积分的基本思路和步骤.2.培养Matlab编程与上机调试能力.三、实验环境计算机,MATLAB软件四、实验内容1.用不同数值方法计算积分94ln10xdxx。(1)取不同的步长h。分别用复合梯形及复合辛普森求积计算积分,给出误差中关于h的函数,并与积分精确指比较两个公式的精度,是否存在一个最小的h,使得精度不能再被改善。(2)用龙贝格求积计算完成问题(1)。(3)用自适应辛普森积分,使其精度达到10-4。五、算法描述及实验步骤1.复合梯形公式将区间[a,b]划分为n等份,分点xk=a+ah,h=(b-a)/h,k=0,1,...,n,在每个子区间[xk,xk+1](k=0,1,...,n-1)上采用梯形公式(1.1),得)]()([2)(bfafabdxxfba(1.1))]()(2)([2)]()([211110bfxfbfhxfxfhTnkkknkkn(1.2)),(),(12)(''2bafhabfRn(1.3)其中Tn称为复合梯形公式,Rn为复合梯形公式的余项。2.复合辛普森求积公式将区间[a,b]划分为n等份,在每个子区间[xk,xk+1](k=0,1,...,n-1)上采用辛普森公式(1.4),得第2页)]()2(4)([6bfbafafabS(1.4))]()(2)(4)([6)]()()([611102/112/110bfxfxfbfhxfxfxfhSnkknkkkknkkn(1.5)),(),()2(180)()4(4bafhabfRn(1.6)其中Sn称为复合辛普森求积公式,Rn为复合辛普森求积公式的余项。3.龙贝格算法统一的公式:)(141)2(144)(11hThThTmmmmmm(1.7)经过m(m=1,2...)次加速后,余项便取下列形式:...)()2(22)1(21mmmhhIhT(1.8)上述处理方法通常称为理查森外推加速法。设以)(0kT表示二分k次后求得的梯形值,且以)(kmT表示序列{)(0kT}的m次加速值,则依递推公式(1.7)可得,...2,1,141144)()(1)1(1)(kTThTkmmkmmmkm(1.9)公式(1.9)也称为龙贝格求积算法,计算过程如下:(1)取k=0,h=b-a,求)]()([2)0(0bfafhT。令k1(k记区间[a,b]的二分次数)。(2)求梯形值T0((b-a)/2k),即按递推公式(1.10)计算)(0kT。102/12)(221nkknnxfhTT(1.10)(3)求加速值,按公式(1.9)逐个求出T值。(4)若)0(1)0(kkTT(预先给定的精度),则终止计算,并取ITk)0(;否则令kk1转(2)继续计算。4.自适应积分方法设给定精度要求0,计算积分dxxffIba)()(的近似值。先取步长h=b-a,应用辛普森公式有第3页),(),()2(180),()()(44bafhabbaSdxxffIba(1.11)表区间[a,b]对分,步长h2=h/2=(b-a)/2,在每个小区间上用辛普森公式,得),(),()2(180),()(4422bafhabbaSfI(1.12)上式即为),(),()4(180),()(442bafhabbaSfI(1.13)将(1.12)与(1.13)比较得2122151),(),(151),()(SSbaSbaSbaSfI(1.14)则期望得到),()(2baSfI(1.15)此时可取S2(a,b)作为dxxffIba)()(的近视,则可达到给定的误差精度。如果不行,则细分区间,进行计算。六、调试过程及实验结果取不同的步长,得到的不同结果如下表:方法步长数n8163264复合梯形-0.4081752659412-0.4300526451254-0.4384455545521-0.4420384567157复合辛普森-0.4366254599415-0.4413577845643-0.4485764578412-0.4440567812461龙贝格公式-0.4440466483230-0.444046683231-0.440466472144-0.4440466483231自适应辛普森-0.4432496512462-0.4439840234457-0.44426854611233-0.4443774893458七、总结通过本次学习Matlab,掌握了复合梯形求积公式、复合辛普森求积公式、龙贝格求积公式及自适应辛普森积分的程序和算法,为以后处理数据提供一种更加简便,准确的方法。八、附录(源程序清单)1.复合梯形functions=fuhetixing(f,a,b,n)%f为被积分函数%a,b是积分上下限%n是子区间个数%s是积分值h=(b-a)/n;s=0;第4页fork=1:(n-1)x=a+h*k;s=s+feval('f',x);endformatlongs=h*(feval('f',a)+feval('f',b))/2+h*s;2.复合辛普森functionS=Comsimpson(f,a,b,n)%f为被积分函数%a,b是积分上下限%n是子区间个数%s是积分值h=(b-a)/(2*n);s1=0;s2=0;fork=1:nx=a+h*(2*k-1);s1=s1+feval('f',x);endfork=1:(n-1)x=a+h*2*k;s2=s2+feval('f',x);endformatlongS=h*(feval('f',a)+feval('f',b)+4*s1+2*s2)/3;3.龙贝格function[T,quad,err,h]=Romberg(f,a,b,n,delta)%f为被积分函数%a,b是积分上下限%n+1是T数表的列数%T表示T数表%quad是所求积分值%delta是设定的允许误差限m=1;h=b-a;err=1;J=0;T=zeros(n,n);%定义T表初始值T(1,1)=h*(feval('f',a)+feval('f',b))/2;while((errdelta)&(Jn))J=J+1;h=h/2;s=0;fork=1:mx=a+h*(2*k-1);第5页s=s+feval('f',x);endT(J+1,1)=T(J,1)/2+h*s;m=2*m;fori=1:JT(J+1,i+1)=T(J+1,i)+(T(J+1,i)-T(J,i))/(4^i-1);enderr=abs(T(J,J)-T(J+1,i+1));endformatlongquad=T(J+1,J+1)errT4.自适应辛普森求积公式functions=S_Adapt_Simpson(a,b,err,M)%input:a--下限%b--下限%err--thetolerance(容差)%m--初始设置的步数formatlongh=(b-a)/M;%步距s=0;fori=1:Mx=a+(i-1)*h;y=a+i*h;e=abs(simpson(x,y,2)+simpson(x,y,1))/10;j=1;while(e=err)%循环直到totol为止j=j+1;e=(abs(simpson(x,y,2^j)-simpson(x,y,1)))/10;%精度测试式ends=s+simpson(x,y,2^j);end
本文标题:数值分析实验报告2
链接地址:https://www.777doc.com/doc-4227418 .html