1、这样构造出的一点高斯勒让德求积公式是中矩形公式再取的两个零点构造求积公式都准确成立,有由此解出,从而得到两点高斯勒让德求积公式三点高斯勒让德求积公式的形式是如表列出高斯勒让德求积公式的节点和系数0。00000002.000000010.5773503277459670.0000000555555688888893861136333998103478548652145240.90617980.53846930.236926947862875688889公式(4.5。9)的余项由(4.5。8)得,这里是最高项系数为的勒让德多项式,由(3。2。6)及(3。7)得 当时,有它比辛普森公式余项还小,且比
2、辛普森公式少算一个函数值当积分区间不是,而是一般的区间时,只要做变换可将化为,,这时 对等式右端的积分即可使用高斯勒让德求积公式2复化Gauss-Legendre求积公式将被积区间m等分, 记, 作变换在每个小区间上应用GaussLegendre公式, 累加即得复化Gauss-Legendre求积公式不妨设则有:Gauss点个数时,总结复化GaussLegendre求积过程如下:1. 分割区间, 记录区间端点值;2. 通过查表或求解非线性方程组, 在所有小区间上, 将Gauss系数和Gauss点的值代入变量替换后的公式;3。 将所有区间的结果累加, 即得到整个区间上的积分近似值.针对Gauss
3、点个数和的复化GaussLegendre求积公式编写的一个简单的MATLAB函数 compgauss() 如下: function = compgauss(a, b, n) Composite Gauss Integration Equation Type: n=2, n=3% Coded by Nan。Xiao 20100525 Step。1 Divide Interval2 Calculate% Step.3 Sum Resultsformat longf = (x) exp(x).sin(x);h=(ba)/n;xk=zeros(n+1,1);xk(1,1)=a;xk(n+1,1)=b;
4、fk1=zeros(n,1);fk2=zeros(n,1);for i=1:n-1 xk(i+1,1)=a+h*i;endfor j=1:n fk1(j)=f(xk(j)+xk(j+1)/2+(h/2)(1/sqrt(3)+.。 f(xk(j)+xk(j+1)/2+(h/2)(1/sqrt(3);for r=1: fk2(r)=(5/9)*f(xk(r)+xk(r+1)/2+(h/2)(sqrt(15)/5)+。 (8/9)f(xk(r)+xk(r+1)/2+(h/2)*(0)+。 (5/9)f(xk(r)+xk(r+1)/2+(h/2)(sqrt(15)/5);mysum1=h*sum(fk
5、1)/2;mysum2=h*sum(fk2)/2;disp(Result of 2 Nodes:)disp(mysum1);disp(Result of 3 Nodes:disp(mysum2);3龙贝格,三点,五点以及变步长高斯勒让德求积法以下是关于龙贝格,三点,五点以及变步长高斯勒让德之间精度的相互比较include#includemath.hiomanip。h #definePrecision10.000000000001 definee71828183 MAXRepeat10doublefunction(doublex) s;s=1/x;return Romberg(doublea,d
6、oubleb,doublef(doublex) intm,n,k;yMAXRepeat,h,ep,p,xk,s,q;h=b-a;y0=h*(f(a)+f(b)/2.0;/计算T1(h)=1/2(ba)(f(a)+f(b);m=1;n=1;ep=Precision1+1;while(ep=Precision1)&(mMAXRepeat) p=0。0;for(k=0;kn;k+) xk=a+(k+0。5)h; p=p+f(xk);p=(y0+h*p)/2。/Tm(h/2),变步长梯形求积公式 s=1。0;for(k=1;=m;s=4。0*s;/pow(4,m) q=(s*pyk-1)/(s-1.0
7、);yk-1=p;p=q; ep=fabs(q-ym-1);m=m+1;ym1=q;n=n+n;24816h=h/2.0;/二倍分割区间 q;ThreePointGaussLegendre(doublea,doubleb,doublex,w;staticX3=sqrt(15)/5.0,0,sqrt(15)/5.0;L3=5/9。0,8/9。0,5/9.0;w=0.0;for(inti=0;i3;i+) x=(b-a)Xi+(b+a)/2。w=w+f(x)Li;w;FivePointGaussLegendre(doublex,w;X5=-0。9061798459,0。5384693101,0,0
8、.5384693101,0。9061798459;L5=0.2369268851,0.4786286705,0。5688888889,0.4786286705,0。2369268851;i5;x=(b-a)Xi+(b+a)/2.0;w=w+f(x)Li;/每一次小区间利用勒让德公式计算的结果 w;FivePointPrecisionGaussLegendre(doublem,i,j;s,p,ep,h,aa,bb,w,x,g;X5=-0。5384693101,0,0。5384693101,0.9061798459; m=1;s=fabs(0。001h);p=1。0e+35;=Precision1
9、)&(fabs(h)s) g=0.0;for(i=0;im;aa=a+i*h;bb=aa+h;for(j=0;j=4;j+) x=(bb-aa)Xj+(bb+aa)/2.0;w=w+f(x)*Lj;g=g+w;/各个区间计算结果之和相加 g=g*h/2.0;ep=fabs(g-p)/(1.0+fabs(g);/计算精度 p=g;m=m+1;h=(b-a)/m;/分割区间 g;main() a,b,s;cout”请输入积分下限:”;cina;coutb;cout”的真值为:”endl;cout”1.098612289endl;/*龙贝格求积*/ s=Romberg(a,b,function);龙
10、贝格求积公式:coutsetiosflags(ios::fixed)setprecision(14)s/三点求积公式/ s=ThreePointGaussLegendre(b,”三点求积公式:setiosflags(ios:fixed)setprecision(14)sendl;/*五点求积公式*/ s=FivePointGaussLegendre(a,”五点求积公式”setprecision(14)sendl;s=FivePointPrecisionGaussLegendre(a,b,function);cout”控制精度五点求积公式”fixed)setprecision(14)5 erro
11、r(The Number of Input Arguments Is Wrong!);syms xp=sym2poly(diff(x2-1)(n+1),n+1)/(2nfactorial(n);tk=roots(p);Ak=zeros(n+1,1);for i=1:n+1 xkt=tk; xkt(i)=; pn=poly(xkt); fp=(x)polyval(pn,x)/polyval(pn,tk(i); Ak(i)=quadl(fp,1,1,tol); % 求积系数xk=(b-a)/2tk+(b+a)/2;fun=fcnchk(fun,vectorizefx=fun(xk)*(ba)/2;
12、ql=sum(Ak.fx);3.数值实验1 用4点(n=3)的高斯勒让德求积公式计算.解:先将区间化为,由(1)(1)有 根据表4-7中n=3的节点及系数值可求得. ( 准确值 )2用的高斯-勒让德公式计算积分令,则用的高斯勒让德公式计算积分3.2用四个节点的高斯勒让德求积公式计算定积分,计算过程保留4位小数解 :高斯勒让德求积公式只求积分区间为1,1上的积分问题需作变换,令 ,当x=1时,u=1;当x=0时,u=1于是,3.总结高斯勒让德求积公式对定积分的计算拥有高精度的特点,但是这只存在于积分区间在1,1上,区间的变大会导致精度的降低。因此,寻找精度更高,加速更快的算法是必要的。 参考文献1数值计算 张军、林瑛、钟竞辉 清华大学出版社 2008 6 17 2数值分析 陈晓江、黄樟灿 科学出版社 2010 7 103数值分析原理吴勃英 科学出版社 2009 7 234 复化两点GaussLegendre求积公式的外推算法 桂林航天工业高等专科学校学报2007年03期
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1