变步长梯形积分算法求函数定积分课件.ppt

变步长梯形积分算法求函数定积分课件.ppt

ID:58230317

大小:242.00 KB

页数:17页

时间:2020-09-05

变步长梯形积分算法求函数定积分课件.ppt_第1页
变步长梯形积分算法求函数定积分课件.ppt_第2页
变步长梯形积分算法求函数定积分课件.ppt_第3页
变步长梯形积分算法求函数定积分课件.ppt_第4页
变步长梯形积分算法求函数定积分课件.ppt_第5页
资源描述:

《变步长梯形积分算法求函数定积分课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、纯虚函数和抽象类的应用变步长梯形积分算法求定积分在积分计算中,通常将积分区间分成若干个小区间,在每个小区间上采用低阶求积公式,然后把所有小区间上的计算结果加起来得到整个区间上的求积公式,这就是复化求积公式的基本思想。常用的复化求积公式有复化梯形公式和复化辛普森公式。复化求积方法对于提高计算精度是行之有效的方法,但复化公式的一个主要缺点在于要先估计出步长。若步长太大,则难以保证计算精度,若步长太小,则计算量太大,并且积累误差也会增大。在实际计算中通常采用变步长的方法,即把步长逐次分半,直至达到某种精度为止。变步长梯形求积法变步长复化求积法的基本思想是在求积过程中,通过对计算结果

2、精度的不断估计,逐步改变步长(逐次分半),直至满足精度要求为止。即按照给定的精度实现步长的自动选取。变步长的梯形公式设将积分区间[a,b]n等分,即分成n个子区间,一共有n+1个节点,即x=a+kh,k=0,1,…,n,步长。对于某个子区间,利用梯形公式计算积分近似值有对整个区间[a,b]有将子区间再二等份,取其中点作新节点,此时区间数增加了一倍为2n,对某个子区间,利用复化梯形公式计算其积分近似值。对整个区间[a,b]有比较和有当把积分区间分成n等份,用复化梯形公式计算积分I的近似值时,截断误差为若把区间再分半为2n等份,计算出定积分的近似值,则截断误差为当在区间[a,b]

3、上变化不大时,有所以可见,当步长二分后误差将减至,将上式移项整理,可得验后误差估计式上式说明,只要二等份前后两个积分值和相当接近,就可以保证计算结果的误差很小,使接近于积分值I。(1)变步长的梯形求积法的计算步骤①变步长梯形求积法。它是以梯形求积公式为基础,逐步减少步长,按如下递推公式求二分后的梯形值其中Tn和T2n分别代表二等分前后的积分值②如果,(ε为给定的误差限)则T2n作为积分的近似值,否则继续进行二等分,即转①再计算,直到满足所要求的精度为止,最终取二分后的积分值T2n作为所求的结果变步长的梯形求积算法实现变步长梯形公式的流程图为了保证算法对任意函数f(x)都可以使

4、用,则需要定义一个抽象类F,通过对他的派生,具体实现不同的函数通过对“()”运算符的重载完成函数的实现classF/*抽象类F的声明,这是一个被积分函数类,需要用不同的函数来覆盖实现不同函数的积分*/{ public: virtualdoubleoperator()(doublex)const=0;//用纯虚函数重载运算符() };类设计——抽象类为了保证算法对任意积分方法都可以使用,则需要定义一个抽象类Integ,通过对他的派生,具体实现不同的积分方法通过对“()”的重载,完成对不同积分方法的实现classInteg//总的积分类,是抽象类,需要不同的积分的方法来覆盖{ p

5、ublic: virtualdoubleoperator()(doublea,doubleb,doubleeps)const=0; };类设计——抽象类函数f(x)的实现,需要继承F类,并且实现其中的虚函数,即对“()”的重载classFun:publicF  //函数log(1+x)/(1+x^2) { public: doubleoperator()(doublex)const//虚函数的实现,而且是常成员函数(不能更新对象的数据成员){   returnlog(1.0+x)/(1.0+x*x); } };类设计——派生类积分函数的实现,需要继承Integ类,并且实现其中

6、的虚函数,即对“()”的重载classTrapz:publicInteg//这就是用变步长梯形求积公式来覆盖积分类的。{ public: Trapz(constF&pf):f(pf){};//构造函数,由于有常类型数据,所以要以参数列表的形式对其赋值doubleoperator()(doublea,doubleb,doubleeps)const;//对函数f的积分公式private: constF&f;   //F类对象的指针};类设计——派生类类设计——派生类积分函数的实现doubleTrapz::operator()(doublea,doubleb,doubleeps)c

7、onst { intdone(0);//就是一个整数intn; doubleh,Tn,T2n; n=1; h=b-a; Tn=h*(f(a)+f(b))/2.0;      //n=1时候的积分值cout<

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。