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

熱點內容
java網路編程實驗總結 瀏覽:82
linux下dns伺服器配置 瀏覽:704
我的命令是絕對的 瀏覽:929
助飛器app在哪裡下 瀏覽:61
無廣告win10解壓縮 瀏覽:473
台灣的伺服器怎麼選雲伺服器 瀏覽:810
群暉媒體伺服器平板上怎麼看 瀏覽:622
pdf文件怎麼轉換成jpg格式 瀏覽:720
程序員訓練時間 瀏覽:657
書簽主頁源碼帶後台 瀏覽:570
神舟顯卡驅動解壓有兩個文件夾 瀏覽:362
接受調度命令的過程中 瀏覽:803
銀行下一代app在哪裡 瀏覽:423
加密學習資料及答案 瀏覽:334
我來貸app在哪裡下載 瀏覽:953
羽化命令使用 瀏覽:360
php提權木馬源碼 瀏覽:656
趣充app實名認證在哪裡 瀏覽:419
java多線程習題 瀏覽:422
linuxpython27卸載 瀏覽:765