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

热点内容
源码项目网 浏览:817
批量加密发送工资条 浏览:472
php抓取远程图片到本地 浏览:617
社保人证app在哪里下载 浏览:133
vf表单编程 浏览:377
程序员最怕的十个词 浏览:167
天津云服务器租用物理机 浏览:506
揉耳朵解压入眠 浏览:953
python求列表最大的元素 浏览:552
dos命令列出所有文件夹 浏览:816
pdf注释导出 浏览:636
androidpng按钮 浏览:814
在哪里app查汽车违章 浏览:550
1000多的编程笔记本电脑推荐 浏览:954
景德镇云服务器大概费用 浏览:362
程序员按公司要求开发软件 浏览:593
链接加密跳转 浏览:253
android设置dialog宽度 浏览:965
程序员能学钢琴吗 浏览:907
单片机木头 浏览:135