三种复化求积分算法的精度分析
复化梯形公式和复化Simpson公式

一、计算定积分的近似值:221x e xe dx =⎰ 要求:(1)若用复化梯形公式和复化Simpson 公式计算,要求误差限71021-⨯=ε,分别利用他们的余项估计对每种算法做出步长的事前估计;(2)分别利用复化梯形公式和复化Simpson 公式计算定积分;(3)将计算结果与精确解比较,并比较两种算法的计算量。
1.复化梯形公式程序:程序1(求f (x )的n 阶导数:syms xf=x*exp(x) %定义函数f (x )n=input('输入所求导数阶数:')f2=diff(f,x,n) %求f(x)的n 阶导数结果1输入n=2f2 =2*exp(x) + x*exp(x)程序2:clcclearsyms x %定义自变量xf=inline('x*exp(x)','x') %定义函数f(x)=x*exp(x),换函数时只需换该函数表达式即可f2=inline('(2*exp(x) + x*exp(x))','x') %定义f(x)的二阶导数,输入程序1里求出的f2即可。
f3='-(2*exp(x) + x*exp(x))'%因fminbnd()函数求的是表达式的最小值,且要求表达式带引号,故取负号,以便求最大值e=5*10^(-8) %精度要求值a=1 %积分下限b=2 %积分上限x1=fminbnd(f3,1,2) %求负的二阶导数的最小值点,也就是求二阶导数的最大值点对应的x值for n=2:1000000 %求等分数nRn=-(b-a)/12*((b-a)/n)^2*f2(x1) %计算余项if abs(Rn)<e %用余项进行判断break% 符合要求时结束endendh=(b-a)/n %求hTn1=0for k=1:n-1 %求连加和xk=a+k*hTn1=Tn1+f(xk)endTn=h/2*((f(a)+2*Tn1+f(b)))z=exp(2)R=Tn-z %求已知值与计算值的差fprintf('用复化梯形算法计算的结果 Tn=')disp(Tn)fprintf('等分数 n=')disp(n) %输出等分数fprintf('已知值与计算值的误差 R=')disp(R)输出结果显示:用复化梯形算法计算的结果 Tn=等分数 n=7019已知值与计算值的误差 R=2. Simpson公式程序:程序1:(求f(x)的n阶导数):syms xf=x*exp(x) %定义函数f(x)n=input('输入所求导数阶数:')f2=diff(f,x,n) %求f(x)的n阶导数结果1输入n=4f2 =4*exp(x) + x*exp(x)程序2:clcclearsyms x%定义自变量xf=inline('x*exp(x)','x') %定义函数f(x)=x*exp(x),换函数时只需换该函数表达式即可f2=inline('(4*exp(x) + x*exp(x))','x') %定义f(x)的四阶导数,输入程序1里求出的f2即可f3='-(4*exp(x) + x*exp(x))'%因fminbnd()函数求的是表达式的最小值,且要求表达式带引号,故取负号,一边求最大值e=5*10^(-8) %精度要求值a=1 %积分下限b=2 %积分上限x1=fminbnd(f3,1,2) %求负的四阶导数的最小值点,也就是求四阶导数的最大值点对应的x值for n=2:1000000 %求等分数nRn=-(b-a)/180*((b-a)/(2*n))^4*f2(x1) %计算余项if abs(Rn)<e %用余项进行判断break% 符合要求时结束endendh=(b-a)/n %求hSn1=0Sn2=0for k=0:n-1 %求两组连加和xk=a+k*hxk1=xk+h/2Sn1=Sn1+f(xk1)Sn2=Sn2+f(xk)endSn=h/6*(f(a)+4*Sn1+2*(Sn2-f(a))+f(b)) %因Sn2多加了k=0时的值,故减去f(a)z=exp(2)R=Sn-z %求已知值与计算值的差fprintf('用Simpson公式计算的结果 Sn=')disp(Sn)fprintf('等分数 n=')disp(n)fprintf('已知值与计算值的误差 R=')disp(R)输出结果显示:用Simpson公式计算的结果 Sn=等分数 n=24已知值与计算值的误差 R=用复化梯形公式计算的结果为:,与精确解的误差为:。
复化梯形和复化simposon求积分

课程设计报告课程名称数值逼近专业信息与计算科学班级姓名学号指导教师日期2011-06-27理学院应用数学系一、目的意义 (1) 进一步熟悉掌握复化梯形公式及其算法;(2) 进一步熟悉掌握复化Simpsom 公式及其算法;(3) 了解比较复化梯形公式和复化Simpsom 公式的代数精度。
二、内容要求积分计算问题:分别用复化梯形和复化Simpsom 求积公式计算积分dx e x x x 5.1402)(13-⎰-,并比较计算量(精度为10-8)。
三、问题解决的方法与算法方法:复化梯形和复化Simpsom 积分公式算法:输入:端点a 、b 以及要计算的积分公式f(x);输出:积分f(x)在指定区间上的近似值Step1:编写复化梯形和复化Simpson 积分公式Step2:输入所需的断点个数nSetp3:分别调用复化梯形和复化Simpson 积分公式数值积分及其应用 报告1Setp4:比较代数精度使其达到10-8Setp5:输出复化梯形和复化Simpson积分公式对应的值四、计算程序复化梯形积分公式:#include"stdio.h"#include"math.h"void main()#define n 4{float a,b,d,y;float h[n-2],k[n-2],s[n-1];a=0.0;b=4.0;printf("输出相邻节点间距:\n");d=(b-a)/n;printf("%f\n",d);printf("输出节点函数值:\n");for(int i=0;i<n+1;i++){h[i]=a+i*d;k[i]=13*(h[i]-h[i]*h[i])*exp(-1.5*h[i]);printf("k[%d]=%f\n",i,k[i]);}s[0]=k[0]+k[n];for(i=1;i<n;i++){s[i]=s[i-1]+2*k[i];}y=0.5*d*s[n-1];printf("输出积分值:\n");printf("%f\n",y);}复化抛物线积分公式:#include"stdio.h"#include"math.h"#define n 4void main(){float a,b,h;double x[100],k[100],y[100],g[100],z[100];printf("输入积分上下限:\n");scanf("%f %f",&a,&b);printf("输出积分步长:\n");h=(b-a)/4;printf("%f\n",h);for(int i=1;i<n;i++){x[i]=a+h*i;k[i]=x[i]-0.5*h;}k[n]=b-0.5*h;x[0]=a;x[n]=b;for(i=0;i<n+1;i++){y[i]=13*(x[i]-x[i]*x[i])*exp(-1.5*x[i]);} for(i=1;i<n+1;i++){g[i]=13*(k[i]-k[i]*k[i])*exp(-1.5*k[i]);} z[0]=y[0]+y[n];z[1]=0.0;z[2]=0.0;for(i=1;i<n;i++){z[1]=z[1]+y[i];}for(i=1;i<n+1;i++){z[2]=z[2]+g[i];}z[3]=h*(z[0]+2*z[1]+4*z[2])/6;printf("%f\n",z[3]);}五、计算结果与分析:复化梯形积分公式:复化抛物线积分公式:输出相邻节点间距:1.000000输出节点函数值:k[0]=0.000000k[1]=0.000000k[2]=-1.294464k[3]=-0.866502k[4]=-0.000026输出积分值:-6.482936Press any key to continue输入积分上下限:0 4输出积分步长:1.000000-1.608667Press any key to continue结果分析:通过该算法可以看出复化体形积分和simpson积分比梯形积分和抛物线积分具有更好的精度。
复化求积公式的算法及其应用

摘要在数值计算中,低阶牛顿柯特斯求积方法存在很多缺陷,从余项公式可以看出其要求提高求积公式的代数精度,必须增加结点个数,会导致插值多项式出现龙格现象,且数值稳定性不能保证.基于以上原因,我们往往采用复化求积方法,此方法不仅可以克服以上缺点而且便于在计算机上实现,值得研究和学习.在本课程设计中,我们首先从复化求积公式的思想引入,然后详细介绍复化梯形求积公式、复化辛普森求积公式和复化柯特斯求积公式的推导过程和相关性质,再对三种求积公式进行比较和总结,其次画出三种求积公式的流程图,最后通过求解例题写出三种求积算法的程序设计.关键词复化求积算法;流程图;程序设计目录引言 (1)第一章复化求积算法 (2)§1.1复化求积公式 (2)§1.1复化求积公式的思想 (3)§1.2复化求积公式的构造 (3)§1.2复化梯形求积公式 (3)§1.2.1复化梯形求积公式的推导过程 (3)§1.2.2复化梯形求积公式的性质 (3)§1.3复化辛普森求积公式 (4)§1.3.1复化辛普森求积公式的推导过程 (4)§1.3.2复化辛普森求积公式的性质 (4)§1.4复化柯特斯求积公式 (5)§1.4.1复化柯特斯求积公式的推导过程 (5)§1.4.2复化柯特斯求积公式的性质 (5)§1.5三种复化求积公式的比较及总结 (6)第二章复化求积公式算法的流程图及其应用 (9)§2.1 流程图 (9)§2.2 应用 (12)参考文献 (15)附录A (16)附录B (17)附录C (18)引言积分计算在分析数学领域里是个古老的问题,在数值分析中已被广泛应用.但在计算机上却不能像在分析数学中那样,用原函数[满足)()('x f x F =的函数)(x F 就是函数)(x f 的原函数]计算积分.这是因为在实际问题中,函数关系往往是用列表数据或曲线给出的.即使知道了函数的表达式,求其一个原函数并非一个简单问题.许多函数难以用初等函数表示(如2,/sin x e x x -等).在计算机上,通常利用函数的若干个离散值,以代数运算近似计算积分值,这类近似计算法称为数值积分法.设给定区间],[b a 上的函数)(x f .需要建立计算积分dx x f f I ba ⎰=)()(的近似方法.数值积分的基本思想是试图用一个简单又易于积分的函数逼近)(x f ,以计算积分)(f I .显然插值多项式是一个很好的选择,因为插值多项式可由)(x f 的若干值构造出来,其积分很容易计算.为此,需将],[b a 分为n 等分n i x x i i ,,2,1],,[1 =+,其中b x x x x a n =<<<<=+1321 .分割步长h ,因此,1,3,2,/)1(1+=-+=n i h i x x i 对应的函数值)()(,),(),()(121b f x f x f x f a f n ==+ .显然)(f I 可以表示为所有小区间上各函数的积分的和,即)()(1f I f I ni i ∑==其中 dx x f I i ix x i ⎰+=1)(通常把为每个)(f I i 建立的计算公式简称为求积公式,而把)(f I 建立的求积公式称为复化求积公式.由于在实际计算时,不宜使用高阶的牛顿——柯特斯公式,但若积分区间较大,单独用一个低阶的牛顿——柯特斯公式来计算积分的近似值,显然精度不好,为了提高数值求积的精确度,可利用积分对区间的可加性来解决这个问题,这就是通常采用的复合求积法.而且使用这种方法之后,求积公式的收敛性和稳定性也得到了改善.第一章 复化求积算法牛顿—柯特斯公式的求积余项表明,求积节点n 越大,对应的求积公式精度越高,但由于牛顿—柯特斯公式在8>n 时数值不稳定,因此不能用增加求积节点数的方法来提高计算精度.实用中常将求积区间],[b a 分成若干个小区间,然后在每个小区间上采用数值稳定的牛顿—柯特斯公式求小区间上的定积分,最后把所有小区间上的计算结果相加来作为原定积分的近似值.采用这种方法构造的求积公式就称为复合求积公式.复合求积公式具有计算简单且可以任意逼近所求定积分值的特点,这是牛顿—柯特斯公式一般做不到的.常用的复合求积公式有复合梯形求积公式和复合辛普森求积公式以及复合柯特斯求积公式.以下我们将从三种复化求积算法的构造、余项、稳定性、收敛性等几方面进行讨论,并写出相应的流程图以及应用中所涉及到的算法的程序设计.§1.1复化求积公式§1.1.1 复化求积公式的思想n 很大时,牛顿——柯特斯求积公式出现了不稳定、不收敛现象,往往使用低阶牛顿——柯特斯求积公式,误差比较大,故将],[b a 若干等分,在每个子区间上反复使用低阶牛顿——柯特斯公式,进行累加.而构造出来的新的求积公式,称之为复化求积公式.在构造求积公式的过程中,我们将求积区间],[b a 进行等距细分:n i nab ia x i ,,1,0, =-+=,在每个小区间],[1i i x x -上用相同的“基本”求积公式(如梯形公式;中矩形公式;左(右)矩形公式或辛普森公式)计算出dx x f i i x x ⎰-1)(的近似值i S .§1.1.2 复化求积公式的的构造将定积分⎰ba dx x f )(的区间],[b a 划分为n 等分,各节点为kh a x k +=,n k ,,1,0 =,nab h -=,在子区间)1,,1,0](,[1-=+n k x x k k 上使用牛顿——柯特公式,将],[1+k k x x 分割为l 等份,步长为l h,节点为1,,2,,+=+++k k k k k x llhx l h x l h x x记121,,,,++++=k ll k lk lk k x xxxx为在],[1+k k x x 上作)(x f 的l 阶牛顿——柯特斯求积公式.∑∑⎰=++=+=-=≈+li li k l i li k li l i k k k i x x xf C h xf C x x I dx x f k)(0)(1)()()()()(1由积分区间的可加性,可得nli k n k li l i n k k l n k k k baI xf C h I dxx f dx x f ==≈=+-==-=-=+∑∑∑∑⎰⎰)()()(100)(1)(11§1.2 复化梯形求积公式§1.2.1 复化梯形求积公式的的推导过程将积分区间],[b a 划分等分,步长nab h -=,求积节点kh a x k +=,n k ,,1,0 =在每个小区间)1,,1,0](,[1-=+n k x x k k 上应用梯形公式)]()([2)(11++≈⎰+k k x x x f x f hdx x f k k然后将它们累加求和,作为所求积分I 的近似值.])()(2)([2)]())()()((2)([2)]()([2)()(11121011011∑∑∑⎰⎰---+-=-=++=+++++=+≈==+n i k n n k k n k n k x x bab f x f a f hx f x f x f x f x f hx f x f hdx x f dx x f I k k记n T )]()(2)([211b f x f a f hn i k ++=∑-=式为复化梯形求积公式,下标n 表示将区间n 等分,若把区间n 2等分,在每个小区间上仍用梯形求积公式,则可得到n n T T ,2和n H 间的关系为:)(212n n n H T T +=其中∑=--+=nk n nab k a f h H 1]2)12([ §1.2.2复化梯形求积公式的性质性质1.1复化梯形求积公式余项当)(x f 在],[b a 上有连续的二阶导数,则复化梯形公式的余项:)(12)()(''2ηf h a b T dx x f R n ba T --=-=⎰ ],[b a ∈η 性质1.2稳定性若],[,)(''b a x M x f ∈≤,则有估计式M na b R nT 2312)(-≤ 复化梯形求积公式的系数均大于零,且满足a b nh n hA ni i -==+-+=∑=]1)1(21[2因此,复化梯形求积公式的计算过程是数值稳定的.性质1.3收敛性可证复化梯形求积公式是收敛的. 性质1.4代数精度定义1.1 若积分⎰b adx x f )(的数值积分公式⎰badx x f )()(0k nk k x f A ∑=≈对于任意一个次数不高于m 次的多项式都精确成立,且存在一个1+m 次多项式使之不精确成立,则称该数值积分公式的代数精度为m .可证复化梯形求积公式的代数精度为2.§1.3 复化辛普森求积公式§1.3.1 复化辛普森求积公式的的推导过程将积分区间],[b a 划分等分,记子区间],[1+k k x x 的中点为h x x k k 2121+=+在每个小区间上应用辛普森公式,则有))()(2)(4)((6)444(6)]()(4)([6)()(101121211223112101211011b f x f x f a f hf f f f f f f f f hx f x f x f hdxx f dx x f I n k n k k k n n n k k k n k n k x x bak k+++=+++++++++=++≈==∑∑∑∑⎰⎰-=-=+--++-=-=+其中h x xk k 2121+=+记 )]()(2)(4)([6111021b f x f x f a f hS n k k n k k n +++=∑∑-=-=+式为复化辛普森求积公式§1.3.2复化辛普森求积公式的性质性质1.5复化辛普森求积公式余项当)(x f 在],[b a 上有连续的四阶导数,复化辛普森公式的求积余项为:)(2880)()2(180)4(4)4(4ηηf h a b f h a b R S --=--= ],[b a ∈η 性质1.6稳定性同复化梯形求积公式,复化辛普森求积公式的系数均大于零,且满足总和为a b - 因此,复化辛普森求积公式的计算过程是数值稳定的.性质1.7收敛性可证复化辛普森求积公式是收敛的. 性质1.8代数精度可证复化辛普森求积公式的代数精度为4.§1.4 复化柯特斯求积公式§1.4.1 复化柯特斯求积公式的的推导过程将积分区间],[b a 划分等分,若把每个子区间],[1+k k x x 四等份,内点依次记为432141,,+++k k k xxx,同理可得复化柯特斯求积公式)](7)(14)(32)(12)(32)(7[9010101143211041b f x f x f x f x f a f hC n k n k n k k k k n k k n +++++=∑∑∑∑-=-=-=++-=+(1-1)其中h x xh x x h x x k k k k k k 43;21;41432141+=+=+=+++ 记(1-1)为复化柯特斯求积公式§1.4.2复化柯特斯求积公式的性质性质1.9复化柯特斯求积公式余项当)(x f 在],[b a 上有连续的四阶导数,复化柯特斯公式的求积余项为:)()4(945)(2)6(6ηf h a b R c --= ],[b a ∈η性质1.10稳定性同复化梯形求积公式,复化柯特斯求积公式的系数均大于零,且满足总和为a b - 因此,复化柯特斯求积公式的计算过程是数值稳定的.性质1.11收敛性可证复化柯特斯求积公式是收敛的. 性质1.12代数精度可证复化柯特斯求积公式的代数精度为6.§1.5 三种复化求积公式的比较及总结为了更形象的表述三种复化求积公式之间的关系,我们通过一个例子来进行比较例1.1使用各种复化求积公式计算定积分dx xxI ⎰=10sin 为简单起见,依次使用8阶复化梯形公式、4阶复化辛普森公式和2阶复化柯特斯公式,可得各节点的值如下表表1-1节点值94569086.0)]1()(2)0([161718=++=∑=f x f f T k k 94608331.0)]1()(2)(4)0([2413031214=+++=∑∑==+f x f x f f S k k k k 94608307.0)]1(7)(14)](32)(12)(32[)0(7[180111104342412=+++++=∑∑==+++f x f x f x f x f f C k k k k k k 比较三个公式的结果:精度最低 94569086.08=T 精度次高 94608331.04=S 精度最高 94608307.02=C原积分的精确值为6719460830703.0sin 10==⎰dx xxI . 我们知道,三种求积公式的余项分别如表1-2表1-2 复化梯形、辛普森、柯特斯求积公式的余项定义1.2对于复化求积公式n I 若存在0>p 及0≠c ,使其余项n I I -满足c h I I pnh =-→0lim则称复化求积公式n I 是p 阶收敛的 P 阶收敛性的意义:对于一个数值求积公式来说,收敛阶越高,近似值n I 收敛到真值dx x f ba ⎰)(的速度就越快.由于三种求积公式的余项分别是h 的2,4,6阶无穷小量 所以n n n C S T ,,趋于定积分I 的速度依次更快.从这三种求积公式的构造过程中可以看出,它们都属于机械求积公式,但不属于插值行和牛顿柯特斯公式.都具有稳定性和收敛性,且收敛速度一个比一个快,一个比一准确.在使用函数值个数相等的情况下,248,,C S T 的精度逐渐升高.第二章 复化求积公式算法的流程图及其应用§2.1 流程图1. 复化梯形求积公式图2.1 复化梯形求积公式算法的流程图Step1给出被积函数)(x f 、区间],[b a 端点b a ,和等分数n ; Step2求出,kh x k =nab h -=; Step3计算∑-=1)(),(),(n k k x f b f a f ;Step4得)]()()([211b f x f a f h T n k k n ++=∑-=2. 复化辛普森求积公式图2.2 复化辛普森求积公式算法的流程图Step1 给出被积函数)(x f 、区间],[b a 端点b a ,和等分数n ; Step2求出,kh x k =nab h -=; Step3计算∑∑-=+-=1211)(,)(),(),(n k k n k k xf x f b f a f ;Step4得)]()(2)(4)([6111021b f x f x f a f hS n k k n k k n +++=∑∑-=-=+3. 复化柯特斯求积公式图2.3 复化柯特斯求积公式算法的流程图Step1给出被积函数)(x f 、区间],[b a 端点b a ,和等分数n ;Step2求出,kh x k =nab h -=; Step3计算∑∑∑∑-=-=+-=+-=+11143121141)(,)(,)(,)(),(),(n k k n k k n k k n k k x f xf xf xf b f a f ;Step4得)](7)(14)(32)(12)(32)(7[9010101143211041b f x f x f x f x f a f hC n k n k n k k k k n k k n +++++=∑∑∑∑-=-=-=++-=+§2.2 应用例2.1.分别用复化梯形,复化辛普森,复化柯特斯公式计算函数32)(x x x f -=在区间]1,0[上的弧长S .(要求写出源程序和运行结果) *注 在],[b a 上的弧长dx x f S ba⎰+=2'))((11.用复化梯形公式计算S 的过程:(1).写出变量说明表2-1 复化梯形求积公式程序设计的变量说明Step1 输入n ,nab h -=,被积函数0),(1=s x f ; Step2 for 1=k to 1-n ;{计算11)(s kh a f s →++} ))(2)((21b f s a f hs ++=;Step3 输出近似值s .(3) 写出源程序和运行结果(见附录A) 2.用复化辛普森公式计算S 的过程: (1).写出变量说明表2-2 复化辛普森求积公式程序设计的变量说明Step1:输入n ,nab h -=,被积函数0),(1=s x f 0,2=s ; Step2:for 1=i to 1-n ,2+=i i ;{计算11)2/*(s h i a f s →++} Step3:for 2=j to 1-n ,2+=j j ; {计算22)2/*(s h j a f s →++}))(24)((621b f s s a f hs +++=; Step4:输出近似值s .(3).写出源程序和运行结果(见附录B) 3.用复化柯特斯公式计算S 的过程: (1).写出变量说明表2-3 复化柯特斯求积公式程序设计的变量说明Step1输入n ,nab h -=,被积函数0),(1=s x f 0,2=s 0,3=s ; Step2 for 1=i to 1-n ,2+=i i ;{计算11)4/*(s h i a f s →++} Step3:for 2=j to 1-n ,4+=j j ; {计算22)4/*(s h j a f s →++} Step4: for 4=k to 2-n ,2+=k k ; {计算33)4/*(s h k a f s →++}))(141232)((90321b f s s s a f hs ++++=; Step5:输出近似值s .(3).写出源程序和运行结果(见附录C)根据运行结果可知,由三种复化求积公式求得的S 的值分别为064837.1、061199.1、061189.1,精度逐渐升高.参考文献[1] 薛毅,耿美英.数值分析[M]. 北京:北京工业大学出版社.2003年.[2] 刘长安.数值分析教程[M].西安:西北工业大学出版社.2005年.[3] 朝伦巴根,贾德彬.数值计算方法[M].北京:中国水利水电出版社.2007年.[4] 韩旭里,万中.数值分析与实验[M].北京: 科学出版社.2006年.[5] 林成森.数值分析[M].北京: 科学出版社.2007年.[6] 封建湖,车刚明,聂玉峰.数值分析原理. 北京: 科学出版社.2001年.附录A 1.复化梯形求积公式的程序设计:(1).源程序:#include<stdio.h>#include<math.h>double f(double x){double z;z=sqrt(1+pow((2*x-3*pow(x,2)),2));return z;}main(){ int n,k;float h;float a;float b;double s=0.0;double s1=0.0;double t;printf("Please input the deng fen ;"); scanf("%d",&n);printf("Please input qujian a ;");scanf("%f",&a);printf("Please input qujian b ;");scanf("%f",&b);h=(b-a)/n;for (k=1;k<n;k++){ t=a+k*h;s1=s1+f(t);}s=(h/2)*(f(a)+2*s1+f(b));printf("%f\n",s);}(2).运行结果:图1 复化梯形求积公式计算弧长结果附录B2.复化辛普森求积公式的程序设计:(1).源程序:#include<stdio.h>#include<math.h>double f(double x){double z;z=sqrt(1+pow((2*x-3*pow(x,2)),2));return z;}main(){ int n,i,j;float h;float a;float b;double s=0.0;double s1=0.0,s2=0.0;double t,l;printf("Please input the deng fen ;");scanf("%d",&n);printf("Please input qujian a ;");scanf("%f",&a);printf("Please input qujian b ;");scanf("%f",&b);h=(b-a)/n;for(i=1;i<8;i=i+2){t=a+i*h/2;s1=s1+4*f(t);}for(j=2;j<8;j=j+2){l=a+j*h/2;s2=s2+2*f(l);}s=(h/6)*(f(a)+s1+s2+f(b));printf("%f\n",s);}(2).运行结果:图2 复化辛普森求积公式计算弧长结果附录C3.复化柯特斯求积公式的程序设计:(1).源程序:#include<stdio.h>#include<math.h>double f(double x){double z;z=sqrt(1+pow((2*x-3*pow(x,2)),2));return z;}main(){int n,i,j,k;float h;float a;float b;double s=0.0;double s1=0.0,s2=0.0,s3=0.0;double t,l,m;printf("Please input the deng fen ;");scanf("%d",&n);printf("Please input qujian a ;");scanf("%f",&a);printf("Please input qujian b ;");scanf("%f",&b);h=(b-a)/n;for(i=1;i<8;i=i+2){t=a+i*h/4;s1=s1+32*f(t);}for(j=2;j<7;j=j+4){l=a+j*h/4;s2=s2+12*f(l);}for(k=4;k<6;k=k+2){m=a+k*h/4;s3=s3+14*f(m);}s=(h/90)*(7*f(a)+s1+s2+s3+7*f(b));printf("%f\n",s);}(2).运行结果:图3 复化柯特斯求积公式计算弧长结果19。
复化求积公式的算法及其应用

复化求积公式的算法及其应用复化求积公式是数值计算方法中重要的一种技术,用于近似计算函数的积分值。
该方法通过将积分区间等分为多个小区间,并在每个小区间上使用求积公式来估计函数在该区间上的积分值。
本文将介绍复化求积公式的算法及其应用。
一、复化求积公式算法1.复化梯形求积公式复化梯形求积公式是复化求积公式中最简单的一种,其基本思想是将积分区间等分为若干个小区间,然后在每个小区间上使用梯形求积公式计算积分值,最后将所有小区间的积分值相加得到最终的积分值。
算法步骤:1)将积分区间[a,b]等分为n个小区间,每个小区间的长度为h=(b-a)/n。
2) 在每个小区间上使用梯形求积公式计算积分值,即Ii=h/2*(f(xi)+f(xi+1)),其中xi=a+i*h,i=0,1,2,...,n-13)将所有小区间的积分值相加得到最终的积分值,即I≈I0+I1+I2+...+In-12. 复化Simpson求积公式复化Simpson求积公式是一种更为精确的复化求积公式,它通过在每个小区间上使用Simpson求积公式来计算积分值,从而提高了计算精度。
算法步骤:1)将积分区间[a,b]等分为n个小区间,每个小区间的长度为h=(b-a)/n。
2) 在每个小区间上使用Simpson求积公式计算积分值,即Ii=h/6*(f(xi)+4f(xi+h/2)+f(xi+h)),其中xi=a+i*h,i=0,1,2,...,n-13)将所有小区间的积分值相加得到最终的积分值,即I≈I0+I1+I2+...+In-1二、复化求积公式应用1.数学分析中的数值积分计算,用于计算函数的定积分值。
2.物理学中的积分计算,用于计算物理量的平均值或总量。
3.统计学中的积分计算,用于计算概率密度函数的面积值。
4.工程学中的积分计算,用于计算工程问题中的各种积分量。
5.金融学中的积分计算,用于计算金融衍生品的价格或价值。
总结:复化求积公式是一种重要的数值计算方法,在数学、物理、统计、工程、金融等领域中有广泛的应用。
第五讲 复化求积公式

四、自动选取积分步长
事前确定步长的问题 (1) 高阶导数的估计往往是很困难的; (2) 这种估计往往是很保守的,得到的n往往偏大。 为了改正上述缺点,实际常采用“事后估计法” “事后估计法”的基本思想是 (1) 求数值积分时,将区间逐次分半; (2) 利用前后两次的计算结果来判断误差是否满足精度要求, 从而确定n. 下面以复化梯形公式为例来介绍这种步长逐次减半求积法
1 h n1 T f (x ), n k1 2 2 2k0
如何根据Tn和T2n来确定误差是否满足要求?
(ba ) 2 I Tn ( h f ) 1 2 ba h 2 I T2n ( ( ) f ) 1 2 2
则有
如果二阶导数在区 间[a,b]上变化不大
n 1
R (Tn )
复化simpson公式的截断误差
( 4 ) 若 函 数 f ( x )[ 在 a ,] b 上 连 续 , 则
ba 4 (4) h5 (4) hf ( ) R ( S n ) f ( k ) I Sn 2 8 8 0 8 8 0 k0 2
0 . 9 4 6 0 8 3 2
1 1 C2 [ 7 f( 0 ) [ 3 2 f( x 1) 1 2 f( x 2) 3 2 f( x 3) ] k k k 1 8 0 k 0 4 4 4
1 4 f( x 7 f( 1 ) ] k)
k 1
1
0 . 9 4 6 0 8 3 0
n 1 h [ 7 f ( x ) 3 2 f ( x ) 1 2 f ( x ) 3 2 f ( x ) 7 f ( x ) ] k 1 2 3 k 1 k k k 9 0 k 0 4 4 4
数值分析中的复化梯形法误差分析

数值分析中的复化梯形法误差分析数值分析中的复化梯形法误差分析在数值分析中,复化梯形法是一种常用的数值积分方法。
它使用梯形规则进行近似求解定积分,通过将定积分区间分割成若干个小区间,并在每个小区间上使用梯形规则进行求解,最后将各个小区间上的积分结果相加得到整个定积分的近似值。
本文将对复化梯形法进行误差分析。
1. 复化梯形法原理复化梯形法的原理是将定积分区间[a, b]等分为n个小区间,令h=(b-a)/n为小区间长度,梯形法的近似结果T可以表示为:T = h/2 * (f(a) + 2*f(x1) + 2*f(x2) + ... + 2*f(x(n-1)) + f(b))其中,f(x)为被积函数在x点处的取值。
2. 复化梯形法误差分析复化梯形法的误差主要包括局部误差和全局误差。
2.1 局部误差在每个小区间上,我们使用梯形规则进行积分计算,其误差可以通过泰勒展开进行推导。
设f(x)在[a, b]区间上具有充分高阶连续导数,则对于每个小区间[xk, x(k+1)],我们有如下局部误差公式:E_local = - (h^3/12) * f''(ξ)其中,ξ为[xk, x(k+1)]上的某点,f''(ξ)为f(x)的二阶导数在ξ点的取值。
2.2 全局误差全局误差是指整个区间[a, b]上的积分近似与真实积分之差。
复化梯形法的全局误差可以通过对各个小区间上的局部误差进行累加得到。
假设积分的真实值为I,则全局误差E_global可以表示为:E_global = (b-a) * (h^2/12) * f''(ξ)其中,ξ为[a, b]区间上的某点,f''(ξ)为f(x)的二阶导数在ξ点的取值。
3. 误差分析实例为了更好地理解复化梯形法的误差特点,我们以一个具体的例子进行分析。
考虑定积分∫(0, 1)sin(x)dx的近似求解,将积分区间等分为4个小区间进行计算。
利用数值积分公式求解积分方程 分别用复化求积公式和高斯型求积公式

利用数值积分公式求解积分方程分别用复化求积公式和高斯
型求积公式
数值积分方法通常用于求解无法解析求解的定积分问题,其中复化求积公式和高斯型求积公式是两种常见的数值积分方法。
1. 复化求积公式:
复化求积公式是通过将积分区间等分成多个小区间,并在每个小区间上采用简单的数值积分公式来逼近原积分问题。
常见的复化求积公式包括梯形法则和Simpson法则。
梯形法则:将积分区间[a, b]等分成n个小区间,每个小区间
用梯形面积的方法求解,然后将各个小区间的积分结果相加得到最终的积分近似值。
Simpson法则:将积分区间[a, b]等分成n个小区间,每个小区
间用Simpson公式求解,然后将各个小区间的积分结果相加得到最终的积分近似值。
2. 高斯型求积公式:
高斯型求积公式是通过将积分区间映射为[-1, 1]上的积分问题,然后通过选取合适的节点和权重,将原积分问题转化为有限个加权节点的求和问题。
常见的高斯型求积公式包括Gauss-Legendre公式和Gauss-Hermite公式。
Gauss-Legendre公式:适用于求解定义在[-1, 1]区间上的定积
分问题,根据节点个数的不同,可以得到不同阶数的Gauss-Legendre公式。
Gauss-Hermite公式:适用于求解定义在整个实数轴上的定积分问题,通过选取合适的节点和权重,将原积分问题转化为有限个加权节点的求和问题。
总结:复化求积公式适用于一般的定积分问题,可以通过合理选择划分区间和数值积分公式来提高数值积分的精度。
而高斯型求积公式通常适用于具有特殊形式或定义域的定积分问题,可以通过选取合适的节点和权重来获得较高的数值积分精度。
matlab软件求解数值积分及复化梯形公式、复化公式估计误差的方法心得

MATLAB软件是数值计算和科学计算的强大工具,尤其在数值积分和数值微积分中,它提供了许多内置函数,可以快速有效地解决各种问题。
以下是我使用MATLAB求解数值积分,以及使用复化梯形公式和复化公式估计误差的一些心得:1. 数值积分:MATLAB的内置函数`integral`可以用于数值积分。
这个函数使用自适应Simpson方法,可以处理复杂函数的积分。
我发现,对于一些非标准函数,`integral`函数能够给出相当精确的结果。
2. 复化梯形公式:复化梯形公式是一种数值积分的方法,它通过把积分区间分成许多小的子区间,然后在每个子区间上应用梯形法则来近似积分。
在MATLAB中,我们可以使用梯形法则的公式来实现这个方法。
值得注意的是,为了得到更精确的结果,我们需要将子区间的数量增加。
3. 复化公式估计误差:估计复化梯形公式的误差是重要的,因为它可以帮助我们了解我们的近似有多准确。
误差可以通过比较复化梯形公式的近似值和真实值来估计。
在MATLAB中,我们可以使用try-catch语句来捕获可能的错误,并据此调整我们的近似。
4. 细心和耐心:在使用MATLAB进行数值计算时,细心和耐心是关键。
我们需要仔细检查我们的代码,确保所有的变量都被正确地定义和使用。
同时,由于数值计算可能会产生一些意想不到的结果,我们需要有耐心去调试和优化我们的代码。
5. 理解你的算法:对于任何数值方法,理解其背后的数学原理是非常重要的。
这不仅可以帮助你理解你的代码是如何工作的,而且当出现问题时,你可以更有效地找到问题的根源。
6. 使用MATLAB的文档和社区:MATLAB的文档非常全面,对于不熟悉某个函数或方法的人来说,查阅文档是非常有帮助的。
此外,MATLAB的社区也非常活跃,当你遇到问题时,你可以在这里寻求帮助。
以上就是我在使用MATLAB求解数值积分以及使用复化梯形公式和复化公式估计误差的一些心得。
总的来说,MATLAB是一个功能强大的工具,但是要充分利用它,我们需要理解其背后的数学原理,耐心地调试我们的代码,并善于利用其文档和社区资源。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【摘要】分别利用复化梯形公式、复化simpson公式和复化gauss-legendre i型公式对定积分进行运算,得到近似数值解,并对各算法的精度和计算复杂度进行了比较与分析。
数值举例结果表明,三种复化求积分算法的运算结果均在绝对误差限ε=5e-8内,并且在相同的精度下,复化gauss-legendre i型公式的步长和计算量最小。
【关键词】复化梯形公式;复化simpson公式;gauss-legendre公式
1 引言
数值积分是计算数学的基本内容,在工程技术和科学计算中起着十分重要的作用,当积分的精确值不能不能求出时,数值积分就变得越来越重要。
通常数值积分的计算常利用机械积分来实现,其基本思想为:
(1)
2 理论模型
复化梯形求积公式
将区间[a,b]划分成n等分,分点xk=a+kh(,k=1,2,3…n),在每个子区间[xk,xk+1] (k=1,2,3 …n-1)上采用梯形式,则得到
(2)
记
(3)
上式(3)为复化梯形公式,其余项可由式
,(a≤η≤b)(4)
得
,ηk∈[xk,xk+1] (5)
由于
f(x)∈c2[a,b]
且
,(0≤k≤n-1)(6)
所以∈(a,b),使
(7)
于是复化梯形公式余项为
(8)
复化simpson求积公式
将区间[a,b]划分为n等分,在每个子区间[xk,xk+1]上采用simpson式,若记,则得
(9)
记
(10)
上式(10)为复化simpson求积公式,其余项可由式
,(a≤η≤b)(11)
得
,ηk∈[xk,xk+1] (12)
于是当f(x)∈c4[a,b]时,与复化梯形公式相似有
,η∈[a,b] (13)
复化gauss-legendre i型求积公式
gauss型求积公式是具有最高代数精度的插值求积公式。
通过适当选取求积公式(1)的节点ε=5e-8和求积系数ak≥0和xk∈[a,b] (k=1,2,3…n),可使其代数精度达到最高的2n+1次。
利用特殊区间[-1,1]上n+1次legendre正交多项式的根作为节点,我们可以建立gauss-legendre型求积公式。
将区间[a,b]划分成n等分,分点xk=a+kh(,
k=1,2,3 …n),在每个子区间[xk,xk+1](k=1,2,3…n-1)上采用2点gauss-legendre i型求积公式
(14)
在[a,b]区间上的复化积分公式为
(15)
上式(15)称为复化gauss-legendre i型求积公式。
于是当f(x)∈c4[a,b],时,复化gauss-legendre i型求积公式的余项表达式为
,(a≤η≤b)(16)
3 数值举例
先考察下面等式(17)右边定积分的近似值
(17)
分别用复化梯形公式、复化simpson公式和复化gauss-legendre i型公式做运算,求出其在绝对误差限为ε=5e-8内的近似数值解。
假定
(18)
因此
,(19)
所以
,(20)
对于复化梯形公式有
(21)
所以
n≥ (22)
因此取步长
n=1792 (23)
对于复化simpson求积公式有
(24)
所以
n≥ (25)
因此取步长
n=21 (26)
对于复化gauss-legendre i型求积公式有
(27)
所以
n≥ (28)
因此取步长
n=19 (29)
同理也可以考察等式
和(30)
右端定积分的近似数值值,具体结果见表1。
表1 三种复化算法步长的事前估
函数复化梯形
求积公式复化simpson
求积公式复化gauss-legendre i型求积公式
1792 21 19
2457 14 12
7019 24 22
表2三种复化算法的计算结果函数复化梯形
求积公式复化simpson 求积公式复化gauss-legendre i型求积公式
表3 三种复化算法的精度分析
函数复化梯形
求积公式复化simpson
求积公式复化gauss-legendre i型求积公式
在绝对误差限为ε=5e-8内,用复化梯形公式、复化simpson公式和复化gauss-legendre i型公式对所列三个定积分做近似数值解运算,分别利用它们的余项对每种算法做出步长的事前估计,如表1所示。
步长能够反映运算量的大小,步长越大,计算量越大,很显然复化梯形公式计算量比另两种算法大得多并且更加复杂,耗时更长,对计算机硬件要求更高。
表2记录了三种算法对三种定积分运算所得的近似数值解,表3记录了三种复化算法的近似数值解与精确解之间的误差,可以看出三种算法的结果均在绝对误差限ε=5e-8以内,精度达到了要求,但各自相互之间存在差异,精确度也各不相同。
由各算法的步长可知,复化梯形公式、复化simpson公式和复化gauss-legendre i型公式在相同精度的情况下下,其步长依次减小,其次,其计算量也依次递减。
对于,在计算机求解时,我们将步长设为事前估计的1792,所得到的精度满足要求。
但是如果将步长减小1步,即为1791时,结果依然满足要求,甚至将步长减少2步、10步、100步、500步……直到步长减小到1081时所得结果才不满足要求,此时的误差为,不在绝对误差限ε=5e-8内。
尝试了另外几种复化求积公式,也会出现这样的现象。
此现象可以概括为:满足精度的事前估计的步长大于满足精度的实际步长。
这种现象的出现可以作如下解释:在做步长的事前估计时,我们是用函数二阶导数或者四阶导数的最大值来运算的,这种处理方式所得到的步长是一种极限步长(步长最大值)。
然而,在计算机求解时,肯定会出现满足精度的实际步长,并且该实际步长肯定不会大于事前估计步长。
4 结论
一般情况下可以采用复化梯形公式、复化simpson 公式和gauss-legendre 公式可以求出一定精度的近似解,采用复化simpson公式和复化gauss-legendre i型公式的结果可以进一步外推提高精度和降低计算量。
三种复化求积分算法在相同精度的情况下,其步长和计算量依次减小。