Romberg求积分算法

// Integral-romberg方法求积分.cpp : 定义控制台应用程序的入口点。
//
/*
romberg方法求积分
方法也称为逐次分半加速法。它是在梯形公式,simpson公式和newton-cotes公式之间的关系的基础上,
构造出一种加速计算积分的方法。作为一种外推算法,它在不增加计算量的前提下提高了误差的精度。
在等距基点的情况下,用计算机计算积分值通常都采用吧区间逐次分半的方法进行。
这样,前一次分割得到的函数值在分半以后仍然可以被利用,并且易于编程。
 
运行结果如下:
输入:
0 
3.14159 
输出:Romberg- -12.0703
增加迭代次数或提高精度时,程序运行
得到的结果几乎没有什么变化。可以看到,
和Simpson方法运行的结果基本一致,但
Romberg法速度更快、精度更高
 
 
*/
 
#include "stdafx.h"
 
 
 
#include
#include
#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 >a>>b;
    cout<<"Romberg="<


你可能感兴趣的:(ACM)