導航:首頁 > 源碼編譯 > 龍貝格演算法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語言實現相關的資料

熱點內容
安卓手機的動態照片為什麼卡 瀏覽:538
ad編譯集成庫時最常見的問題 瀏覽:845
matlab微分方程編程 瀏覽:699
安卓手機如何打開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
網路編程的就業 瀏覽:260