您好,欢迎访问三七文档
当前位置:首页 > 幼儿/小学教育 > 小学教育 > MATLAB实现复化梯形公式-复化SIMPSON公式以及ROMBERG积分
(一)实验目的熟悉并掌握数值积分的方法,重要训练复化梯形公式,复化simpson公式以及romberg积分。(二)问题描述问题三数值积分椭圆周长的计算。考虑椭圆22221xyab,为计算其周长,只要计算其第一象限的长度即可.用参数方程可以表示为cos(0/2)sinxattybt,计算公式为/222220sincosatbtdt为计算方便,我们可以令1a,即计算下面的积分/22220sincostbtdt/22201(1)cosbtdt(/222220sincosatbtdt/22220sin()cosbattdta可以归结为上面的形式)采用复化梯形公式,复化Simpson公式以及Romberg积分的方法计算积分/2220()1(1)cosIbbtdt给出通用程序,该通用程序可以计算任何一个函数在任意一个区间在给定的精度下的数值积分。程序输出为计算出的数值积分值以及计算函数值的次数。(三)算法介绍首先利用给出的各迭代公式,设计程序。在matlab对话框中输入要计算的函数,给出区间和精度。复化梯形的迭代公式为:;复化simpson迭代公式为:;Romberg迭代公式为:。(四)程序对于复化梯形公式和复化simpson公式,我们放在jifenn.m中。(%标记后的程序可用来把b看为变量时的算法实现)%复化梯形公式functiony=jifenn(f,n,a,b)(说明:f表示任一函数,n精度,a,b为区间)fi=f(a)+f(b);h=(b-a)/n;d=1;%functionf=jifen(n,a,b,c)%symst%y=sqrt(1+(c^2-1)*cos(t)^2);%ya=subs(y,t,a);%yb=subs(y,t,b);%fi=ya+yb;fori=1:n-1x=a+i*h;fi=fi+2*f(x);d=d+1;%yx=subs(y,t,x);%fi=fi+2*yx;endf4=h/2*fi,d%复化simposon公式f1=0;f2=0;dd=1;fori=1:n-1dd=dd+1;ifrem(i,2)~=0;x1=a+i*h;f1=f1+f(x1);elserem(i,2)==0;x2=a+i*h;f2=f2+f(x2);endendf3=(h/3)*(f(a)+4*f1+2*f2+f(b)),dd对于romberg积分,建立romberg.m文件。functiony=romberg(f,n,a,b)(说明:f表示任一函数,n精度,a,b为区间)z=zeros(n,n);h=b-a;z(1,1)=(h/2)*(f(a)+f(b));f1=0;fori=2:nfork=1:2^(i-2)f1=f1+f(a+(k-0.5)*h);endz(i,1)=0.5*z(i-1,1)+0.5*h*f1;h=h/2;f1=0;forj=2:iz(i,j)=z(i,j-1)+(z(i,j-1)-z(i-1,j-1))/(4^(j-1)-1);endendz,n(五)运行结果对于复化梯形公式和复化simpson公式,我们运行下列语句并得到结果:fun=inline('sqrt(1+(0.5^2-1).*cos(t).^2)');jifenn(fun,8,0,pi/2)f4=1.2111d=8f3=1.2111dd=81.2111*4ans=4.84441.2111*4ans=4.8444(说明:在本题中将椭圆中的未知量a取为1,b取为0.5。f4为复化梯形公式得到的椭圆周长,f3为复化simpson公式得到的椭圆周长)。对于romberg,运行下列语句并最终得到结果为:fun=inline('sqrt(1+(0.5^2-1).*cos(t).^2)');romberg(fun,8,0,pi/0.5)z=3.141600000003.14163.14160000004.71245.23605.3756000004.83984.88234.85874.850500004.84424.84574.84324.84304.84290004.84424.84424.84414.84414.84424.8442004.84424.84424.84424.84424.84424.84424.844204.84424.84424.84424.84424.84424.84424.84424.8442ans=4.8442n=8(说明:其中最终结果为4.8442)。(六)结果分析我们计算了当椭圆长轴为1,短轴为0.5时的周长。通过上述三种方法的计算可以看到,结果相差不大。根据椭圆周长的一个计算公式我们可以得到L=4.283。因此三种方法都较好的接近真值。(七)心得体会应该熟练掌握这三种方法,才能在编程时正确快速的写出迭代公式。同时在一种思想的前提下可以寻找多种方法实现算法,互相验证。
本文标题:MATLAB实现复化梯形公式-复化SIMPSON公式以及ROMBERG积分
链接地址:https://www.777doc.com/doc-5427327 .html