数值积分的基本思想

由积分中值定理可知,在积分区间

内存在一点
,成立
式的几何意义即为:底为
而高为
的矩形的面积恰等于所求曲边梯形的面积
。因此,要想求出
式左端积分,我们只需要知道三个值:
即可,这里
是显然的,问题在于
的具体位置一般是不清楚的,从而
未知。我们暂且将
称为区间
上的平均高度,我们的目标就是寻求一种求出平均高度
的算法,这样我们的问题也就解决了。

首先我们想到的是用区间两端点的“高度”

的算术平均值作为平均高度
的近似值,从而导出下述求积公式
式即为我们我们熟知的

梯形公式。写出MATLAB函数为

function

而若用区间中点

的“高度”
近似取代平均高度
,则可导出

中矩形公式(简称矩形公式

其MATLAB函数为

function

总结:更一般地,我们可以在区间

上适当选取某些节点
,然后用
的加权平均得到平均高度
的近似值,这样构造出来的求积公式具有下列通式

其中

称为

求积节点

称为

求积系数,也称作伴随节点

这种数值积分方法通常称为机械求积,其优势在于将积分求值问题归结为被积函数值的计算,很适合在计算机上使用。

代数精度

由于数值积分方法是近似方法,为保证精度,自然希望我们的求积公式能够对“尽可能多”的函数准确成立,这便提出了代数精度的概念。

如果某个求积公式对于次数不超过

的多项式均能够准确成立,但对于
次多项式就不准确成立,则称该求积公式具有
次代数精度

(或代数精确度)。

前面提到的梯形公式

和矩形公式
均具有一次代数精度。

求积公式的收敛性与稳定性

在求积公式

中,若
其中
,则称求积公式

收敛的。
对任给

,若
,只要
就有
成立,其中
为计算
时产生误差
后实际得到的值,即
,则称求积公式

稳定的。

定理

若求积公式

中系数

,则此求积公式是稳定的。

牛顿-柯特斯(Newton-Cotes)公式

将积分区间

划分为
等份,此时步长为
,选取等距节点
构造出的插值型求积公式

称为牛顿-柯特斯(Newton-Cotes)公式,其中

称为

柯特斯系数。可以通过下式确定

  • 时,
    这时的求积公式便是之前的梯形公式
  • 时,
    此时对应的求积公式便是

    辛普森(Simpson)公式:

    写成MATLAB函数为
function

  • 时的牛顿-柯特斯公式则特别称为

    柯特斯公式,其形式为

    这里

其MATLAB代码为

function

复合求积公式

由于牛顿-柯特斯公式在

时不具有稳定性,故不可能再通过提高阶的方法来提高求积精度。

复合求积法便是通过把积分区间分成若干个子区间(通常是等分),再在每个子区间上使用低阶求积公式的方法来提高精度的。

其实细心的同学可以发现,前面我所展示的MATLAB代码使用的便是对每个求积公式使用复合法完成的。常用的有复合梯形公式复合辛普森公式

龙贝格(Romberg)求积公式

前面介绍的复合求积方法可提高求积精度,如若精度仍不够,则可通过将步长逐次减半的方式来提高精度。如对复合梯形公式可导出其递推公式

其中

表示在
基础上步长
减半后的积分值。

定理

,则有
其中

系数

无关。

式可以看出,
阶,若用
代替
,有

再用

式再减去
式后再除以

这里

是与
无关的系数。

式可看出,用近似积分值
,其误差阶为
,显然误差阶是提高了。类似这种将计算
的近似值的误差阶由
提高到
的方法称为

外推算法,也称为理查德森(Richardson)外推算法

这是“数值分析”中一个重要的技巧,只要真值与近似值的误差能够表示成

的幂级数,如
式所示,都可以使用外推算法,提高精度。

龙贝格(Romberg)算法

次外推加速为

余项为

此方法常称为理查德森外推加速方法

设用

表示二分
次后求得的梯形值,且以
表示序列
次加速值,则由递推公式
可得

上次则称为龙贝格求积算法,计算过程如下:

  1. ,求
    。令
    (
    记区间
    的二分次数)。
  2. 求梯形值
    ,即按递推公式
    计算
  3. 求加速值。
  4. (预先给定的精度),则终止计算,并且
    ;否则令
    继续计算。

MATLAB代码为

function

自适应积分方法

复合求积方法通常适用于被积函数变化不太大的积分,如果在求积区间中被积函数变化很大,有的部分函数值变化剧烈,另一部分却变化平缓。这时如果统一将区间等分再用复合求积公式计算积分将会导致计算量很大,我们想实现的是在满足误差要求的前提下,对变化剧烈部分将区间细分,而平缓部分则可使用大步长,也即针对被积函数在区间上不同情形采用不同的步长,使得再满足精度前提下积分计算工作量尽可能小。其算法技巧是在不同区间上预测被积函数变化的剧烈程度确定相应步长。这就是自适应积分方法的基本思想。

下面是一个基于复合辛普森法的自适应积分算法的MATLAB代码:

function

下面我们计算积分

,可输入下列语句调用上述MATLAB函数进行计算
clear

结果为

I 

高斯求积公式

下面研究带权积分

为权函数)的求积公式

下面看定义

如果求积公式

具有
次代数精度,则称其节点

高斯点,相应公式

称为

高斯型求积公式。

