1、数学实验“几种常见的求积分近似解的方法”实验报告(内含matlab程序) 作者: 日期:2 个人收集整理 勿做商业用途西京学院数学软件实验任务书课程名称数学软件实验班级数0901学号0912020107姓名李亚强实验课题Romberg积分法,Gauss型积分法,高斯勒让德积分法,高斯切比雪夫积分法,高斯-拉盖尔积分法,高斯埃尔米特积分法实验目的熟悉 Romberg积分法,Gauss型积分法,高斯勒让德积分法,高斯-切比雪夫积分法,高斯拉盖尔积分法,高斯-埃尔米特积分法实验要求运用Matlab/C/C+/Java/Maple/Mathematica等其中一种语言完成实验内容Romberg积分法,
2、Gauss型积分法,高斯勒让德积分法,高斯切比雪夫积分法,高斯拉盖尔积分法,高斯埃尔米特积分法成绩教师实验二十一实验报告一、 实验名称:Romberg积分法,Gauss型积分法,高斯-勒让德积分法,高斯-切比雪夫积分法,高斯-拉盖尔积分法,高斯-埃尔米特积分法.二、 实验目的:进一步熟悉Romberg积分法,Gauss型积分法,高斯-勒让德积分法,高斯切比雪夫积分法,高斯-拉盖尔积分法,高斯-埃尔米特积分法。三、 实验要求:运用Matlab/C/C+/Java/Maple/Mathematica等其中一种语言完成程序设计。四、 实验原理:1 Romberg积分法:龙贝格积分法是用里查森外推算法
3、来加快复合梯形求积公式的收敛速度,它的算法如下,其中是通过一系列逼近原定积分的龙贝格分值。计算对,计算下列各步:对和,计算随着计算的步骤的增加,越来越逼近积分。2 Gauss型积分法:高斯积分公式的思想是用个不等距的节点对被积函数进行插值,然后对插值后的函数进行积分,其积分公式为:如果积分区间不是,则需转换到此区间:其中系数、节点与的关系如下表所示:3 高斯-切比雪夫积分法:第一类切比雪夫积分形式为:其中,4 高斯拉盖尔积分法:高斯拉盖尔公式有两种形式:下面编制的程序是针对第一种形式的高斯拉盖尔公式,即因此程序的第一个输入参数-被积函数,是上式中的。5 高斯埃尔米特积分法:高斯-埃尔米特公式有
4、以下两种形式:下面编制的程序是针对第一种形式的高斯埃尔米特公式,即因此程序的第一个输入参数被积函数,是上式中的。五、 实验内容:%Romberg积分法function q,step=Roberg(f,a,b,eps)if(nargin=3) eps=1.0e4;endM=1;tol=10;k=0;T=zeros(1,1);h=b-a;T(1,1)=(h/2)*(subs(sym(f),findsym(sym(f),a)+subs(sym(f),findsym(sym(f),b));while toleps k=k+1; h=h/2; Q=0; for i=1:M x=a+h*(2i-1); Q
5、=Q+subs(sym(f),findsym(sym(f)),x); end T(k+1,1)=T(k,1)/2+hQ; M=2M; for j=1:k T(k+1,j+1)=T(k+1,j)+(T(k+1,j)T(k,j))/(4j-1); end tol=abs(T(k+1,j+1)T(k,j));endq=T(k+1,j+1);step=k;Gauss型积分法function q=IntGauss(f,a,b,n,AK,XK)if(n5nargin=4) AK=0; XK=0;else XK1=((b-a)/2)XK+((a+b)/2); q=((b-a)/2)sum(AK。*subs(
6、sym(f),findsym(f),XK1);endta=(ba)/2;tb=(a+b)/2;switch n case 1 q=2*ta*subs(sym(f),findsym(sym(f)),tb); case 2 q=ta(subs(sym(f),findsym(sym(f)),ta0.5773503+tb)+subs(sym(f),findsym(sym(f),ta0.5773503+tb)); case 3 q=ta(0.55555556*subs(sym(f),findsym(sym(f)),ta0。7745967+tb)+0。55555556*subs(sym(f),findsy
7、m(sym(f),-ta*0。7745967+tb)+0.88888889*subs(sym(f),findsym(sym(f)),tb)); case 4 q=ta*(0。3478548*subs(sym(f),findsym(sym(f)),ta0。8611363+tb)+0。3478548subs(sym(f),findsym(sym(f),ta0。8611363+tb)+0.6521452*subs(sym(f),findsym(sym(f),ta*0。3398810+tb)+0.6521452subs(sym(f),findsym(sym(f)),ta0.3398810+tb));
8、case 5 q=ta(0.2369269*subs(sym(f),findsym(sym(f),ta0。9061793+tb)+0.2369269subs(sym(f),findsym(sym(f),ta*0.9061793+tb)+0.4786287*subs(sym(f),findsym(sym(f)),ta*0。5384693+tb)+0。4786287*subs(sym(f),findsym(sym(f)),-ta0.5384693+tb)+0.5688889*subs(sym(f),findsym(sym(f),tb));end高斯-勒让德积分法function ql,Ak,xk=
9、guasslegendre(fun,a,b,n,tol)if nargin=1 a=1;b=1;n=7;tol=1e-8;elseif nargin=3 n=7;tol=1e8;elseif nargin=4 tol=1e-8;elseif nargin=2nargin5 error(The Number of Input Arguments Is Wrong!);endsyms xp=sym2poly(diff(x2-1)(n+1),n+1)/(2n*factorial(n);tk=roots(p); Ak=zeros(n+1,1);for i=1:n+1 xkt=tk; xkt(i)=;
10、pn=poly(xkt); fp=(x)polyval(pn,x)/polyval(pn,tk(i); Ak(i)=quadl(fp,1,1,tol); endxk=(b-a)/2*tk+(b+a)/2;fun=fcnchk(fun,vectorize);fx=fun(xk)*(ba)/2;ql=sum(Ak。*fx);高斯-切比雪夫积分法function q = IntQBXF1(func,n)format long;pi = 3.1415926535;q = 0;A = zeros(n,1);x = zeros(n,1);for i=1:n A(i) = pi/n; x(i) = cos(
11、pi(2i1)/2/n); y(i) = subs(sym(func), findsym(sym(func)), x(i)); q = q + A(i)y(i);end%高斯拉盖尔积分法function q=IntGaussLager(f,n,AK,XK)if(n6nargin=2) AK=0; XK=0;else q=sum(AK.subs(sym(f),findsym(f),XK));endswitch n case 2 q=0.853553subs(sym(f),findsym(sym(f)),0。585786)+0.146447subs(sym(f),findsym(sym(f)),3
12、.414214); case 3 q=0.711093*subs(sym(f),findsym(sym(f)),0.415575)+0。278518*subs(sym(f),findsym(sym(f),2.294280)+0.0103893*subs(sym(f),findsym(sym(f),6。289945); case 4 q=0.603154subs(sym(f),findsym(sym(f)),0。322548)+0.357419subs(sym(f),findsym(sym(f)),1。745761)+0.0388879subs(sym(f),findsym(sym(f)),4。
13、536620)+0.000539295subs(sym(f),findsym(sym(f),9。395071); case 5 q=0。521756*subs(sym(f),findsym(sym(f)),0。263560)+0。398667*subs(sym(f),findsym(sym(f)),1。413403)+0。0759424*subs(sym(f),findsym(sym(f),3。596426)+0。00361176*subs(sym(f),findsym(sym(f),7.085810)+0.0000233700*subs(sym(f),findsym(sym(f)),12。6
14、40801);end %高斯埃尔米特积分法function q=IntGaussHermite(f,n,AK,XK)if(n6&nargin=2) AK=0; XK=0;else q=sum(AK.*subs(sym(f),findsym(f),XK);endswitch n case 2 q=0。886227(subs(sym(f),findsym(sym(f),0.707107)+subs(sym(f),findsym(sym(f)),0。707107); case 3 q=1.181636subs(sym(f),findsym(sym(f)))+0。295409*subs(sym(f),
15、findsym(sym(f)),1.224745)+subs(sym(f),findsym(sym(f)),1.224745); case 4 q=0。544444*(subs(sym(f),findsym(sym(f),0.524648)+subs(sym(f),findsym(sym(f),0.524648)+0.100000(subs(sym(f),findsym(sym(f)),1.650680)+subs(sym(f),findsym(sym(f)),1。650680)); case 5 q=0。945309subs(sym(f),findsym(sym(f),0)+0。393619*(subs(sym(f),findsym(sym(f),0.958572)+subs(sym(f),findsym(sym(f),-0。958572)+0。199532*(subs(sym(f),findsym(sym(f)),2。020183)+subs(sym(f),findsym(sym(f),-2。020183));end- 8 -