龙贝格数值分析作业c语言,数值分析龙贝格实验报告.doc
數值分析龍貝格實驗報告
實驗三 龍貝格方法
【實驗類型】 驗證性
【實驗學時】 2學時
【實驗內容】
1.理解龍貝格方法的基本思路
2.用龍貝格方法設計算法,編程求解一個數值積分的問題。
【實驗前的預備知識】
1.計算機基礎知識2.熟悉編程基本思想3.熟悉常見數學函數;
【實驗方法或步驟】
龍貝格方法的基本思路龍貝格方法是在積分區間逐次二分的過程中,通過對梯形之值進行加速處理,從而獲得高精度的積分值。
龍貝格方法的算法
步驟1 準備初值 和,用梯形計算公式計算出積分近似值
步驟2 按區間逐次分半計算梯形公式的積分近似值令
,計算,
步驟3 按下面的公式積分梯形公式:
辛普生公式:龍貝格公式:
步驟4 精度控制
當,(為精度)時,終止計算,并取為近似值否則將步長折半,轉步驟2。
[實驗程序]
#include
#include
# define Precision 0.00001//積分精度要求
# define e 2#define MAXRepeat 10 //最大允許重復
double function(double x)//被積函數
{
double s;
s=2*pow(e,-x)/sqrt(3.1415926);
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
{
p=0.0;
for(k=0;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<
cin>>a;
cout<
cin>>b;
Result=Romberg( a, b, function);
cout<
return 0;
}
總結
以上是生活随笔為你收集整理的龙贝格数值分析作业c语言,数值分析龙贝格实验报告.doc的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 树莓派 pip安装mysql_树莓派 p
- 下一篇: frm考试可以用计算机,FRM考试,考生