基于复化辛卜生求积公式的变步长求积算法

1.辛卜生求积公式

对于I∗=∫abf(x)dxI^*=\int_{a}^{b}{f(x)dx}I∗=∫ab​f(x)dx ,差值型求积公式就是构造多项式Pn(x)P_n(x)Pn​(x),使I∗≈I=I∗=∫abf(x)dxI^*\approx I= I^*=\int_{a}^{b}{f(x)dx}I∗≈I=I∗=∫ab​f(x)dx。
如果以a,c=a+b2,ba,c=\frac{a+b}{2},ba,c=2a+b​,b为三个差值节点,构造二次插值多项式
P2(X)=(x−c)(x−b)(a−c)(a−b)f(a)+(x−a)(x−b)(c−a)(c−b)f(c)+(x−a)(x−c)(b−a)(b−c))f(b)P_2(X)=\frac{(x-c)(x-b)}{(a-c)(a-b)}f(a)+\frac{(x-a)(x-b)}{(c-a)(c-b)}f(c)+\frac{(x-a)(x-c)}{(b-a)(b-c))}f(b)P2​(X)=(a−c)(a−b)(x−c)(x−b)​f(a)+(c−a)(c−b)(x−a)(x−b)​f(c)+(b−a)(b−c))(x−a)(x−c)​f(b)
则可以推出I=∫abP2(x)dx==λ0f(a)+λ1f(c)+λ2f(b)I=\int_a^bP_2(x)dx==\lambda_0f(a)+\lambda_1f(c)+\lambda_2f(b)I=∫ab​P2​(x)dx==λ0​f(a)+λ1​f(c)+λ2​f(b)
其中λ0=∫ab(x−c)(x−b)(a−c)(a−b)dx=16(b−a)\lambda_0=\int_a^b\frac{(x-c)(x-b)}{(a-c)(a-b)}dx=\frac{1}{6}(b-a)λ0​=∫ab​(a−c)(a−b)(x−c)(x−b)​dx=61​(b−a)λ1=∫ab(x−a)(x−b)(c−a)(c−b)dx=46(b−a)\lambda_1=\int_a^b\frac{(x-a)(x-b)}{(c-a)(c-b)}dx=\frac{4}{6}(b-a)λ1​=∫ab​(c−a)(c−b)(x−a)(x−b)​dx=64​(b−a)λ2=∫ab(x−a)(x−c)(b−a)(b−c)dx=16(b−a)\lambda_2=\int_a^b\frac{(x-a)(x-c)}{(b-a)(b-c)}dx=\frac{1}{6}(b-a)λ2​=∫ab​(b−a)(b−c)(x−a)(x−c)​dx=61​(b−a)
称为辛卜生求积公式
I∗=∫abf(x)dx≈b−a6[f(a)+4f(c)+f(b)]I^*=\int_{a}^{b}{f(x)dx}\approx \frac{b-a}{6}[f(a)+4f(c)+f(b)]I∗=∫ab​f(x)dx≈6b−a​[f(a)+4f(c)+f(b)]
如果把[a,b]区间分为步长为h=b−anh=\frac{b-a}{n}h=nb−a​的子区间[xk,xk+1][x_k , x_{k+1}][xk​,xk+1​],再将子区间的定积分加起来得到整个区间的定积分近似值,该公式则称为复化辛卜生公式

取步长为h=b−anh=\frac{b-a}{n}h=nb−a​,将[a,b]分为n等分,分割点为xk=a+kh,k=0,1,2,3⋯n;x_k=a+kh,k=0,1,2,3\cdots n;xk​=a+kh,k=0,1,2,3⋯n;
由辛卜生公式得:
∫abf(x)dx≈∑k=0n−1h6[f(xk)+4f(xk+xk+12)+f(xk+1)]\int_a^bf(x)dx\approx\sum_{k=0}^{n-1} \frac{h}{6} \left[ f(x_k)+4f(\frac{x_k+x_{k+1}}{2})+f(x_{k+1}) \right]∫ab​f(x)dx≈k=0∑n−1​6h​[f(xk​)+4f(2xk​+xk+1​​)+f(xk+1​)]
=h6[f(a)+4∑k=0n−14f(xk+xk+12)+2∑k=1n−1f(xk)+f(b)]=\frac{h}{6}\left[ f(a)+4\sum_{k=0}^{n-1}4f(\frac{x_k+x_{k+1}}{2})+2\sum_{k=1}^{n-1}f(x_k)+f(b)\right]=6h​[f(a)+4k=0∑n−1​4f(2xk​+xk+1​​)+2k=1∑n−1​f(xk​)+f(b)]
c语言程序实现如下:
例子∫12x2dx\int_1^2 x^2dx∫12​x2dx:

#include <iostream>
double f(double x){return x*x;
}
double simpson(double (*f)(double x), double a, double b,int n){double result=0;double step=(b-a)/n;for (int i = 0; i <n ; ++i) {result+=f(a+step*i)+4*f(a+step*(i+1/2))+f(a+step*(i+1));}result=result*(step/6);return result;
}
int main(){double x;x=simpson(f,1,2,100000);printf("%lf",x);return 0;
}

