博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【数值分析】复化积分公式
阅读量:7262 次
发布时间:2019-06-29

本文共 933 字,大约阅读时间需要 3 分钟。

 对于积分:
只要找到被积公式的原函数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
#include
double Function(double x)//所要计算积分的函数f(x){ if(x==0)//sin(x)/x在0处的取值为1 return 1; else return sin(x)/x;}//复化梯形公式double Trapz(double a,double b,int n){ double h=(b-a)/n; double T=0; for(int i=1;i
运行结果如下图:
结果分析:
     比较复化梯形公式和复化辛普森公式两种方法的运行结果,我们发现复化辛普森公式与准确值0.9460831更加接近,复化梯形公式只有2位有效数字,而复化辛普森公式有6为有效数字。

原文:

作者:nineheadedbird

你可能感兴趣的文章
ios开发网络第一天之05线程安全问题
查看>>
Navicat 编辑器高级功能之自动完成代码
查看>>
kafka 资料汇总
查看>>
把JFinal整合到Actframework是一种什么样的体验
查看>>
软件开发人员: 我此时想彻彻底底的加班!
查看>>
如何做好服务器安全维护工作
查看>>
安全狗获ISO27001信息安全管理体系认证
查看>>
C语言代码格式
查看>>
算法复杂度分析
查看>>
log4j配置详解
查看>>
向左滚动文字 js代码效果
查看>>
Javascript获取HTML静态页面参数传递值示例
查看>>
SOA思想
查看>>
囚徒健身
查看>>
用Javascript刷新框架子页面的七种方法
查看>>
检查单 2013-11-27
查看>>
makefile讲义(1)——makefile基础(概述)
查看>>
Cookie
查看>>
IOS上路_11-简单示例-手势识别2-2
查看>>
2.7 xargs和exec详解
查看>>