华中科技大学数值分析实验报告考生姓名考生学号班级指导老师路志宏2013年4月15日实验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;余项:(22)21()()()()(22)!nbGnafRfxxdxn;2.步长估计(1)1221fx;则可以得到:2(2)1234(3x1)(x1)f;(2)152max27f;(4)1552424()(x1)(x1)f;(4)15808max243f估计步长:71(f)102nR;将上述结果分别带入到复化梯形公式、复化Simpson公式和复化Gauss-LegendreI型公式的余项中可以得到:复化梯形公式:45.581610h;1792n;复化Simpson公式:0.0498h;21n;复化Gauss-LegendreI型公式:0.0549h;19n;(2)2241fx;则可以得到:2(2)2238(3x1)(x1)f;(2)2max8f;42(4)2596(5x10x1)(x1)f;(4)2max96f估计步长:71(f)102nR;将上述结果分别带入到复化梯形公式、复化Simpson公式和复化Gauss-LegendreI型公式的余项中可以得到:复化梯形公式:42.738610h;3652n;复化Simpson公式:0.0350h;29n;复化Gauss-LegendreI型公式:0.0388h;26n;(3)33xf;则可以得到:(2)233(ln3)xf;(2)23max3(ln3)xf;(4)433(ln3)xf;(4)43max3(ln3)xf估计步长:71(f)102nR;将上述结果分别带入到复化梯形公式、复化Simpson公式和复化Gauss-LegendreI型公式的余项中可以得到:复化梯形公式:44.070710h;2457n;复化Simpson公式:0.0758h;14n;复化Gauss-LegendreI型公式:0.0838h;12n;(4)4xfxe;则可以得到:(2)42xxfexe;(2)24max4fe;(4)44xxfexe;(4)24max6fe估计步长:71(f)102nR;将上述结果分别带入到复化梯形公式、复化Simpson公式和复化Gauss-LegendreI型公式的余项中可以得到:复化梯形公式:41.424810h;7019n;复化Simpson公式:0.0424h;24n;复化Gauss-LegendreI型公式:0.0469h;22n;3.C++编程计算结果(1)区间逐次分半求积法:依据“事后误差法”,将区间逐次分半进行计算,并利用前后两次计算结果来判断误差的大小。在逐次二分进行计算时,可以用2nT与nT来估计误差,这种直接用计算结果来估计误差的方法通常称作误差的事后估计法,若2||'3nnTT(为计算结果允许的误差),则停止计算,并取2nT作为积分的近似值;否则将区间再次二分后算出4nT,并检验不等式2|'nnTT是否满足。由于是区间分半,因此区间等分数必定是2的n次方。(2)流程图:(3)计算结果及误差:分别对4题作复化Trapezoid、Simpson、Gauss_Legendre计算,并计算计算值与精确值之间的误差,结果如下表:开始选择题号N选择f(x)复化公式函数结束输出结果(1)3221ln2ln321dxx计算结果表数据类型求积类型(1)3221ln2ln321dxx计算值区间二分相邻误差绝对误差区间二分等分复化Trapezoid公式-0.4054651220435094.18e-0081.3935e-0082^11=2048复化Simpson公式-0.4054651099529082.76e-0081.8447e-0092^5=32Gauss_LegendreI公式-0.4054651068783861.84e-0081.2298e-0092^5=32(2)120141dxx计算结果表数据类型求积类型(2)120141dxx计算值区间二分相邻误差绝对误差区间二分等分复化Trapezoid公式3.141592613853361.19e-0073.9736e-0082^11=2048复化Simpson公式3.141592651224821.49e-0072.365e-0092^3=8Gauss_LegendreI公式3.141592655271551.06e-0071.6818e-0092^3=8(3)1023ln3xdx计算结果表数据类型求积类型(3)1023ln3xdx计算值区间二分相邻误差绝对误差区间二分等分复化Trapezoid公式1.82047849690861.31e-0074.3655e-0082^11=2048复化Simpson公1.8204781.32e-0088.7812e-0102^5=32式4541318Gauss_LegendreI公式1.82047844388811.4e-0079.3656e-0092^4=16(4)221xexedx计算结果表数据类型求积类型(4)221xexedx计算值区间二分相邻误差绝对误差区间二分等分复化Trapezoid公式7.389056119706126.23e-0082.0775e-0082^13=8192复化Simpson公式7.389056107563761.29e-0078.6331e-0092^5=32Gauss_LegendreI公式7.389056093175268.63e-0085.7554e-0092^5=32由上表中的误差分析可知,利用题目所要求的复化求积公式运算的结果均在绝对误差限71102内,精度满足要求。由各种算法的步长可知,复化梯形公式、复化Simpson公式和复化Gauss_LegendreI公式在相同精度的情况下,其步长依次减少,相应地,其计算量也依次递减。四、总结由于计算过程使用的“事后误差估计法”,区间分半,因此区间都是划分为2的k次方等分,因此最后实际等分数应该是大于由余项计算得出的区间等分数的某个2的k次方。例如(1)3221ln2ln321dxx,由余项计算法求出的复化梯形公式、Simpson公式、Gauss_LegendreI公式的区间等分数n分别为1792、21、19,而“事后误差估计法”的区间等分数n为相应的2048、32、32,这个结果符合实际情况。这次数值分析试验,加深我对复化求积公式的理解。通过此次数值分析试验,我掌握了利用复化求积公式求解定积分的方法。相信,在未来的科研中,作为数值计算基本工具的复化求积方法,一定会为科研过程中遇到的数值计算问题提供极大的便利。感谢与我共同探讨该问题的几位同学,感谢知识渊博的路老师!5.附C++程序#includeiostream#includeiomanip#includemath.husingnamespacestd;intN;/*全局变量N,作为题号输入的同时选择对应的f(x)函数*/doublea,b,t,s,g,tol=0.5e-7;doublef(doublex);/************************************菜单函数**************************************/intselect_menu(){do{//system(cls);cinN;}while(N0||N4);returnN;}/*************************************主函数***************************************/intmain(){doublev1,v2,v3,v4,e;doubleTrapezoid(),Simpson(),Gauss_Legendre();coutsetw(40)实验4.1endl请输入题号1-4,将依次以复化梯形、Simpson、Gauss_Legendre公式endl;for(;;){switch(select_menu())/*switch循环选择题号*/{case(1):a=2;b=3;v1=log(a)-log(b);cout实验4.1题(1)的精确计算值为:setprecision(15)v=v1endl;cout复化梯形公式计算机结果:;Trapezoid();cout绝对误差:e=setprecision(5)abs(v1-t)0.5e-007endl;cout复化Simpson公式计算结果:;Simpson();cout绝对误差:e=setprecision(5)abs(v1-s)0.5e-007endl;cout复化Gauss_Legendre结果:;Gauss_Legendre();cout绝对误差:e=setprecision(5)abs(v1-g)0.5e-007endl;system(pausenul);break;case(2):a=0;b=1;v2=3.14159265358979;cout实验4.1题(2)的精确计算值为:setprecision(15)v=v2endl;cout复化梯形公式计算机结果:;Trapezoid();cout绝对误差:e=setprecision(5)abs(v2-t)0.5e-007endl;cout复化Simpson公式计算结果:;Simpson();cout绝对误差:e=setprecision(5)abs(v2-s)0.5e-007endl;cout复化Gauss_Legendre结果:;Gauss_Legendre();cout绝对误差:e=setprecision(5)abs(v2-g)0.5e-007endl;system(pausenul);break;case(3):a=0;b=1;v3=2/log(3);cout实验4.1题(3)的精确计算值为:setprecision(15)v=v3endl;cout复化梯形公式计算机结果:;Trapezoid();cout绝对误差:e=setprecisi