结果:
2.333323
Process finished with exit code 0

基于复化辛卜生求积公式的变步长求积算法相关推荐

  1. 微分求积:复化梯形、复化辛浦生

    复化梯形 将积分区间[a,b]划分n等分,步长,求积节点,在每个小区间上应用梯形公式 然后将它们累加求和,作为所求积分I的近似值. 记 式为复化梯形求积公式,下标n表示将区间n等分. 算法流程 算法代 ...

  2. 复化辛甫生求积法matlab,数值分析习题.doc

    数值分析习题 第一章 绪论 姓名 学号 班级 习题主要考察点:有效数字的计算.计算方法的比较选择.误差和误差限的计算. 1 若误差限为,那么近似数0.003400有几位有效数字?(有效数字的计算) 2 ...

  3. 【数值分析】微分求积:复化梯形、复化辛浦生

    本科课程参见:<软件学院那些课> 复化梯形 将积分区间[a,b]划分n等分,步长,求积节点,在每个小区间上应用梯形公式 然后将它们累加求和,作为所求积分I的近似值. 记

  4. 辛甫生算法c语言,[转载]实变函数,计算方法程序,康托图

    计算方法程序: 1. 秦九韶算法 2.二分法 3.拉格朗日插值 4.埃特金算法 5.复化梯形法 6.复化辛甫生算法 7.二阶龙格库塔方法 8.四阶龙格库塔方法 9.改进的欧拉方法 10.迭代法 11. ...

  5. 旅美华人票友演绎易卜生话剧《玩偶之家》

    昨晚看了易卜生的经典话剧<玩偶之家>,拍了几张照片.这个剧从上个世纪初引入中国以来,不知道在中国演出了多少次,它对中国妇女的影响也非常深远.鲁迅在1923年写了<娜拉出走后怎样> ...

  6. php狼和兔子算法,PHP基于递归算法解决兔子生兔子问题php技巧

    这篇文章主要介绍了PHP基于递归算法解决兔子生兔子问题,结合实例形式分析了兔子生兔子问题的php面试题采用循环与递归两种思路的解决方法,需要的朋友可以参考下 本文实例讲述了PHP基于递归算法解决兔子生 ...

  7. 兔子问题 php,PHP基于递归算法解决兔子生兔子问题php技巧

    这篇文章主要介绍了PHP基于递归算法解决兔子生兔子问题,结合实例形式分析了兔子生兔子问题的php面试题采用循环与递归两种思路的解决方法,需要的朋友可以参考下 本文实例讲述了PHP基于递归算法解决兔子生 ...

  8. 基于复化梯度求积的求积步长自适应matlab实现

    一.基本思想 把区间逐次二分,反复利用复化求积公式进行计算,直至二分前后的两次积分近似值之差符合精度要求为止.采用误差的"事后估计"方法进行步长的自动选择. 以复化梯形公式为例,设 ...

  9. 使用矩形法(三种形式)、梯形法、辛普生方法编程计算

    题号: 编写文件:在matlab中创建新脚本,并保存,然后在命令行执行. function ss=exam3_1(t,a,b,n) dx=(b-a)/n; syms x; ff=x*exp(x)*si ...

  10. matlab分析能控条件,基于MATLAB的Luenberger能控规范型的算法及实现

    基于MATLAB的Luenberger能控规范型的算法及实现 该文从线性系统能控规范型的基本理论入手,详细介绍了Luenber (本文共4页) 阅读全文>> 线性系统的动态性能主要取决于系 ...

最新文章

  1. IBM AIX JFS 数据恢复记录(暂)
  2. Yahoo! UI Library入门
  3. yii2 mysql_Yii2 数据库操作汇总
  4. Activiti中的各个service的作用
  5. Python并发编程—进程
  6. Springboot 项目中过滤器的使用
  7. 6. 添加权限管理模块
  8. 迭代重心法 matlab,重心法
  9. Anaconda出现Navigator Error的解决办法
  10. linux内核hack,怎么Hack Linux的内核符号?
  11. extern C C 调用c++
  12. matlab实现序列卷积和运算,用matlab计算序列卷积和并绘图
  13. Clip染色质免疫沉淀(CLIP测序)
  14. 如何缩短测试开发周期和开发成本?
  15. 麦克风测试软件 ios,iOS开发麦克风权限判断
  16. 快速集成百度定位功能
  17. 如何判断2的n次方?用四种方式来扒一扒。
  18. 搭建rsyslog日志服务器记录RouterOS路由器日志
  19. EasyExcel 实现单元格数据下拉选
  20. Ubuntu 之 Audacity踩坑之旅

热门文章

  1. fastboot 操作
  2. 经典语录(个人喜欢)
  3. nginx日志磁盘空间使用率100%
  4. 深度学习方法在糖尿病视网膜病变诊断中的应用
  5. Icebound and Sequence(等比数列公式的递归处理)
  6. 用Excel做了7天报表,这个领导喜欢的可视化工具,只用了7小时
  7. java2048朝代版代码_2048朝代版完整版
  8. Home Barbering Grows In Recession, With Hairy Results
  9. Flask PyMongo的基本使用
  10. 云杰恒指:7.19恒指期货早盘资讯