资源描述:
《微分方程数值解 Euler.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、宋玉霞2008050216统数信科0802实验一__1:改进的Euler方法一、实验题目:取步长,二、实验要求:用欧拉方法以及该机的欧拉方法求解微分方程,并与精确解进行比较三、程序运行结果结果:x(1)=0.000000,y(1)=1.000000,yy(1)=1.000000,e(1)=0.000000x(2)=0.200000,y(2)=1.186667,yy(2)=1.183216,e(2)=-0.003451x(3)=0.400000,y(3)=1.348312,yy(3)=1.341641,e(3)=-0.0
2、06671x(4)=0.600000,y(4)=1.493704,yy(4)=1.483240,e(4)=-0.010464x(5)=0.800000,y(5)=1.627861,yy(5)=1.612452,e(5)=-0.015410x(6)=1.000000,y(6)=1.754205,yy(6)=1.732051,e(6)=-0.022154四、程序附录:1.%euler法中调用的函数functionf=fun1(x,y);f=y-2*x/y;2.%显式Euler方法%(x0,y0)为初值,(x0,xfinal
3、)求解区间,h为步长%fun1为其子函数function[x,y,yy,ee]=euler(x0,xfinal,y0,h);n=(xfinal-x0)/h;x(1)=x0;%初值节点y(1)=y0;%初值yy(1)=sqrt(2*x(1)+1);%精确解ee(1)=yy(1)-y(1);%误差fori=1:nx(i+1)=x(i)+h;%节点值y(i+1)=y(i)+h*fun1(x(i),y(i));%euler法数值解yy(i+1)=sqrt(2*x(i+1)+1);%精确解ee(i+1)=yy(i+1)-y(i+
4、1);%误差end3.%改进的Euler方法%(x0,y0)为初值,(x0,xfinal)求解区间,h为步长%fun1为其子函数function[x,y,yy,ee]=eulerpro(x0,xfinal,y0,h);n=(xfinal-x0)/h;x(1)=x0;%初值节点y(1)=y0;%初值yy(1)=sqrt(2*x(1)+1);%精确解ee(1)=yy(1)-y(1);%误差fori=1:nx(i+1)=x(i)+h;%节点值y1=y(i)+h*fun1(x(i),y(i));y2=y(i)+h*fun1(x
5、(i+1),y1);y(i+1)=(y1+y2)/2;yy(i+1)=sqrt(2*x(i+1)+1);%精确解ee(i+1)=yy(i+1)-y(i+1);%误差end4.%改进的Euler方法%h为步长%fun1为其子函数x(1)=0;%初值节点y(1)=1;%初值h=.2;fprintf('x(%d)=%f,y(%d)=%f,yy(%d)=%f,e(%d)=%f',1,x(1),1,y(1),1,y(1),1,0);fori=1:5x(i+1)=x(i)+h;%节点值yp=y(i)+h*fun1(x(i),y
6、(i));%预报值yc=y(i)+h*fun1(x(i+1),yp);%校正值y(i+1)=(yp+yc)/2;%改进值yy(i+1)=sqrt(2*x(i+1)+1);%精确解e(i+1)=yy(i+1)-y(i+1);fprintf('x(%d)=%f,y(%d)=%f,yy(%d)=%f,e(%d)=%f',i+1,x(i+1),i+1,y(i+1),i+1,yy(i+1),i+1,e(i+1));end