对于积分:

只要找到被积公式的原函数F(x),利用牛顿莱普利兹公式有:

但是,实际使用这种求积分的方法往往是有困难的,因为大量的被积函数的原函数是不能用初等函数表示的;另外,当f(x)是由测量或数值计算给出的一张数据表时,牛顿莱普利兹公式也无法直接运用,因此有必要研究积分的数值计算问题。
对于一些理论的推导,大家可以看看维基百科,下面我主要给出牛顿-科特斯公式在n=1(梯形求积公式)、n=2(辛普森公式)的情况,并通过代码实现
梯形公式:

辛普森公式:

应用高阶牛顿-科特斯公式计算积分时,会出现数值不稳定的情况,而低阶公式往往因为积分步长过大使得离散误差变大,因此,为了提高求积公式的精度,可以把积分区间分成若干个子区间,在每个子区间上使用低阶求积公式,然后将结果加起来,这种方法称为复化求积法。

复化梯形公式
将区间[a,b]划分为n等分,步长为h=(b-a)/h,节点为,在每个子区间使用梯形公式得:

复化辛普森公式

根据复化梯形公式的推导,同理可得复化辛普森公式为:

下面我们通过实例来实现复化梯形公式和复化辛普森公式:

        对于函数f(x)=sin(x)/x,试用复化梯形公式和复化辛普森公式计算函数f(x)在[0,1]上的积分。

具体的程序实现如下:
#include<stdio.h>
#include<math.h>
double Function(double x)//所要计算积分的函数f(x)
{if(x==0)//sin(x)/x在0处的取值为1return 1;elsereturn sin(x)/x;
}
//复化梯形公式
double Trapz(double a,double b,int n)
{double h=(b-a)/n;double T=0;for(int i=1;i<n;i++){T=T+Function(a+i*h);}T*=2;T=(Function(a)+Function(b)+T)*h/2;return T;
}
//复化辛普森公式
double MulripleSimpson(double a,double b,int n)
{double h=(b-a)/n;double T=0;for(int i=0;i<n;i++){T=T+Function(a+i*h)+4*Function(a+(i+0.5)*h)+Function(a+(i+1)*h);}T=T*h/6;return T;
}
void main()
{printf("使用复化梯形公式可得:%f\n",Trapz(0,1,8));printf("使用复化辛普森公式可得:%f\n",MulripleSimpson(0,1,4));
}

运行结果如下图:


结果分析:
比较复化梯形公式和复化辛普森公式两种方法的运行结果,我们发现复化辛普森公式与准确值0.9460831更加接近,复化梯形公式只有2位有效数字,而复化辛普森公式有6为有效数字。

原文:http://blog.csdn.net/tengweitw/article/details/43311685

作者:nineheadedbird

【数值分析】复化积分公式相关推荐

  1. c语言simpson积分计算方法,数值分析复化Simpson积分公式和复化梯形积分公式计算积分的通用程序...

    数值分析复化Simpson积分公式和复化梯形积分公式计算积分的通用程序 数值分析第五次程序作业 PB09001057 孙琪 [问题] 分别编写用复化Simpson积分公式和复化梯形积分公式计算积分的通 ...

  2. 数值分析复化梯形公式matlab,数值分析复化梯形公式,复化Simpson公式MATLAB程序

    <数值分析复化梯形公式,复化Simpson公式MATLAB程序>由会员分享,可在线阅读,更多相关<数值分析复化梯形公式,复化Simpson公式MATLAB程序(1页珍藏版)>请 ...

  3. 数值分析复化求积matlab,MATLAB数值分析实验二(复合梯形、辛普森和龙贝格求积,以及二重积分计算等)...

    1.理解如何在计算机上使用数值方法计算定积近似值; 2.学会复合梯形.复合Simpson和龙贝格求积分公式的编程与应用. 3.探索二重积分在矩形区域的数值积分方法. 佛山科学技术学院 实 验 报 告 ...

  4. 数值分析复化求积matlab,数值分析:复化公式求解定积分

    复化公式求解定积分 用熟悉的计算机语言编程上机完成 (1)用复化梯形公式.复化Simpson公式和复化Cotes公式计算积分,自己设置不同精度要求,对结果进行比较分析. (2)用Romberg积分法计 ...

  5. [计算机数值分析]复化梯形的递推公式的变步长算法求积分

    如下图变步长的算法框图,其中T1和T2分别代表二分前后的积分值. 问题描述: 运行示例: 源码: #include<iostream> #include<cmath> doub ...

  6. 数值分析复化求积matlab,数值分析实验指导-7积分

    内江师范学院 数 值 分 析 实 验 报 告 册 编制 张莉 审定 牟廉明 专业: 班级:级 学号: 姓名: 数学与信息科学学院 2013年9月 说 明 一.学生在做实验之前必须要准备实验,主要包括预 ...

  7. 【matlab】数值积分公式的程序实现

    (一)专题实验(Newton-Cotes积分公式) 1.编写[a,b]上梯形积分公式.Simpson积分公式. 2.利用自己编写的程序计算定积分,计算一下数值解和精确解之间差的绝对值. 梯形积分: f ...

  8. 数值积分-龙贝格(Romberg)积分

    数值积分在工程上是个比较有用的数学工具.在工程上有很多数学问题,看似简单,计算所用的数学公式不算复杂,但是求解起来却很困难,很难获得解析解的公式,这个时候就需要用到数值求解的办法来获取满足工程需要的近 ...

  9. MATlAB运用——数值积分

    实验一 分别利用变步长复化梯形公式.变步长复化Simpson公式和复化Guass-Legendre I型公式计算下列式子,要求绝对误差限为0.5∗10−70.5*10^{-7}0.5∗10−7,并比较 ...

最新文章

  1. SAP RETAIL 通过自动补货功能触发采购申请
  2. C语言单链表实现19个功能完全详解
  3. 多线程还是多进程的选择
  4. Java生成CRC16数据校验码
  5. PHP引用全局作用域中可用的全部变量是,php全局变量之学习笔记
  6. C# 字符、字符串过滤,只能输入数字、中文、英文、大写、小写(转)
  7. [转载]C#异步委托的用法 .
  8. 初识openwrt(下)
  9. 杭电2112(SPFA)
  10. 快速新建一个纯净的java pom项目 project
  11. paip.文件读写api php java python总结.txt
  12. html自动增加vbs代码,vbs烟花代码
  13. php- osc,【原创】phpdesigner 使用OSC@GIT
  14. [转]PT与PX区别
  15. 短信系统通道路由的设计和思路-移讯云短信系统
  16. 格式工厂 wav 比特率_这可能是 Mac 上最强格式转换工具
  17. 上云十年:阿里云的奇幻漂流
  18. openGauss数据库安全指导手册
  19. 计算机视觉和机器学习_我从计算机视觉和机器学习硕士课程中学到的东西
  20. Mybatis Log Plugin插件不正常解析无效解决大坑

热门文章

  1. 双系统启动界面自定义美化设置
  2. 移动通讯技术的发展历史
  3. pandas str方法的使用
  4. 从零开始的Docker [ 7 ] --- 顶级 Volumes,数据卷, 系统限制sysctls
  5. vue即时通讯,一个很好用的插件
  6. M56 智慧井盖的技术应用
  7. 2022年外贸公司邮箱签名怎么设置?
  8. 厉害!23岁本科生发14篇SCI论文,并任外审专家……
  9. 6-6 Isleap (5 分)
  10. Jenkins的详细安装及使用