#先上代码后补笔记#

#可以直接复制粘贴使用的MATLAB函数!#

1. 定步长牛顿-柯茨积分公式

function [ integration ] = CompoInt( func, left, right, step, mode )
% 分段积分牛顿-柯茨公式;
% 输入5个参数:被积函数(FUNCTIONHANDLE)'func',积分上下界'left'/'right',步长'step',
% 模式mode共三种('midpoint','trapezoid','simpson');
% 返回积分值;
switch mode
% 仅仅是公式不同
case 'midpoint'
node = left; integration = 0;
while (node + step <= right) % 按照给定步长开始分段积分
pieceInt = step*(func(node + step/2)); % 使用中点积分公式
integration = integration + pieceInt; node = node + step;
end
if (node < right) % 补齐最后一段积分
pieceInt = (right - node)*(func((node + right)/2));
integration = integration + pieceInt;
end
case 'trapezoid'
node = left; integration = 0;
while (node + step <= right)
pieceInt = step*(func(node) + func(node + step))/2; % 使用梯形公式
integration = integration + pieceInt; node = node + step;
end
if (node < right)
pieceInt = (right - node)*(func(node) + func(right))/2;
integration = integration + pieceInt;
end
case 'simpson'
node = left; integration = 0;
while (node + step <= right)
pieceInt = step*(func(node) + 4*func(node + step/2) + func(node + step))/6; % 使用辛普森公式
integration = integration + pieceInt; node = node + step;
end
if (node < right)
pieceInt = (right - node)*(func(node) + 4*func((node + right)/2) + func(right))/6;
integration = integration + pieceInt;
end
end

  

2. 自适应分段积分方法

通过函数内调用自身的方法使得积分函数显得简洁明快。因为需要调用自身计算原积分的一段,必须传入参数length标识原积分上下限总长,通过left, right和length三个参数才能够得到某一段的要求精度。

function [ integration ] = AdaptInt( func, left, right, prec, length )
% 自适应分段积分函数AdaptInt;
% 输入五个参数:被积函数(句柄)func,积分上下限right,left,要求精度prec,积分总长length;
% 输出一个参数:积分值integration;
trapeInt = (right - left)*(func(left) + func(right))/2;
midInt = (right - left)*func((left + right)/2);
err = (trapeInt - midInt)/3; % 由中点公式和梯形公式差估算误差
if (abs(err) < prec && (right - left) < length/5) % 如果误差符合要求,则使用辛普森公式计算较精确结果
integration = (right - left)*(func(left) + 4*func((left + right)/2) + func(right))/6;
else % 否则,二分该段,分别进行自适应分段积分
integration = AdaptInt(func, left, (left + right)/2, prec/2, length) + AdaptInt(func, (left + right)/2, right, prec/2, length);
end
end

