1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。感谢,微分方程MATLAB求解,1/27,微分方程解析解方法,2/27,例题1:求解微分方程组初值问题,clear,syms t x,x1,x2,x3=dsolve(Dx1=-x1+x3+1,Dx2=x1+2*x2-1,.,Dx3=-4*x1+3*x3+2,x1(0)=1,x2(0)=0,x3(0)=1),t1=0:.1:5;,xt1=subs(x1,t,t1);xt2=subs(x2,t,t1);xt3=subs(x3,t,
2、t1);,plot(t1,xt1,t1,xt2,t1,xt3),3/27,微分方程数值积分,MATLAB中用来进行常微分方程数值积分函数有好各种,比如ode23,ode45,等,ode是常微分方程(ordinary differential equation)缩写。它们都用来解形如,一阶微分方程组在给定初始值y0时解。对入门者而言,会一个ode函数就行。,4/27,微分方程,求解函数,5/27,clear,close all,f1=(t,x)-1,0,1;1,2,0;-4,0,3*x+1;-1;2;,t_final=5;x0=1;0;1;t,x=ode23(f1,0,t_final,x0);,
3、plot(t,x),6/27,7/27,8/27,【例】,9/27,10/27,Simulink,介绍,1990 年前后出现最早 Simulink,当初名为SimuLAB,1992 年改为 Simulink,Simulink 名字有两重含义,仿真(simu)与模型连接(link),odegroup 命令能够打开自定义模块集,Simulink,相关模块,11/27,惯用模块:,12/27,13/27,微分方程,Simulink,建模与求解,建立起微分方程 Simulink 模型,能够用 sim()函数对其模型直接求解,得出微分方程数值解,14/27,【例7-30】,15/27,Simulink模
4、型图,16/27,微分方程转换,单个高阶常微分方程处理方法,17/27,18/27,微分方程数值积分【例5-3-7】,用数值积分法求解微分方程,设初始时间t0=0;终止时间tf=3;初始条件y(0)=1,y(0)=0.,解:先将方程化为两个一阶微分方程方程组,其左端为两维变量一阶导数。,19/27,微分方程化为标准形式,写成矩阵形式为,其中 为取代变量y变量向量,为,x,导数,在程序中用xdot表示。,x,初始条件为,这就是待积分微分方程组标准形式。,用MATLAB语句表述为:,xdot=0,1;-t,0*x+0;1*(1-t2/pi2);,20/27,【例5-3-7】数值解程序,将微分方程右
5、端写成一个exn547f.m函数程序,内容以下:,function xdot=exn547f(t,x),u=1-(t.2)/(pi2);,xdot=0,1;-t,0*x+0;1*u;%向量导数方程,主程序exn547以下,它调用MATLAB中现成数值积分函数ode23进行积分。,clf,t0=0;tf=3*pi;x0=1;0;%给出初始值,t,x=ode23(exn547f,t0,tf,x0)%此处显示结果,y=x(:,1);%y为x第一列,plot(t,y),grid%绘曲线,xlabel(t),ylabel(y(t),21/27,数值解程序exn547运行结果,程序运行结果见图5-37。这个数值积分函数是按精度要求自动选择步长。它默认精度为1.e-3,所以图中积分结果是可靠。,若要改变精度要求,可在调用命令中增加备选变元,详细做法可键入help ode23查找。,22/27,Simulink模型图,23/27,【例】,24/27,Simulink模型图,25/27,【例】,26/27,Simulink模型图,27/27,