数值计算方法实验3

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

学院(系)名称:

附录(源程序及运行结果):

一.变步长梯形法

#include

#include

double f(double x){return 4/(1+x*x);}

void main(){

double a,b,h,T1,T2,e,S,x;

printf("请输入区间a和b:");

scanf("%lf,%lf",&a,&b);

printf("精度:");

scanf("%lf",&e);

h=b-a;

T2=h/2*(f(a)+f(b));

do{ T1=T2;

S=0;

x=a+h/2;

do{ S=S+f(x);

x=x+h;

}while(x

T2=T1/2+h*S/2;

h=h/2;

}while(fabs(T2-T1)>=e);

printf("用变步长梯形法输出T2:%lf\n",T2);

}

运行结果:

二.龙贝格积分法

#include

#include

double f(double x){return sin(x);}

void main(){

double a,b,h,T1,T2=1,e,S,S1,S2=1,x,C1,C2,R1=0,R2=1; printf("请输入区间a和b:");

scanf("%lf,%lf",&a,&b);

printf("精度:");

scanf("%lf",&e);

h=2*(b-a);

T2=(b-a)/2*(f(a)+f(b));

int k=0;

while(fabs(R2-R1)>=e){

k=k+1;

h=h/2;

T1=T2;

S1=S2;

S=0;

x=a+h/2;

do{S=S+f(x);

x=x+h;

}while(x

T2=T1/2+h/2*S;

S2=T2+(T2-T1)/3;

if(k==1){continue;}

C2=S2+(S2-S1)/15;

if(k==2){C1=C2;continue;}

R2=C2+(C2-C1)/63;

if(k==3){R1=R2;C1=C2;continue;}

C1=C2;

R1=R2;

}

printf("%lf",R2);

}

运行结果:

相关文档
最新文档