数值积分:梯形规则--复合梯形规则--辛普森规则--复合辛普森规则--龙贝格求积公式


1.问题描述

微积分方法求积有很大的局限性,当碰到被积函数很复杂时,找不到相应的原函数。积分值

在几何上可解释为由 x=a,x=b,y=0和y=f(x) 所围成的曲边梯形的面积。积分计算之所以有困难,就是因为这个曲边梯形有一条边y=f(x)是曲线。
2.理论与方法

依据积分中值定理,底为b-a,而高为f(e)的矩形面积恰等于所求曲边梯形的面积I.f(e)称作区间[a,b]上的平均高度。这样,只要对平均高度f(e)提供一种算法,便相应地获得一种数值求积的算法。

1.梯形规则(Trapezoidal rule)
简单选取区间[a ,b]的中点高度作为平均高度。取h=b-a
        a0=⌠(a-b)(x-b)/(a-b)dx=(b-a)/2
        a1=⌠(a-b)(x-a)/(b-a)dx=(b-a)/2
得到:
2.辛普森规则(Simpson rule)

可视作用a , b与c=(a+b)/2三点高度的加权平均值作为平均高度。

3.复合梯形规则(Composite numerical)
设将求积区间[a,b]划分为n等份,步长h=(b-a)/2 ,等分点为xi=a+bi , i=0,1,...,n 所谓复化求积法,就是先用低阶求积公式求得每个子段[xi,xi+1]上的积分值,然后再将它们累加求和,用各段积分之和Ii,i=0,1,n-1作为所求积分的近似值。
复化梯形公式:
4.复合辛普森规则(Composite Simpson)
记子段[xi,xi+1]的中点为则复化公式为
复化Simpson公式:
5.龙贝格求积公式(Romberg)
龙贝格求积公式也称为逐次分半加速法。它是在梯形公式、辛普森公式和柯特斯公式之间的关系的基础上,构造出一种加速计算积分的方法。 作为一种外推算法, 它在不增加计算量的前提下提高了误差的精度.
在等距基点的情况下,用计算机计算积分值通常都采用把区间逐次分半的方法进行。这样,前一次分割得到的函数值在分半以后仍可被利用,且易于编程。

对区间[a, b],令h=b-a构造梯形值序列{T2k}。

T1=h[f(a)+f(b)]/2

把区间二等分,每个小区间长度为 h/2=(b-a)/2,于是

T2 =/2+[h/2]f(a+h/2)

把区间四(2)等分,每个小区间长度为h/4 =(b-a)/4,于是

