计算方法 牛顿-柯特斯求积公式与复合求积公式[严选课资]
- 格式:ppt
- 大小:1.57 MB
- 文档页数:33
[收稿日期]2009-04-03 [基金项目]东华理工大学第五届大学生科技创新基金项目(2008220). [作者简介]许小勇(1983-),男,江西奉新人,助教,主要从事优化算法、小波分析与图像处理研究. 2009年8月重庆文理学院学报(自然科学版)Aug 1,2009 第28卷 第4期Journal of Chongqing University of A rts and Sciences (Natural Science Editi on )Vol 128 No 14Newton -Cotes 求积系数与复合Gauss求积算法的程序设计许小勇1,金建华2(1.东华理工大学 数学与信息科学学院,江西 抚州 344000; 2.东华理工大学 校团委,江西 抚州 344000)[摘 要]提出了利用Ne wt on -Cotes 公式进行数值计算时Cotes 系数的程序设计方法和复合高斯求积算法的程序设计方法,在Matlab 环境下编写了两算法的程序,数值实验结果证明了程序的正确性.两程序的编写为其应用提供了方便.[关键词]Cotes 系数;复合高斯求积;程序设计[中图分类号]TP311 [文献标识码]A [文章编号]1673-8012(2009)04-0015-03 数学分析中,用Ne wt on -Leibniz 公式来计算定积分[1].但在很多实际工程问题中,计算定积分的准确值是十分困难的,这就要求建立积分的近似计算方法.插值型积分方法是一种重要方法,在实际应用时,考虑到计算上的方便,常将积分区间等分,并取分点为求积节点,从而得到Ne wt on -Cotes 公式.在现有文献中,考虑用复合Gauss 型算法求积分的并不多见,而Gauss 求积公式具有较高精度,在近似求积方面具有非常重要的作用.针对这两个问题,本文推导了它们的具体计算公式,在Matlab7.0环境下,编写了通用的计算程序,为其应用提供了方便.1 Newt on -Cotes 求积系数公式的推导 设积分区间为[a,b ],将其n 等分,令x k =a+kh ,h =b -an,k =0,1,…,n,将其作为求积节点,并作变量替换,则插值型求积公式为∫baf (x )d x ≈∑nk =0A kf (x k),其中系数A k =h ∫nt (t -1)…(t -k +1)(t -k -1)…(t -n )k!(-1)n-k(n -k )!d t=b -an ・(-1)n -k k!(n -k )!∫nt (t -1)…(t -k +1)(t -k -1)…(t -n )d t =(b -a )C (n)k ,可得Ne wt on -Cotes 求积公式[2,3],∫b af (x )d x ≈∑nk =0C(n )k・f (x k ).其中C n k=(-1)n -k n ・k!(n -k )!∫nt (t -1)…(t -k +1)(t -k -1)…(t -n )d t 称为Cotes 系数.可以看出,Cotes 系数与积分区间及f (x )无关,只与区间的等分数n 有关.在现有的《计算方法》教材中,都没有通过程序来完成Cotes 系数的计算,而是通过人工计算得到系数而应用于程序当中.这显然不符合计算机程序设计的思想.因此,本文利用Matlab 语言来编写程序计算Cotes 系数.2 Newt on -Cotes 求积系数程序设计在Matlab7.0环境下编写的求解Cotes 系数的程序及相关结果如下:程序代码:functi on [s]=jc (n )%定义阶乘函数s =1;if n ==0 s =1;else s =1; f or i =1:n s =s 3i;51 endendclcclearn=input(′请输入区间等分数n=′)f p rintf(′区间等分数为\n\t\t n=%d\n′,n)k=0:nm=length(k);sy m s tf or i=1:mQ(i,:)=zer os(1,m);L=1; for j=1:m if j~=i L=L3(t-k(j)); end endP(i)=L;Q(i,:)=sy m2poly(si m p lify(L));endf or i=1:mK=k(i);C(i)=(-1)^(n-K)/(n3jc(K)3jc(n-K)); for j=1:m Q(i,j)=C(i)3Q(i,j)/(m+1-j); endendM=[0,n];f or k=1:n+1 for i=2:-1:1 s=0; f or j=1:n+1 s=s+Q(k,j)3M(i)^(n+2-j); end Y(i)=s; end R(k)=Y(2)-Y(1);endf p rintf(′区间等分数为%d时牛顿柯特斯系数为:\ n′,n)R例1 n取5,6,7,8时相关运行结果如表1.上述程序求得的不同等分数n时的Cotes系数与文献[5]中所给的结果相同.3 复合Gauss求积算法的推导高斯型求积公式尽管有较高的精度,但它有一个明显缺点,当n值改变时节点和系数几乎同时都在改变.我们虽然可以通过查资料得到相应的系数和节点,但应用时却十分不方便.同时,余项公式都涉及被积函数的高阶导数,要利用它们来控制精度也十分困难.为克服这些缺点,实际计算中较多采用复合高斯型求积方法.表1 由程序运行求得的不同n时的Cotes系数n C n i5192882596251442514425961928864184093592803410592809354184074299871337162849640585338258533824964033716284299871824871095782783-111339197262-454283597262-111339157827832487109 复合高斯型求积的主要思想是[4-6]:先将积分区间[a,b]分成m个等长的小区间[ti-1,t i](i =1,2,…,m),然后在每个小区间上使用同一低阶高斯型求积公式算出积分的近似值,最后将它们相加即得积分∫b a f(t)d t的近似值G m,即:∫baf(t)d t=∑mi=1∫t it i-1f(t)d t=∑ni=1t i-t i-12∫1-1f[t i-1+t i2+t i-t i-12x]d x =h2∑ni=1∫1-1f[a+(i-12)h+h2x]d x≈h2∑mi=1∑nj=0A j f[a+(i-12)h+h2x j]=G m.其中h=b-am,Aj与tj(j=0,1,…,n)可通过查表得到.另外,可用相邻的两次计算结果Gm与G m+1的关系式Δ=G m+1-G mG m+1+1<ε来控制运算,其中ε为允许误差精度.4 复合Gauss求积算法的程序设计根据上述算法思路编写Matlab通用程序,代码如下:cleara=0;b=1;f=inline(′4/(1+x^2)′);m=1;ep s=10^-10;x2=[-0.5773502692,0.5773502692];A2=[1.0, 1.0];x3=[-0.7745966692,0,0.7745966692];A3= [0.5555555556,0.8888888889,0.5555555556];x4=[-0.8611363116,-0.3399810436, 0.3399810436,0.8611363116];A4=[0.3478548451,0.6521451549,0.6521451549,610.3478548451];f p rintf(′请输入所选择的高斯型求积公式的结点数L:\n′);f p rintf(′L的取值为:2,3,4\n′);L=input(′L=′);s witch L case2 x=x2;A=A2; case3 x=x3;A=A3; case4 x=x4;A=A4;ends=0;n=length(x);f or i=1:n s=s+A(i)3f((a+b)/2+x(i)3(b-a)/2);endG1=s3(b-a)/2;R(m)=G1;delta=1.0;while delta>ep s m=m+1;h=(b-a)/m;t=0; for i=1:m f or j=1:n t=t+A(j)3f(a+(i-1/2)3h+x(j)3h/2); end end G2=h3t/2;R(m,1)=G2;delta=abs(G2-G1)/(abs(G2)+1);G1=G2; end f p rintf(′用%d点复合高斯型求积公式求得的近似积分值:\n T=%16.16g\n′,L,G2) R例2 求积分∫1041+x2d x.(ε取1×10-10)我们知道,例题中所要计算的积分的结果是圆周率p i,在控制精度相同的情况下,不同的n 求得的结果如表2.表2 不同n时求得p i的近似值n近似值有效数字23.14159265403066933.141592653494111043.1415926535893113 可见,在相同控制精度的条件下,当节点数增大时,求得的近似积分结果的有效数字也增加.5 结语本文对Ne wt on-Cotes求积系数与复合Gauss型求积算法进行了推导,编写了相应的Matlab通用程序[6],并给出了相关例子.从例2可以看出,复合高斯求积公式具有较高的精度,且计算起来比较方便,上述程序的编写为它们的应用提供了方便.[参考文献][1]刘玉琏,傅沛仁.数学分析讲义[M].北京:高等教育出版社,2001:347-353.[2]吴世刚.牛顿-柯特斯公式的一致性[J].黄石教育学院学报,2002,19(4):93-95.[3]曾玉华,蒋光彪.一种自适应的四阶Ne wt on-Cotes求积方法[J].数学理论与应用,2005,25(4):68-69. [4]张世禄,万俊,陈豫眉,等.计算方法[M].成都:电子科技大学出版社,1999:164-173.[5]易大义,沈云宝,李有法.计算方法[M].杭州:浙江大学出版社,2002:114-119.[6]张铮,杨文平,石博强,等.MAT LAB程序设计与实例应用[M].北京:中国铁道出版社,2003:34-37.Program desi gn for coeff i c i en t of Newton-Cotes and i n tegra la lgor ithm of com pound GaussXU Xiao-yong1,J I N J ian-hua2(1.Schoo l of M a them a ti c s and I nf o r m a ti o n S c i e nce,Ea s t C hi na I ns titu te o f Te chno l o gy,Fuzho u J i angxi344000,C h i na;2.S choo lLe ague Comm itte e,Ea s t C hi na I ns titute of Te chno l o gy,Fuzho u J i angxi344000,C h i na)Abstract:The p r ogra m calculating of Cotes coefficient is given and the algorithm of compound Gauss integral is carried out under the Matlab envir onment.The si m ulati on results show the correctness of the p r ogra m.The t w o universal p r ogra m s p r ovide a convenient use for the m.Key words:Cotes coefficient;integral of compound Gauss;p r ogra m design(责任编辑 吴朝平)71。
newton-cotes计算积分近似值
Newton-Cotes求积公式是一种数值积分方法,用于近似计算定积分的值。
其基本思想是将积分区间分成若干个子区间,然后在每个子区间上选择一个点作为代表点,用该点的函数值乘以子区间的宽度,再将所有代表点的函数值乘以相应子区间的宽度求和,最后将求和结果作为积分值的近似值。
具体来说,Newton-Cotes求积公式可以分为以下几种形式:
梯形公式:将积分区间分成n个等长的子区间,每个子区间的宽度为h,然后在每个子区间的中点处取值并乘以相应的宽度h/2,将所有中点的函数值乘以相应子区间的宽度求和,即可得到积分值的近似值。
辛普森公式:将积分区间分成n个等长的子区间,每个子区间的宽度为h,然后在每个子区间的左端点和右端点处取值并乘以相应的宽度h/3,将所有端点的函数值乘以相应子区间的宽度求和,即可得到积分值的近似值。
复合梯形公式:将整个积分区间分成若干个子区间,然后在每个子区间上采用梯形公式进行计算,最后将所有子区间的近似值相加即可得到积分值的近似值。
复合辛普森公式:将整个积分区间分成若干个子区间,然后在每个子区间上采用辛普森公式进行计算,最后将所有子区间的近似值相加即可得到积分值的近似值。
需要注意的是,Newton-Cotes求积公式的收敛性和误差估计取决于子区间的数目和选择的位置,因此在实际应用中需要选择适当的子区间数目和位置以提高近似值的精度。
此外,Newton-Cotes求积公式适用于被积函数在积分区间上连续的情况,如果被积函数在积分区间上不连续或者存在奇点,则可能需要采用其他数值积分方法进行处理。
插值型求积公式、Newton-Cotes 型求积公式、复化求积公式、Romberg 求积、Guass 求积公式总结 一、 本章知识梳理1、代数精度的概念如果某个求积公式对于次数不超过m 的多项式均准确地成立,但对于1m +次多项式就不准确成立,则称该求积公式具有m 次代数精度。
2、插值型的求积公式 设[,]a b 上有1n +个互异节点01,,,n x x x ,()f x 的n 次Lagrange 插值多项式为∑==nk k k n x f x l x L 0)()()(其中∏=--=nj ik ix x x x x Lk 0)(,插值型求积公式为()()()nbn k k ak I f L x dx A f x =≈=∑⎰ (1.1) 其中(), 0,1,,bk k aA l x dx k n==⎰。
可看出,{}k A 仅由积分区间[,]a b 与插值节点{}k x 确定,与被积函数()f x 的形式无关。
求积公式(1.1)的截断误差为(1)1[]()()()()(1)!b bn aan bn aR f f x dx L x dxf x dxn ξω++=-=+⎰⎰⎰(1.2)3、.Newton-Cotes 型求积公式被积函数在积分区间内变化平缓,可用等距节点插值公式近似。
将积分区间[,]a b 划分为n 等分,步长b a h n -=,等距节点k x a kh =+,0,1,k =,n 。
此时求积公式(1.4)中的系数可得到简化00()()nnbbbjk k a a aj j k j j kj kx x x a jhA l x dx dx dxx x k j h==≠≠---===--∏∏⎰⎰⎰作变换xa th =+,则有000000()(1)()()!()!(1)()()!()!n k nnnn k j j j kj kn k nn j j kt j h h A hdt t j dt k j hk n k b a t j dt k n k n -==≠≠-=≠--==-----=--∏∏⎰⎰∏⎰令()00(1)()!()!n kn n n k j j kC t j dt k n k n -=≠-=--∏⎰则()()n kk A b a C =-,求积公式(1.1)可简化为 ()0()()()nn k k k I f b a C f x =≈-∑ (1.3)称为n 阶Newton-Cotes 公式,简记为N-C 公式,{}()n k C 称为Cotes 系数。
复合求积公式§5.3 复合求积公式由于在实际计算时,不宜使⽤⾼阶的⽜顿——柯特斯公式,但若积分区间较⼤,单独⽤⼀个低阶的⽜顿——柯特斯公式来计算积分的近似值,显然精度不好,为了提⾼数值求积的精确度,可利⽤积分对区间的可加性来解决这个问题,这就是通常采⽤的复合求积法。
所谓复合求积法,其指导思想就是先将积分区间分成若⼲个⼩区间,在每个⼩区间上采⽤低阶求积公式进⾏计算,然后把所有⼦区间的计算结果相加得出新的求积公式,这种公式就叫做复合求积公式。
5.3.1 低阶复合求积公式1 复合梯形求积公式如果在区间(a ,b)上直接应⽤梯形公式则可得(a b h -=1):T 1=)]()([21b f a f h +=)]()([2b f a f a b +-若在区间(a ,b)中,增加⼀个结点2/)(b a c +=,则把区间(a ,b)分成两个⼩区间(a ,c)与(c ,b),在两个⼩区间上分别应⽤梯形公式,然后相加就会得出新的求积公式T 2:(其中2/)(2/12a b h h -==)T 2=)]()([22c f a f h ++)]()([22b f c f h + =)]()2(2)([22b f b a f a f a b +++?-继续增加结点,把区间(a ,b)分成4等分,(a ,x 1) 、(x 1,x 2)、 (x 2,x 3) 、(x 3,b) ,在每个⼩区间上分别应⽤梯形公式后再相加,就会得出新的求积公式:T 4=)]()([214x f a f h ++)]()([2214x f x f h ++)]()([2324x f x f h + +)]()([234b f x f h + (其中4/)(2/24a b h h -==),=)}()]43()2()43([2)({42b f b a f b a f b a f a f a b +++++++?-其中k x =4kh a +,(k =0,l , (4)同理,把区间(a ,b)分成8等分时,可得求积公式T 8:T 8=)835()826()87([2)({82b a f b a f b a f a f a b ++++++?- )}()]87()862()853()844(b f b a f b a f b a f b a f +++++++++上⾯我们将区间(a ,b)分成k 2等分,是为了在计算后⾯的数值时,充分利⽤到前⾯的数据。
牛顿-柯特斯公式牛顿-柯特斯公式是数值分析中重要的求积公式之一,它可以用于近似计算定积分的值。
牛顿-柯特斯公式是利用插值多项式的积分公式,在积分节点选取相同的情况下,通过不同的插值多项式形式,可以达到不同的精度要求。
牛顿-柯特斯公式的一般形式可以表示为:∫[a,b]f(x)dx = w_0f(x_0)+w_1f(x_1)+...+w_nf(x_n)+R_n其中,x_0, x_1,...,x_n 是n+1个等距节点,a = x_0 < x_1< ... < x_n = b,f(x)是要求积分的函数,w_i是相应的权重系数,R_n是余项,用于表示估计误差。
牛顿-柯特斯公式的权重系数w_i和余项R_n与插值多项式的形式有关。
下面将介绍牛顿-柯特斯公式的一些常见形式。
1. 矩形公式当n = 0时,牛顿-柯特斯公式的形式为:∫[a,b]f(x)dx ≈ (b-a)f(a)这个公式称为矩形公式或矩形法则。
它的准确度为一阶,即误差为O((b-a)^2)。
2. 梯形公式当n = 1时,牛顿-柯特斯公式的形式为:∫[a,b]f(x)dx ≈ (b-a)[(f(a)+f(b))/2]这个公式称为梯形公式或梯形法则。
它的准确度为一阶,即误差为O((b-a)^2)。
3. 辛普森公式当n = 2时,牛顿-柯特斯公式的形式为:∫[a,b]f(x)dx ≈ (b-a)[(f(a)+4f((a+b)/2)+f(b))/6]这个公式称为辛普森公式或辛普森法则。
它的准确度为二阶,即误差为O((b-a)^3)。
4. 三点闭合公式当n = 3时,牛顿-柯特斯公式的形式为:∫[a,b]f(x)dx ≈ (b-a)[(f(a)+3f(a+h)+3f(b-h)+f(b))/8]其中,h = (b-a)/3。
这个公式的准确度为三阶,即误差为O((b-a)^4)。
通过不断增加插值节点的数量n,可以得到更高阶的牛顿-柯特斯公式。