欢迎来到天天文库
浏览记录
ID:38697794
大小:106.50 KB
页数:5页
时间:2019-06-17
《实验八 求解常微分方程的初值问题》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、山西大学计算机与信息技术学院实验报告姓名学号专业班级2011级计算机科学与技术课程名称计算方法实验日期2013.12.04成绩指导教师批改日期实验名称实验七求解常微分方程的初值问题一、实验目的:用欧拉方法、改进的欧拉方法和四阶龙格-库塔方法求解常微分方程的初值问题,并比较各种方法优缺点。二、实验方法:(1)欧拉方法(2)改进的欧拉方法(3)四阶经典龙格-库塔方法三、实验内容:用欧拉方法、改进的欧拉方法和四阶经典龙格-库塔方法求解常微分方程的初值问题的数值解(取h=0.1),并将计算结果与准确解进行比较。四、实验程序(1)欧拉方法#include2、dio.h>#includedoublefunction1(doublex){returnpow((1+x*x),3/2);}doublefunction2(doublex,doubley){return(2.0/3.0)*x*pow(y,-2.0);}intmain(){doublex0=0.0;doubley0=1;doublex1;doubley1;doubleh=0.1;while(x0<1){x0=x0+0.1;y1=y0+h*function2(x0,y0);printf("当x0为%6.6f时,y0=%6.6f",x3、0-0.1,y0);y0=y1;}return0;}(2)改进的欧拉方法#include#includedoublefunction2(doublex,doubley){return(2.0/3.0)*x*pow(y,-2.0);}intmain(){doublex0=0.0;doubley0=1;doubleT1,T2;doublex1;doubley1;doubleh=0.1;while(x0<=1){T1=y0+h*function2(x0,y0);T2=y0+h*function2(x0+h,T1);y1=(4、T1+T2)/2;printf("当x0为%6.6f时,y0=%6.6f",x0,y0);x0=x0+0.1;y0=y1;}return0;}(3)四阶经典龙格-库塔方法#include#include#include#includeintmain(){doublex0=0,y0=1.0,h=0.2,b=1;doublek1,k2,k3,k4,x1,y1;inti=0;intn;doublef(doublex,doubley);n=(int)((b-x0)/h);for(i=5、1;i<=n;i++){x1=x0+h;k1=f(x0,y0);k2=f(x0+h/2.0,y0+h*k1/2.0);k3=f(x0+h/2.0,y0+h*k2/2.0);k4=f(x0+h/2.0,y0+h*k3/2.0);y1=y0+h*(k1+k2*2.0+k3*2.0+k4)/6.0;y0=y1;x0=x1;printf("%f,%f",x0,y0);}return0;}doublef(doublex,doubley){return(2.0/3*x)*pow(y,-2.0);}五、实验结果:欧拉公式:改进的欧拉公式:四阶龙格库塔:六、6、结果分析:欧拉方法和龙格-库塔方法都是将微分方程离散化为差分方程求解,是步进式方法,欧拉方法由于精度低,在实际中很少使用,但由于公式简单,直观,对学习其他方法有启示作用。四阶龙格-库塔公式由于精度高,易于编程,因此得到了广泛应用。
2、dio.h>#includedoublefunction1(doublex){returnpow((1+x*x),3/2);}doublefunction2(doublex,doubley){return(2.0/3.0)*x*pow(y,-2.0);}intmain(){doublex0=0.0;doubley0=1;doublex1;doubley1;doubleh=0.1;while(x0<1){x0=x0+0.1;y1=y0+h*function2(x0,y0);printf("当x0为%6.6f时,y0=%6.6f",x
3、0-0.1,y0);y0=y1;}return0;}(2)改进的欧拉方法#include#includedoublefunction2(doublex,doubley){return(2.0/3.0)*x*pow(y,-2.0);}intmain(){doublex0=0.0;doubley0=1;doubleT1,T2;doublex1;doubley1;doubleh=0.1;while(x0<=1){T1=y0+h*function2(x0,y0);T2=y0+h*function2(x0+h,T1);y1=(
4、T1+T2)/2;printf("当x0为%6.6f时,y0=%6.6f",x0,y0);x0=x0+0.1;y0=y1;}return0;}(3)四阶经典龙格-库塔方法#include#include#include#includeintmain(){doublex0=0,y0=1.0,h=0.2,b=1;doublek1,k2,k3,k4,x1,y1;inti=0;intn;doublef(doublex,doubley);n=(int)((b-x0)/h);for(i=
5、1;i<=n;i++){x1=x0+h;k1=f(x0,y0);k2=f(x0+h/2.0,y0+h*k1/2.0);k3=f(x0+h/2.0,y0+h*k2/2.0);k4=f(x0+h/2.0,y0+h*k3/2.0);y1=y0+h*(k1+k2*2.0+k3*2.0+k4)/6.0;y0=y1;x0=x1;printf("%f,%f",x0,y0);}return0;}doublef(doublex,doubley){return(2.0/3*x)*pow(y,-2.0);}五、实验结果:欧拉公式:改进的欧拉公式:四阶龙格库塔:六、
6、结果分析:欧拉方法和龙格-库塔方法都是将微分方程离散化为差分方程求解,是步进式方法,欧拉方法由于精度低,在实际中很少使用,但由于公式简单,直观,对学习其他方法有启示作用。四阶龙格-库塔公式由于精度高,易于编程,因此得到了广泛应用。
此文档下载收益归作者所有