资源描述:
《欧拉法与改进欧拉法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、一、目的1.通过本实验加深对欧拉法、改进欧拉法、龙格-库塔法、线性多步法的构造过程的理解;2.能对上述三种方法提出正确的算法描述编程实现,观察计算结果的改善情况。二、内容与设计思想自选常微分方程的初值问题,分别用欧拉法、改进欧拉法求解。分别用以上两种方法求解常微分方程初值问题:三、使用环境操作系统:windonsXP软件平台:VC6.0四、核心代码及调试过程#include#include#includedoublef(doublex,doub
2、ley){return(1+y*y);}intmain(){inti;doublex,y,y0=1,dx=0.1;doublexx[11];doubleeuler[11],euler_2[11];doubletemp;doublef(doublex,doubley);for(i=0;i<11;i++)xx[i]=i*dx;euler[0]=y0;for(i=1,x=0;i<11;i++,x+=dx)euler[i]=euler[i-1]+dx*f(x,euler[i-1]);euler_2[0]
3、=y0;for(i=1,x=0;i<11;i++,x+=dx){printf("x=%lfteluer=%lfteuler_2=%lftaccu=%lf",x,euler[i],euler_2[i],pow(1+x*x,1.0/3));第3页共3页getch();}temp=euler_2[i-1]+dx*f(x,euler_2[i-1]);euler_2[i]=euler_2[i-1]+dx*(f(x,euler_2[i-1])+f(x+dx,temp))/2;}#include
4、tdio.h>#include#include#defineMAX_N20doublef(doublex,doubley){return(1+y*y);}voideuler(doublea,doubleb,doubleinit_val,intn){inti;doubleh,x[MAX_N],y[MAX_N];h=(b-a)/n;x[0]=a;y[0]=init_val;printf("y[%0.lf]=%lft",x[0],y[0]);for(i=1;i<
5、=n;i++){y[i]=y[i-1]+h*f(x[i-1],y[i-1]);x[i]=a+i*h;y[i]=y[i-1]+0.5*h*(f(x[i-1],y[i-1])+f(x[i],y[i]));printf("y[%0.2lf]=%lft",x[i],y[i]);if((i+1)%3==0)printf("");}}voidmain(){doublea=0.0,b=1.4,init_val=1.0;euler(a,b,init_val,5);}运行结果:第3页共3页五、总结通过编程学
6、会了对欧拉法和改进欧拉法的运用六、附录第3页共3页