T4=/2+[h/2][f(a+h/4)+f(a+3h/4).....................
把[a,b] 2等分,分点=a+(b-a)/ 2 ·i (i =0,1,2 · · · 2k)每个小区间长度为(b-a)/ 2 .
3.算法与设计
1.梯形规则(Trapezoidal rule)
计算区间端点函数值,代入公式:
2.辛普森规则(Simpson rule)
计算区间端点及中点函数值,代入公式

3.复合梯形,辛普森规则(Composite)

4.龙贝格求积公式(Romberg)
已给函数f(x),求积区间[a,b] 及精度e
准备初值:令 h=b-a,n=1 在步长二分过程中,逐步生成,并存数据T8,S4,C2,R1于单元t1,s1,c1,r1中
二分求梯形值 h=h/2,n=2n 根据公式求出新的梯形值,存于单元t2中

松弛加速:根据公式求加速值,存于单元s2,c2,r2中

精度控制:如果|r2-r1|<e,则输出r2作为结果,终止计算;
否则t1=t2,s1=s2,c1=c2,r1=r2,转2继续二分。
4.代码
void tra()
{cout << endl;cout << "trapezoidal rule" << endl;double a = 0, b = 0.8;double fa = 0.2 + 25 * a - 200 * pow(a,2) + 675 * pow(a, 3) - 900 * pow(a, 4) + 400 * pow(a, 5);double fb = 0.2 + 25 * b - 200 * pow(b, 2) + 675 * pow(b, 3) - 900 * pow(b, 4) + 400 * pow(b, 5);double n = 100;double h = (b - a) / n;double w[100]; w[0] = 0;double f[100];for (int i = 1; i < n; i++) w[i] = w[i - 1] + h;for (int i = 1; i < n; i++){f[i] = 0.2 + 25 * w[i] - 200 * pow(w[i], 2) + 675 * pow(w[i], 3) - 900 * pow(w[i], 4) + 400 * pow(w[i], 5);}double s = 0;s = ((h - a) / 2)*(fa + f[1]);for (int i = 2; i < n; i++){s += ((h / 2)*(f[i] + f[i - 1]));}s+= ((h / 2)*(fb + f[99]));cout << s << endl;
}void sim()
{cout << endl;cout << "simpson's rule" << endl;double a = 0, b = 0.8;double fa = 0.2 + 25 * a - 200 * pow(a, 2) + 675 * pow(a, 3) - 900 * pow(a, 4) + 400 * pow(a, 5);double fb = 0.2 + 25 * b - 200 * pow(b, 2) + 675 * pow(b, 3) - 900 * pow(b, 4) + 400 * pow(b, 5);double n = 100;double h = (b - a) / n;double w[100]; w[0] = 0;double f[100];for (int i = 1; i < n; i++) w[i] = w[i - 1] + h;for (int i = 1; i < n; i++){f[i] = 0.2 + 25 * w[i] - 200 * pow(w[i], 2) + 675 * pow(w[i], 3) - 900 * pow(w[i], 4) + 400 * pow(w[i], 5);}double s = 0;f[0] = fa;for (int i = 1; i < n-1; i+=2){s += (2*h / 6)*(f[i-1] + 4*f[i]+f[i+1]);}cout << s << endl;
}void com_tra()
{cout << endl;cout << "the composite trapezoidal rule" << endl;
//  double h = 0.1;double a = 0, b = 0.8;double fa = 0.2 + 25 * a - 200 * pow(a, 2) + 675 * pow(a, 3) - 900 * pow(a, 4) + 400 * pow(a, 5);
//  double f7 = 0.2 + 25 * h*7 - 200 * pow(h * 7, 2) + 675 * pow(h * 7, 3) - 900 * pow(h * 7, 4) + 400 * pow(h * 7, 5);double fb = 0.2 + 25 * b - 200 * pow(b, 2) + 675 * pow(b, 3) - 900 * pow(b, 4) + 400 * pow(b, 5);double n = 100;double h = (b - a) / n;double w[100]; w[0] = 0;double f[100];for (int i = 1; i < n; i++) w[i] = w[i - 1] + h;for (int i = 1; i < n; i++){f[i] = 0.2 + 25 * w[i] - 200 * pow(w[i], 2) + 675 * pow(w[i], 3) - 900 * pow(w[i], 4) + 400 * pow(w[i], 5);}double s = 0;f[0] = fa;for (int i = 1; i < n ; i++){s += (h / 2)*( 2 * f[i]);}s += (h / 2)*(fa + fb);cout << s << endl;
}void com_sim()
{cout << endl;cout << "the composite simpson's rule" << endl;//    double h = 0.1;double a = 0, b = 0.8;double fa = 0.2 + 25 * a - 200 * pow(a, 2) + 675 * pow(a, 3) - 900 * pow(a, 4) + 400 * pow(a, 5);double fb = 0.2 + 25 * b - 200 * pow(b, 2) + 675 * pow(b, 3) - 900 * pow(b, 4) + 400 * pow(b, 5);double n = 100;double h = (b - a) / n;double w[100]; w[0] = 0;double f[100];for (int i = 1; i < n; i++) w[i] = w[i - 1] + h;for (int i = 1; i < n; i++){f[i] = 0.2 + 25 * w[i] - 200 * pow(w[i], 2) + 675 * pow(w[i], 3) - 900 * pow(w[i], 4) + 400 * pow(w[i], 5);}double s = 0;f[0] = fa;for (int i = 1; i < n; i++){if (i % 2) s += (h / 3)*(2 * f[i]);else s += (h / 3)*(4 * f[i]);}s += (h / 3)*(fa + fb);cout << s << endl;
}
End

数值积分: 梯形规则--复合梯形规则--辛普森规则--复合辛普森规则--龙贝格求积公式相关推荐

  1. Romberg(龙贝格)求积公式求解数值积分时的注意事项

    <数值分析>第5版(李庆扬编著)的第四章课后习题第8-(2)题中,要求使用Romberg(龙贝格)求积公式求解f(x)=xsinx在区间[0,2pi]上的积分,要求误差小于10^(-5). ...

  2. 数值计算大作业:数值积分(梯形、辛普森与龙贝格方法在Matlab实现)

    作为研究生的入门课,数值计算的大作业算是所有研究生开学的重要编程作业. 针对数值积分的编程,我把梯形.辛普森与龙贝格方法在MATLAB中编写的程序放在文章最后了,需要的同学自取. PS:附录中的程序并 ...

  3. 数值计算方法(三)——变步长梯形法与龙贝格算法

    变步长梯形算法 提出背景: 复化求积公式虽然能提高精度,但需要给出步长,步长精度太大则精度低,步长太小则计算量大,难以找到一个合适的步长(划分成的小区间的个数) 算法描述: 1.对所有已存在的子区间进 ...

  4. 变步长梯形法与龙贝格算法

    文章目录 1. 变步长梯形法 算法描述 流程图 代码实现 2. 龙贝格算法 算法描述 例子 代码实现 1. 变步长梯形法 提出背景: 复化求积公式虽然能提高精度,但需要给出步长,步长精度太大则精度低, ...

  5. 数值积分:龙贝格求积

    一.数学原理 在变步长的复化梯形计算过程中运用: 就能将粗糙的梯形值Tn逐步加工成精度较高的辛普森值Sn.柯特斯值Cn和龙贝格值Rn.或者说,将收敛缓慢的梯形值序列Tn加工成收敛迅速的龙贝格值序列Rn ...

  6. 数值计算笔记之数值积分(二)龙贝格算法

    龙贝格求积公式也称为逐次分半加速法.它是在梯形公式.辛普森公式和柯特斯公式之间的关系的基础上,构造出一种加速计算积分的方法. 作为一种外推算法,它在不增加计算量的前提下提高了误差的精度. 在等距基点的 ...

  7. 计算方法之数值积分方法——复化梯形法,复化辛普森法,龙贝格法,三点高斯公式 附matlap程序下载

    数值积分 复化求积法就是将求积区间[a,b]划分为n等份,步长h=(b-a)/n,等分点为xi=a+ih,i=0,1,2,-,n.然后用低阶求积公式求的每个字段[xi,xi+1]上的积分值I,然后再将 ...

  8. 抛物线求积公式求积分算法matlab,数值计算实验报告---复合求积公式(梯形、抛物线、龙贝格)、导数求值(三点、四点、五点公式)...

    ----------------------个人作业,如果有后辈的作业习题一致,可以参考学习,一起交流,请勿直接copy ··复合抛物线公式: ··龙贝格公式: 四.实验内容 ------1 实验题目 ...

  9. 数值积分(辛普森求积、柯特斯求积、龙贝格求积)

    利用复化辛普森求积公式计算∫abf(x)dx\int _ { a } ^ { b } f ( x ) d x∫ab​f(x)dx的近似值 辛普森求积 function s=simpson( f_nam ...

最新文章

  1. 使用 Spring Boot 快速构建 Spring 框架应用
  2. vue 数组数据改变 视图不更新解决方案
  3. 现在完成时与过去完成时的区别
  4. python中的try与if,python中if和try的区别是什么
  5. java中常用的关键字_java中的常用的关键字
  6. 前端知识笔记汇总200304
  7. C#传递参数调用exe程序
  8. “元宇宙”究竟是什么?我用最通俗的大白话给IT人说清楚
  9. VB6里自动提交/自动填表的一种相对通用的方案
  10. jsp页面加载时自动执行action
  11. 世界国家中英文名称以及地区区号json格式
  12. 2019年技术盘点容器篇(三):阿里专家谈容器:既叫好又叫座? | 程序员硬核评测
  13. 电脑桌面图标文字有蓝底怎么去掉?
  14. 与传统的物理服务器对比,云服务器有哪些优势
  15. 【NOI2017模拟3.30】原谅(计算几何,期望)
  16. 保健品消费者需求调查方案
  17. 教培机构如何搭建在线教育网校平台
  18. Windows电脑内存不足解决问题
  19. android模拟器设置静态ip,静态IP地址版EVE模拟器部署和使用说明
  20. python如何检测文件或图片类型

热门文章

  1. 推荐一个免费的生成词云(word cloud)的在线工具
  2. sqlserver远程连接mysql_sqlserver2005远程连接 mysql
  3. V_rep与vs2019开发环境配置
  4. TB,GB,MB,KB,Byte字节,bit位 如何换算?
  5. 计算机广东大专院校排名2018,重磅!广东85所专科院校官方排名刚刚出炉,这所高职回归第一!...
  6. 30米分辨率的DEM地形数据——STRM高程数据
  7. 大富豪3(GM商城版)新手攻略之购买土地
  8. ISTQB基础级认证参考书
  9. PBR来龙去脉篇一:光和人眼感知颜色
  10. 快速调用编辑器来写一条长,复杂或难的命令--用Enki学Linux系列(5)