随笔-48  评论-170  文章-1  trackbacks-0

#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<<"请输入积分的下、上限:";
  cin>>a>>b;
  cout<<"输入你要的精度:";
  cin>>e;
  Romberg(a,b,e);
}

posted on 2007-06-08 23:28 星梦情缘 阅读(813) 评论(3)  编辑 收藏 引用 所属分类: 数据结构的所有实现程序

评论:
# re: 数值分析--龙贝格算法 2007-06-11 15:30 | 农夫
怎么用的啊?  回复  更多评论
  
# re: 数值分析--龙贝格算法 2007-06-11 20:53 | 星梦情缘
double f(double x)
{
return pow(x,3.0/2.0);
}

你把这里的函数改成你要的函数就可以了用了的  回复  更多评论
  
# re: 数值分析--龙贝格算法 2007-06-20 23:39 |
有关于反幂法计算矩阵特征值的程序吗  回复  更多评论
  

标题  
姓名  
主页
验证码 *
内容(提交失败后,可以通过“恢复上次提交”恢复刚刚提交的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
[使用Ctrl+Enter键可以直接提交]
相关链接:
网站导航: