#include"iostream.h"
#include"math.h"
double f(double x)
{
return pow(x,3.0/2.0);
}
double T(double n,double a,double b)
{
double sum=0;
for(int i=0;2*i+1<=n;i++)
{
sum+=f(a+double(2*i+1)/n);
}
if(n==1) return 0.5*(f(a)+f(b));
return 0.5*T(n/2,a,b)+sum*(1.0/n);
}
void Romberg(double a,double b,double e)
{
double Old[10]={0.0},New[10]={0.0};
double h=b-a;
New[0]=h*(f(a)+f(b))/2.0;
int j;
for(int i=1;;i++)
{
for(j=0;j<i;j++) Old[j]=New[j];
New[0]=T(pow(2,i),a,b);
for(j=1;j<=i;j++)
New[j]=(pow(4,j)*New[j-1]/(pow(4,j)-1)-Old[j-1]/(pow(4,j)-1));
if(fabs(New[i]-Old[i-1])<e) break;
}
cout<<New[i];
}
void main()
{
double a,b;
double e;
cout<<"請(qǐng)輸入積分的下、上限:";
cin>>a>>b;
cout<<"輸入你要的精度:";
cin>>e;
Romberg(a,b,e);
}
posted on 2007-06-08 23:28 星夢(mèng)情緣 閱讀(3444) 評(píng)論(6) 編輯 收藏 引用 所屬分類: 數(shù)據(jù)結(jié)構(gòu)的所有實(shí)現(xiàn)程序