常微分方程初值问题初步.ppt
第六章 常微分方程初值问题初步,6.1 基本理论与Euler方法,6.3用Matlab求解常微分方程的经典例,6.4常微分方程的解析解,6.2 RungeKutta方法(龙格库塔法),6.5 方程组与高阶问题,6.1 基本理论与Euler方法,function E=euler(f,a,b,ya,N)%f为该问题中的函数f(x,y)。%a,b分别为取值范围的左右端点。%ya为给定初值y(a)。%N为迭代步数。%h为步长。%输出值为对应每个节点的近似值。h=(b-a)/N;T=zeros(1,N+1);Y=zeros(1,N+1);T=a:h:b;Y(1)=ya;for j=1:N Y(j+1)=Y(j)+h*feval(f,T(j),Y(j);EndT=T Y,在Euler算法程序的最后改为Y1=sqrt(1+2*T);T=T Y Y1;可得到解析解和迭代法计算结果比较,function T4=taylor4(df,a,b,ya,N)%df为y的一阶到四阶微商序列=y y y y。%y=f(x,y)。%a,b左右端点。%N为迭代步数。%h为步长。%ya为初值。h=(b-a)/N;T=zeros(1,N+1);Y=zeros(1,N+1);T=a:h:b;Y(1)=ya;for j=1:ND=feval(df,T(j),Y(j);Y(j+1)=Y(j)+h*(D(1)+h*(D(2)/2+h*(D(3)/6+h*D(4)/24);endT4=T Y,定义M文件函数function ydot=LORENZED(t,y)ydot=-8/3,0,y(2);0,-10,10;-y(2),28,-1*y;在Matlab命令窗输入命令Axis(10 40-30 30-30 30);View(3)hold ontitle(Lorenz Attractor)t,y=ode45(LORENZED,0,40,0,0,0.000000000001);plot3(y(:,1),y(:,2),y(:,3)得到Lorenz吸引子的图示,6.3用Matlab求解常微分方程的经典例,写状态方程的M文件(取名为fibno):function xdot=fibno(t,x)xdot=-35,35,0;-7,28,-x(1);0,x(1),-3*x;在Matlab主命令窗口键入如下命令Axis(-30,30,-30,30,0,50)view(70,10)hold ontitle(Attractor of Chen)x0=-10,0,37;t,x=ode23(fibno,0,30,x0);plot3(x(:,1),x(:,2),x(:,3)绘出陈氏吸引子(Chens Attractor)。,Lorenz吸引子,6.4常微分方程的解析解,6.5 方程组与高阶问题,