数值积分:基于牛顿-柯茨公式的定步长和自适应积分方法 [MATLAB]的更多相关文章

  1. MathType给公式加三角着重号的方法

    MathType是一款出色的数学公式编辑器,不仅可以兼容word,还与PPT也兼容.它也可以在PPT中编辑出非常漂亮的公式,再加上PPT本身所具有的动画.颜色.显示等功能,在演示数学公式时非常的精美. ...

  2. struts2视频学习笔记 22-23(基于XML配置方式实现对action的所有方法及部分方法进行校验)

    课时22 基于XML配置方式实现对action的所有方法进行校验   使用基于XML配置方式实现输入校验时,Action也需要继承ActionSupport,并且提供校验文件,校验文件和action类 ...

  3. 基于原生JS封装数组原型上的sort方法

    基于原生JS封装数组原型上的sort方法 最近学习了数组的原型上内置方法的封装,加强了用原生JS封装方法的能力,也进一步理解数组方法封装的过程,实现的功能.虽然没有深入底层,了解源码.以下解法都是基于 ...

  4. 基于FPGA实现的高速串行交换模块实现方法研究

    基于FPGA实现的高速串行交换模块实现方法研究 https://wenku.baidu.com/view/9a3d501a227916888486d7ed.html

  5. 基于Linux应用层的6LOWPAN物联网网关及实现方法

    本发明涉及一种基于Linux应用层的6LOWPAN物联网网关及实现方法,所述物联网网关包括开发平台以及无线射频模块,其实现方法是:所述6LOWPAN物联网网关的以太网网口收到访问6LOWPAN无线传感 ...

  6. 基于webstorm卡顿问题的2种解决方法

    基于webstorm卡顿问题的2种解决方法:https://www.jb51.net/article/128441.htm

  7. C# chart.DataManipulator.FinancialFormula()公式的使用 线性回归预测方法

    最近翻阅资料,找到 chart.DataManipulator.FinancialFormula()公式的使用,打开另一扇未曾了解的窗,供大家分享一下. 一 DataManipulator类 运行时, ...

  8. 一种基于FSIM对视频编码图像质量客观评价的方法

    一 为什么对视频编码图像质量客观评价     视频图像质量主观评价一般采用连续双激励质量度量法对任一观测者连续给出原始视频图像和处理过的失真图像,由观测者根据主观感知给出分值,其需针对多个视频对象进行 ...

  9. 实现基于Keepalived高可用集群网站架构的多种方法

    实现基于Keepalived高可用集群网站架构 随着业务的发展,网站的访问量越来越大,网站访问量已经从原来的1000QPS,变为3000QPS,目前业务已经通过集群LVS架构可做到随时拓展,后端节点已 ...

随机推荐

  1. Extjs不错的博客

    http://www.cnblogs.com/fangsui/category/372751.html http://www.cnblogs.com/WangJinYang/tag/EXT.NET/ ...

  2. ActiveMQ伪集群部署

    本文借鉴http://www.cnblogs.com/guozhen/p/5984915.html,在此基础上进行了完善,使之成为一个完整版的伪分布式部署说明,在此记录一下! 一.本文目的 介绍如何在 ...

  3. Linux系统故障排除

    可能出现的故障: 1,管理员密码忘记 进入单用户模式修改密码 2.系统无法正常启动 a.grub损坏(MBR损坏,grub配置文件丢失) b.系统初始化故障(某文件系统无法正常挂载.驱动不兼容) c. ...

  4. webstorm配置babel自动转译es6的方法

    1.npm安装babel npm install -g babel-cli 2.npm安装Babel的preset npm install --save-dev babel-preset-es2015 ...

  5. Java语言基本数据类型

    ■Java是一种强类型语言,每个变量都必须声明其类型.■Java的数据类型分为两大类:基本类型和引用类型(引用数据类型的大小统一为4个字节,记录的是其引用对象的地址).■Java中定义了3类8种基本数 ...

  6. poj_1204 Trie图

    题目大意 给出一个RxC的字符组成的puzzle,中间可以从左向右,从右到左,从上到下,从下到上,从左上到右下,从右下到左上,从左下到右上,从右上到左下,八个方向进行查找字符串.     给出M个字符 ...

  7. c++11——右值引用

    1. 左值和右值 左值是表达式结束之后仍然存在的持久化对象,而右值是指表达式结束时就不再存在的临时对象.     c++11中,右值分为两种类型:将亡值(xvalue, expiring value) ...

  8. centos7 ubuntu14 添加sudo 权限 ,禁用每次sudo 需要输入密码

    安装完centos7后,默认没有启用sudo,首先应该是对sudo进行设置.sudo的作用就是使当前非root用户在使用没有权限的命令 时,直接在命令前加入sudo,在输入自己当前用户的密码就可以完成 ...

  9. Python 如何引入自定义模块

    Python 中如何引用自己创建的源文件(*.py)呢? 也就是所谓的模块. 假如,你有一个自定义的源文件,文件名:saySomething.py .里面有个函数,函数名:sayHello.如下图: ...

  10. 腾讯云大数据套件Hermes-MR索引插件使用总结

    版权声明:本文由王亮原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/121 来源:腾云阁 https://www.qclou ...