资源描述
第六章 常微分方程的数值解 一、解法步骤:将高阶方程转化为一阶方程组。(两种情况)建立相应的函数文件。调用求解函数。 t,z=odeij(dzdtk,H,z0,tol)刚性:设有一阶常系数线性微分方程组y=Ay+f,如果它的Jacobian矩阵的特征值相差十分悬殊。 odeij问题类型精度适用对象ode45非刚性中等多数情况下可优先选用,但不能用来解刚性问题ode23非刚性较低可用来解中等刚性问题,或误差允许范围较宽的问题ode113非刚性低到高不能解刚性问题,当误差容限要求严格时效果较ode45好ode15s刚性低到高可用于解刚性问题,当采用ode45失败或效果很差时,可考虑使用ode23s刚性低可用于解刚性问题,当误差容限较宽时效果比ode15s好ode23t适度刚性低可用于解刚性问题,但要求无数值衰减 ode23tb刚性低可用于解刚性问题,当误差容限较宽时效果比ode15s好 二、例题例1 在区间H=0.1,30上满足初值条件x=0.1时, 的特解(1)转化原方程为一阶方程组。(2)建立描述上面微分方程组的函数文件,并设文件名为dzdt01.m。function dz=f(t,z)dz(1)=z(2);dz(2)=z(3);dz(3)=(1/t)*z(3)-(2/t2)*z(2)+(2/t3)*z(1)+10*t3*sin(t);dz=dz(1);dz(2);dz(3) xxyyxyxyx sin1022 623 0,0,0 yyy (3)调用求解。H=0.1,30;z0=0;0;0;t,z=ode45(dzdt01,H,z0);plot(t,z(:,1),m-) plot(t,z(:,1),m-) 0 5 10 15 20 25 30-2.5 -2 -1.5 -1 -0.5 0 0.5 1 1.5x 10 5 例2 H=0,50(1)转化方程。(2)建立文件,设文件名为dzdt02.m。function dz=f(t,z)c=1;dz(1)=z(2);dz(2)=c*(1-z(1)2)*z(2)-z(1);dz=dz(1);dz(2);(3)调用求解。H=0,50;z0=2;1; t,z=ode45(dzdt02,H,z0);plot(t,z(:,1),m-,t,z(:,2),g-.) 0 5 10 15 20 25 30 35 40 45 50-3 -2 -1 0 1 2 3 0)1( 2 yyycy 1,2,0 yyt 例3 H=0,100(1)转化方程。(2)建立文件,设文件名为dzdt03.m。function dz=f(t,z)a=-0.2;dz(1)=z(2);dz(2)=a*z(2)-sin(t);dz=dz(1);dz(2);(3)调用求解。H=0,100;z0=0;2; t,z=ode45(dzdt03,H,z0);plot(z(:,1),z(:,2),m-) 0 1 2 3 4 5 6-1 -0.5 0 0.5 1 1.5 2 tyyyx sin2.0, 2,0,0 yxt 例4 H=-30,30(1)转化方程。(2)建立文件,设文件名为dzdt04.m。function dz=f(t,z) dz(1)=z(2);dz(2)=-2*t*z(4);dz(3)=z(4);dz(4)=2*t*z(2);dz=dz(1);dz(2);dz(3);dz(4);(3)调用求解。H=-30,30;z0=0;1;0;0; t,z=ode45(dzdt04,H,z0);plot(z(:,1),z(:,3),m-) -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6-2 -1.5 -1 -0.5 0 0.5 02 02 xty ytx 0,1,0,0,0 0000 yxyxt 例5 (1)转化方程。(2)建立文件,设文件名为dzdt05.m。function dz=f(t,z) a=8/3;b=10;c=28;dz(1)=-a*z(1)+z(2)*z(3);dz(2)=-b*(z(2)-z(3);dz(3)=c*z(2)-z(3)-z(1)*z(2);dz=dz(1);dz(2);dz(3);(3)调用求解。H=0,80;z0=0;0;0.222/1015; t,z=ode23(dzdt05,H,z0);plot3(z(:,1),z(:,2),z(:,3),m-) -20 0 20 40 60-20-1001020-30-20-100102030 xyzcyzzybyyzaxx ),(,
展开阅读全文