导航:首页 > 源码编译 > 龙贝格算法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语言实现相关的资料

热点内容
自己购买云主服务器推荐 浏览:416
个人所得税java 浏览:756
多余的服务器滑道还有什么用 浏览:184
pdf劈开合并 浏览:21
不能修改的pdf 浏览:745
同城公众源码 浏览:481
一个服务器2个端口怎么映射 浏览:288
java字符串ascii码 浏览:71
台湾云服务器怎么租服务器 浏览:468
旅游手机网站源码 浏览:325
android关联表 浏览:938
安卓导航无声音怎么维修 浏览:329
app怎么装视频 浏览:428
安卓系统下的软件怎么移到桌面 浏览:89
windows拷贝到linux 浏览:765
mdr软件解压和别人不一样 浏览:897
单片机串行通信有什么好处 浏览:333
游戏开发程序员书籍 浏览:855
pdf中图片修改 浏览:281
汇编编译后 浏览:484