导航:首页 > 源码编译 > 龙贝格算法c语言实现

龙贝格算法c语言实现

发布时间:2025-04-29 08:05:16

Ⅰ 龙贝格求积,c语言代码

#include<iostream.h>
#include<math.h>
# define Precision 0.000001//积分精度要求
# define e 2.71828183
#define MAXRepeat 10 //最大允许重复

double function(double x)//被积函数
{
double s;
s=pow(e,x)*cos(x);
return s;
}
double Romberg(double a,double b,double f(double x))
{
int m,n,k;
double y[MAXRepeat],h,ep,p,xk,s,q;
h=b-a;
y[0]=h*(f(a)+f(b))/2.0;//计算T`1`(h)=1/2(b-a)(f(a)+f(b));
m=1;
n=1;
ep=Precision+1;
while((ep>=Precision)&&(m<MAXRepeat))
{
p=0.0;
for(k=0;k<n;k++)
{
xk=a+(k+0.5)*h; // n-1
p=p+f(xk); //计算∑f(xk+h/2),T
} // k=0
p=(y[0]+h*p)/2.0; //T`m`(h/2),变步长梯形求积公式
s=1.0;
for(k=1;k<=m;k++)
{
s=4.0*s;// pow(4,m)
q=(s*p-y[k-1])/(s-1.0);//[pow(4,m)T`m`(h/2)-T`m`(h)]/[pow(4,m)-1],2m阶牛顿柯斯特公式,即龙贝格公式
y[k-1]=p;
p=q;
}
ep=fabs(q-y[m-1]);//前后两步计算结果比较求精度
m=m+1;
y[m-1]=q;
n=n+n; // 2 4 8 16
h=h/2.0;//二倍分割区间
}
return q;
}

main()
{
double a,b,Result;
cout<<"请输入积分下限:"<<endl;
cin>>a;
cout<<"请输入积分上限:"<<endl;
cin>>b;
Result=Romberg( a, b, function);
cout<<"龙贝格积分结果:"<<Result<<endl;
return 0;
}

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/liuhongyi666/archive/2008/12/23/3589002.aspx

阅读全文

与龙贝格算法c语言实现相关的资料

热点内容
程序员上海与北京 浏览:404
安卓手机的动态照片为什么卡 浏览:538
ad编译集成库时最常见的问题 浏览:845
matlab微分方程编程 浏览:700
安卓手机如何打开esp文件 浏览:545
什么app能安装应用 浏览:199
手机用什么app看电视剧电影好 浏览:603
导入原理图为什么文件夹不显示 浏览:653
androidapp风格 浏览:209
php取服务器url地址 浏览:293
linux时间调度算法 浏览:769
单片机最小电路详解 浏览:185
请求要求命令 浏览:806
电脑文件夹发微信显示被占用 浏览:295
手机怎么看加密视频 浏览:206
怎样解压手机es文件包 浏览:661
2017年学什么编程 浏览:935
金融期货pdf 浏览:694
程序员客栈的信息保密吗 浏览:507
编程显示器什么意思 浏览:147