资源描述:
《数值计算方法实验报告6》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验报告实验名称(教师填写)利用欧拉方法求常微分方程近似数值解实验目的(教师填写)1.学会利用欧拉方法求微分方程的数值解。2.观察欧拉显式方法的收敛性。3.观察欧拉显式方法的数值不稳定性。实验题目(教师填写)完成第一题。(第二题选作。)1.取用欧拉显式方法求解一阶线性微分方程:计算到并与精确解比较。2.取用欧拉显式方法求解线性微分方程:并画出曲线。用改进的欧拉方法(或欧拉隐式方法)重复求解上述问题。试解释你所观察到的现象。实验报告要求(教师填写)7实验内容与步骤(学生填写)如果步骤较多,请自行加页(A
2、4幅面)第一题#include#includefloatfunc(floatx,floaty){y=pow(y,1/3);return(x*y);}floateuler(floatx0,floatxn,floaty0,intn){floatx,y,h;inti;x=x0;y=y0;h=(xn-x0)/n;for(i=1;i<=n;i++){y=y+h*func(x,y);x=x0+i*h;}return(y);}voidmain(){floatx0,xn,y0,e;i
3、ntn;intclrscr();printf("inputn:");scanf("%d",&n);printf("inputx0,xn:");scanf("%f%f",&x0,&xn);printf("inputy0:");scanf("%f",&y0);e=euler(x0,xn,y0,n);printf("y(%f)=%6.4f",y0,e);}7实验内容与步骤(学生填写)选做题方法一#include#includefloatfunc(floatx
4、,floaty){return((50)*y);}floateuler(floatx0,floatxn,floaty0,intn){floatx,y,h,yp,yc;inti;x=x0;y=y0;h=(xn-x0)/n;for(i=1;i<=n;i++){y=y+h*func(x,y);x=x0+i*h;}return(y);}voidmain(){floatx0,xn,y0,e;intn;intclrscr();printf("inputn:");scanf("%d",&n);printf(
5、"inputx0,xn:");scanf("%f%f",&x0,&xn);printf("inputy0:");scanf("%f",&y0);e=euler(x0,xn,y0,n);printf("y(%f)=%6.4f",y0,e);}77实验内容与步骤(学生填写)选做题方法二#include#includefloatfunc(floatx,floaty){return((50)*y);}floateuler(floatx0,floatxn,floaty0
6、,intn){floatx,y,h,yp,yc;inti;x=x0;y=y0;h=(xn-x0)/n;for(i=1;i<=n;i++){yp=y+h*func(x,y);x=x0+i*h;yc=y+h*func(x,yp);y=(yp+yc)/2.0;}return(y);}voidmain(){floatx0,xn,y0,e;intn;intclrscr();printf("inputn:");scanf("%d",&n);printf("inputx0,xn:");scanf("%f
7、%f",&x0,&xn);printf("inputy0:");scanf("%f",&y0);e=euler(x0,xn,y0,n);printf("y(%f)=%6.4f",y0,e);}7实验结果与实验结论(学生填写)第一题运行结果:选做题方法一运行结果:选做题方法二运行结果:第一题结果分析:将x=2代入精确解得:y=2.8284,从计算结果看来,虽然等分n越大,数值解越精准,但精度并不大。第二题分析结果:从算法来看,改进的欧拉法以隐函数的方式给出yn+1,计算时使用迭代法,较欧拉显示法,欧
8、拉隐式法明显的提高了计算精度但同时增加了计算量。7姓名李小凤魏雪龚巧央冷月张磊学号104303015131043031611104303161610430314631043031158班级14成绩教师姓名:时间:7