华中科技大学数值分析姓名祝于高学号T201389927班级研究生院(717所)2014年4月25日实验4.1实验目的:复化求积公式计算定积分试验题目:数值计算下列各式右端定积分的近似值。(1)3221ln2ln321dxx;(2)120141dxx;(3)1023ln3xdx;(4)221xexedx;实验要求:(1)若用复化梯形公式、复化Simpson公式和复化Gauss-LegendreI型公式做计算,要求绝对误差限为71102,分别利用他们的余项对每种算法做出步长的事前估计。(2)分别用复化梯形公式、复化Simpson公式和复化Gauss-LegendreI型公式做计算。(3)将计算结果与精确解做比较,并比较各种算法的计算量。实验内容:1.公式介绍(1)复化梯形公式:110(x)(x)2nnkkkhTff=11(a)2(x)(b)2nkkhfff;余项:2''(f)()12nbaRhf;(2)复化Simpson公式:11210(x)4(x)(x)6nnkkkkhSfff=111201(a)4(x)2(x)(b)6nnkkkkhffff;余项:4(4)(f)()()1802nbahRf;(3)复化Gauss-LegendreI型公式:112120(x)(x)(x)22323nbkkakhhhfdxff;余项:4)4(4320)())(hfbafRn(;该余项是这样分析的:由Gauss求积公式)()()(0kbankkxfAdxxfx得:余项dxxxnfxfAdxxfxfbannbankkk)()()!22()()()()()(R12)22(0G由于复化G-L求积公式在每个子区间],[1kkxx上用2点G-L求积公式:)]3122()3122([2)(111111kkkkkkkkxxkkxxxxfxxxxfxxdxxfkk其余项为:dxxxxxffRkkxxG2120)4()()(!4)()(1,其中khaxk,hkaxk)1(1。可得)(4320)()4(5kGfhfR,则:4)4(10)4(5104320)()()(4320)()(hfbafhfRfRknknkGn2.步长估计利用公式71021)(fRn,令)(xfn在区间上取最大,通过matlab编程求得h的估计值。3.编程计算结果(1)计算结果及误差:分别对4题作复化Trapezoid、Simpson、Gauss_Legendre计算,并计算计算值与精确值之间的误差,结果如下表:(1)3221ln2ln321dxx计算结果表数据类型求积类型(1)3221ln2ln321dxx步长(h)计算值绝对误差真实值复化Trapezoid公式5.58035e-004-0.4054651263094311.82013e-008-0.405465108108164复化Simpson公式4.76190e-002-0.4054651180463339.93817e-009Gauss_LegendreI公式5.26316e-002-0.4054650982251254.88304e-009(2)120141dxx计算结果表数据类型求积类型(2)120141dxx步长(h)计算值绝对误差真实值复化Trapezoid公式2.73823e-0043.1415926410933281.24965e-0083.141592653589793复化Simpson公式3.44828e-0023.1415926535887501.04317e-012Gauss_LegendreI公式3.84615e-0023.1415926535912201.42686e-012(3)1023ln3xdx计算结果表数据类型求积类型(3)1023ln3xdx步长(h)计算值绝对误差真实值复化Trapezoid公式4.07000e-0041.8204784835844083.03307e-0081.820478453253675复化Simpson公式7.14286e-0021.8204784772187692.39651e-008Gauss_LegendreI公式8.33333e-0021.8204784236572622.95964e-008(4)221xexedx计算结果表数据类型求积类型(4)221xexedx步长(h)计算值绝对误差真实值复化Trapezoid公式1.42470e-0047.3890561272302212.82996e-0087.389056098930650复化Simpson公式4.16667e-0027.3890561262147082.72841e-008Gauss_LegendreI公式4.54545e-0027.3890560731695912.57611e-008由上表中的误差分析可知,利用题目所要求的复化求积公式运算的结果均在绝对误差限71102内,精度满足要求。由各种算法的步长可知,在相同精度的情况下复化梯形公式的步长最小,比其它两个方法要小两个数量级(为-410),计算量最大,精度也是最低的;复化Simpson公式和复化Gauss_LegendreI公式,它们的步长基本上相差无几(在同一个数量级-210),但是Gauss_LegendreI公式步长更大计算量更小,精度更却更高,。4.附Matlab程序clearall;x=input('请输入函数:\n','s');a=input('请输入积分下限:\n');b=input('请输入积分上限:\n');m=input('复化梯形输T,复化Simpson输S,复化G-L输G:\n','s');if(m=='T')n=2;elsen=4;endf=inline(sym(x));y=diff(sym(x),n);g=inline(y);p=abs(g(a));forn=1:1000h=(b-a)/1000;ifpabs(g(a+h*n))p=abs(g(a+h*n));continueelsecontinueendbreakend;if(m=='T')h=sqrt(0.6/p)/1000elseif(m=='S')h=((1.44/p)^(1/4))/10elseh=(2.16/p)^(1/4)/100endn=ceil((b-a)/h)h=(b-a)/nif(m=='T')i=2:n;c=f(a+(i-1)*h);s=h*(f(a)+f(b)+2*sum(c))/2elseif(m=='S')i=2:n;c1=f(a+(i-1/2)*h);c2=f(a+(i-1)*h);s=(f(a)+f(b)+4*f(a+h/2)+4*sum(c1)+2*sum(c2))*h/6elsei=1:n;t=h/2/sqrt(3);c=f(a+(i-1/2)*h-t)+f(a+(i-1/2)*h+t);s=h*sum(c)/2end实验4.2实验目的:比较复化Simpson方法与变步长(区间逐次分半求积法)Simpson方法。试验题目:计算下列定积分。(1)2220()10xxxdx;(2)10xxdx;(3)20051dxx;实验要求:(1)分别用复化Simpson公式与变步长Simpson公式计算,要求绝对误差限为7-1021,输出每种方法所需的节点数和积分近似值。(2)分析比较计算结果。实验内容:1.公式介绍(1)复化Simpson公式:将区间[a,b]分n等份,在每个子区间],[1kkxx上采用Simpson式,若记hxxkk212/1,则得:11210(x)4(x)(x)6nnkkkkhSfff=111201(a)4(x)2(x)(b)6nnkkkkhffff;余项:4(4)(f)()()1802nbahRf;(2)区间逐次分半求积法:依据“事后误差法”,将区间逐次分半进行计算,并利用前后两次计算结果来判断误差的大小。在逐次二分进行计算时,可以用2nT与nT来估计误差,这种直接用计算结果来估计误差的方法通常称作误差的事后估计法,若2||'nnTT(为计算结果允许的误差),则停止计算,并取2nT作为积分的近似值;否则将区间再次二分后算出4nT,并检验不等式2|'nnTT是否满足。由于是区间分半,因此区间等分数必定是2的n次方。对于Simpson公式,若)()4(xf在区间[a,b]上连续且变化不大,则有:)(141)(15122222nnnnnnSSSSSSI将)(1-4122nnSS与做比较。3.编程思路对于复化Simpson公式,在matlab编程中,没有采用事先步长估计,目的是为了求出达到精度要求所需要的最小节点数。这样能够更好的比较复化Simpson公式与变步长Simpson公式之间的差别。其中n是从5开始的,不同的初始值变步长Simpson公式计算的结果会不一样。流程图:3.编程计算结果(1)计算结果及误差:分别对3题作复化Simpson和变步长Simpson公式计算,并计算绝对误差限,结果如下表:(1)6220()10xxxdx计算结果表数据类型求积类型(1)2220()10xxxdx节点数(n)计算值绝对误差真实值复化Simpson公式581.1619048090311004.71263e-0081.161904761904762变步长Simpson公式801.1619047749252331.30205e-008开始输入f(x)选择题号复化函数公式输出结果结束(2)dxxx10计算结果表数据类型求积类型(2)10xxdx节点(n)计算值绝对误差真实值复化Simpson公式760.4000000494092044.94092e-0080.40000000000000变步长Simpson公式800.4000000434629714.34630e-008(3)20051dxx计算结果表数据类型求积类型(3)20051dxx步长(h)计算值绝对误差真实值复化Simpson公式51023.8121353421083774.96461e-00823.812135292462322变步长Simpson公式64023.8121353125013862.00391e-008由上表中的误差分析可知,利用题目所要求的复化求积公式运算的结果均在绝对误差限71102内,精度满足要求。由比较结果可知,当初始值n不大时,用变步长Simpson法可以得到较好的得到精度。同时该方法求出的节点数与复化Simpson法最低要求的节点数相差不大。5.附Matlab程序clearall;x=input('请输入函数:\n','s');a=input('请输入积分下限:\n');b=input('请输入积分上限:\n');m1=input('第几个函数?(数字):\n');m2=input('复化Simpson输F,变步Simpson输B:\n','s');f=inline(sym(x));if(m1==1)k=8*16/70-8/3+2;elseif(m1==2)k=0.4;elsek=2*(sqrt(200)-sqrt(5));endn=5;p=0;e=1;if(m2=='F')whilee1/2*10^-7n=n+1;h=(b-a)/n;i=2:n;c1=f(a+(i-1/2)*h);c2=f(a+(i-1)*h);s=(f(a)+4*f(a+h/2)+4*sum(c1)+2*sum(c2)+f(b))*h/6;e=abs(s-k);en