这里主要包括四种高斯型求积公式,即

  • 高斯-勒让德求积公式
  • 高斯-切比雪夫求积公式
  • 高斯-拉盖尔求积公式
  • 高斯-埃尔米特求积公式

多重积分

这里主要说一下多重积分计算的思路,归结为一句话,就是:多重积分化累次积分,再由里到外使用数值积分公式进行求积计算。

matlab用辛普森公式求积分_数值积分常用方法相关推荐

  1. matlab用辛普森公式求积分_数值计算实验9 数值积分实验

    实验9 数值积分实验 成绩 实验类型:●验证性实验  ○综合性实验  ○设计性实验 实验目的:进一步熟练掌握变步长数值积分算法,提高编程能力和解决定积分问题的实践技能. 实验内容:用龙贝格积分算法计算 ...

  2. matlab用辛普森公式求积分_标准正态分布概率密度函数的定积分计算方法及Python实现代码...

    最近利用碎片时间在读Allen B.Downey的<贝叶斯思维:统计建模的Python学习法>,顺便用手机上的Pythonista写实例.因为Pythonista没有scipy科学计算包, ...

  3. matlab用辛普森公式求积分_积分近似计算之辛普森公式

    对于积分区间[a, b],若 则成立 辛普森公式 辛普森公式可看作是改良的梯形公式.梯形公式是以直线逼近实际曲线,而辛普森公式则以二次曲线(即抛物线)逼近. 以二次曲线逼近实际曲线 根据辛普森公式可得 ...

  4. matlab用辛普森公式求积分_如何用Excel公式求最大值对应的行列序号

    微信公众号: Excel and Python 微信名搜索: 实用办公编程技能 如何用Excel公式求最大值对应的行列序号呢? 下面,我们来看看来自问题互动栏目的一个具体问题. 具体问题:求出哪一天哪 ...

  5. matlab用辛普森公式求积分_变限积分函数求导以及高阶导数求法的一些总结

    感谢 @聚创考研 的张帆老师,给我上了一堂生动的课.特此总结一下课上求导数的方法(怕自己忘了). 1.变限积分函数求导 变限积分函数求导简单的分为三类: 第一类(或者形如 这种)可以直接得到 ,第二. ...

  6. 2017杭电ACM集训队单人排位赛 - 2 -1002 地狱飞龙 (辛普森公式求积分)(模板)

    题干: 最近clover迷上了皇室战争,他抽到了一种地狱飞龙,很开心.假设地域飞龙会对距离为d的敌人每秒造成k/d2k/d^2伤害.假设地域飞龙位于坐标轴原点,以每秒v1的速度向y轴正方向移动,敌人在 ...

  7. C++实现复化辛普森公式求积分算法

    1. 算法原理简介 步1 将积分区间 [a,b] 分成 n 等分,分点为 xk=a+kh(k=0,1,⋯,n),其中 h=(b-a)/n. 步2 记区间 [xk,x(k+1)] 的中点为 x(k+1/ ...

  8. 自适应复化辛普森公式求积算法(C语言实现)

    自适应复化辛普森公式求积算法(C语言实现) 利用复化辛普森公式求积分自适应步骤 基于C语言实现的代码 利用复化辛普森公式求积分自适应步骤 h为步长,a为积分下限,b为积分上限,f为积分函数,n为划分的 ...

  9. matlab中几种求积分的方法

    matlab中几种求积分的方法 举例图形 Midpoint Rule Trapezoid Rule 13 Simpsons 利用integral 结果显示 matlab中几种求积分的方法 最近看了几天 ...

最新文章

  1. IP数据报-格式-分片
  2. 排序算法——基数排序
  3. 2-1 gradle安装
  4. LeetCode 1444. 切披萨的方案数(DP)
  5. 寂寞了就去搞钱?俞敏洪举报“俞敏洪”:“搞钱论”没一句话是我说的
  6. 2009年IT行业最重要的十大认证
  7. 集美大学计算机工程学院 曾勇进,电子政务评估方法AHP 的研究及实现.pdf
  8. EPSON/爱普生打印机Linux打印服务器基于ARM驱动安装踩坑CUPS实现支持远程打印AirPrint
  9. 楪祈机器人_饥荒 Inori楪祈人物MOD
  10. 领导力教练:世界著名企业教练们的实践心得(原书第3版)
  11. JetPack之DataStore源码笔记
  12. 什么是IaaS PaaS SaaS,看这一篇就够了
  13. BUUCTF 每日打卡 2021-8-18
  14. 2019年6月20日工作总结---CSS篇
  15. gensim Dictionary 去除某个词 gensim.corpora.dictionary.Dictionary
  16. 微软求职攻略之笔试答疑
  17. .io域名在申请SSL证书时被坑
  18. 百度是如何计算出关键词指数呢?
  19. PalmOS开发教程-1
  20. VirtuaNES.v0.97源码探究6 内存相关

热门文章

  1. Android RGB颜色值对照表
  2. 面试官问我like如何优化
  3. Leetcode 求众数
  4. 一个平凡但不平庸的程序猿2018个人总结 | 掘金年度征文
  5. 一些基础的图像颜色特征
  6. 提示错误“expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘’ token“
  7. 多线程爬虫(1)-简单线程和面向对象线程
  8. 树结构的基本概念和理解
  9. 2023年全国最新食品安全管理员精选真题及答案25
  10. Python在指定环境下安装第三方库的报错解决办法