Romberg求积分算法
// Integral-romberg方法求积分.cpp : 定义控制台应用程序的入口点。
//
/*
romberg方法求积分
方法也称为逐次分半加速法。它是在梯形公式,simpson公式和newton-cotes公式之间的关系的基础上,
构造出一种加速计算积分的方法。作为一种外推算法,它在不增加计算量的前提下提高了误差的精度。
在等距基点的情况下,用计算机计算积分值通常都采用吧区间逐次分半的方法进行。
这样,前一次分割得到的函数值在分半以后仍然可以被利用,并且易于编程。运行结果如下:
输入:
0
3.14159
输出:Romberg- -12.0703
增加迭代次数或提高精度时,程序运行
得到的结果几乎没有什么变化。可以看到,
和Simpson方法运行的结果基本一致,但
Romberg法速度更快、精度更高*/#include "stdafx.h"#include<iostream>
#include<math.h>
#define epsilon 0.00001
#define COUNT 100
using namespace std;double fun(double x)
{return x*x;
}double Romberg(double a,double b)
{int m ,n;double h,x,s,q,ep;double p,*R =new double[COUNT];h=b-a;R[0]= h*(fun(a)+ fun(b))/2.0;m=1;n=1;ep=epsilon+1.0;while ((ep >= epsilon)&& (m <COUNT)){p = 0.0;{for(int i=0;i<n;i++){x = a+ (i+0.5)*h ;p= p + fun(x);}p= (R[0]+ h*p)/2.0;s = 1.0;for(int k=1;k<=m;k++){s = 4.0*s;q= (s*p-R[k-1])/(s-1.0);R[k-1]= p;p =q;}p=fabs(q -R[m-1]);m =m + 1;R[m-1]= q;n = n + n;h = h/2.0;}return (q);}
}int _tmain(int argc, _TCHAR* argv[])
{double a,b;cout<<"Input a,b:a为下限,b为上限"<<endl;cin>>a>>b;cout<<"Romberg="<<Romberg(a,b)<<endl;system("pause");return 0;
}
Romberg求积分算法相关推荐
- VS2017/c语言-求积分算法
用c语言计算积分 一.积分计算原理 先把积分区域划分为n个曲边梯形,每个求值点为曲边梯形的两个底边中点,求得每个曲边梯形的面积即为积分值 用近似法求得积分:当n为无穷大时,可将该曲边梯形近似看成矩形, ...
- 龙贝格求积分算法例题_数值分析实习作业之龙贝格求积
北京化工大学数值分析,龙贝尔求积, 实习题五:用龙贝格求积公式法计算习题五第一题积分,是结果尽可能准确(eps = 0.000001) 主程序: %习题五:用龙贝格求积公式计算下列积分 clear c ...
- C++实现复化梯形公式求积分算法
1. 算法原理简介 步1 将积分区间2n等分; 步2 调用复化梯形公式: 2. 应用实例 取 n=10,利用复化梯形公式计算积分: 3. 程序代码 #include <iostream> ...
- 抛物线求积公式求积分算法matlab,数值计算实验报告---复合求积公式(梯形、抛物线、龙贝格)、导数求值(三点、四点、五点公式)...
----------------------个人作业,如果有后辈的作业习题一致,可以参考学习,一起交流,请勿直接copy ··复合抛物线公式: ··龙贝格公式: 四.实验内容 ------1 实验题目 ...
- C语言实现变步长求积分算法
链接:https://blog.csdn.net/chen_dsir/article/details/71257631 博主详细介绍了复合梯形公式, 链接:https://wenku.baidu.c ...
- 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/ ...
- 抛物线求积公式求积分算法matlab,基于Matlab的数值积分公式问题.doc
基于Matlab的数值积分公式问题 数值分析 学 号: 学 生 姓 名 :教 师 : 教师 2数值积分算法介绍............................................. ...
- matlab对信号积分,对信号求积分 - Simulink
- MathWorks 中国
说明 Integrator 模块输出其输入信号相对于时间的积分值. Simulink® 将 Integrator 模块作为具有一种状态的动态系统进行处理.模块动态由以下方程指定: {x˙(t)=u(t ...
- matlab用辛普森公式求积分_数值计算实验9 数值积分实验
实验9 数值积分实验 成绩 实验类型:●验证性实验 ○综合性实验 ○设计性实验 实验目的:进一步熟练掌握变步长数值积分算法,提高编程能力和解决定积分问题的实践技能. 实验内容:用龙贝格积分算法计算 ...
最新文章
- Python最会变魔术的魔术方法,我觉得是它
- 非关系型数据库(NoSQL)
- java 命令直接执行(运行)jar 包的几种方法【笔记自用】
- 遇到个鬼,在WIN08的DELL R710上安装CENTOS 63,无法格式化以前的硬盘分区,安装无法进行下去。...
- 写cookies注意事项
- Mac系统SequelPro下载介绍和使用方法
- python中执行shell命令的几个方法
- 数据库:跨数据库,服务器数据迁移
- 性能测试之二——性能测试的流程
- 【论文复现】使用RNN进行文本分类
- linux审计日志清除,Linux登录安全及用户操作审计 ,linux下清理日志脚本
- 回文后缀(suffix)
- HDOJ--1869--六度分离(用三种算法写的,希望能比较出来他们之间的区别)
- 鸟瞰 Java 并发框架
- 电阻触摸屏 linux 校准软件,android 电阻单点触摸屏校准
- java.nio.channels.NotYetConnectedException: null
- 无法直接在IE中打开PDF文件的解决方法
- tk.mybatis.mapper.MapperException: 无法获取实体类com.对应的表名
- 工作9年的程序员几点感受
- 【源码】核磁共振成像的脑部肿瘤检测与分类