1、微分方程MATLAB求解第1页微分方程解析解方法第2页例题1:求解微分方程组初值问题clearsyms t xx1,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,t1);plot(t1,xt1,t1,xt2,t1,xt3)第3页微分方程数值积分微分方程数值积分MATLAB中用来进行常微分方程数值积分函数有好各种,比如ode23,ode45,等,ode是常微分方
2、程(ordinary differential equation)缩写。它们都用来解形如一阶微分方程组在给定初始值y0时解。对入门者而言,会一个ode函数就行。第4页微分方程求解函数第5页clear,close allf1=(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);plot(t,x)第6页第7页第8页【例】第9页第10页Simulink 介绍1990 年前后出现最早 Simulink,当初名为SimuLAB,1992 年改为 SimulinkSimulink 名字有两重含义仿真
3、(simu)与模型连接(link)odegroup 命令能够打开自定义模块集 Simulink 相关模块第11页惯用模块:第12页第13页微分方程Simulink建模与求解建立起微分方程 Simulink 模型能够用 sim()函数对其模型直接求解得出微分方程数值解第14页【例7-30】第15页Simulink模型图第16页微分方程转换单个高阶常微分方程处理方法第17页第18页微分方程数值积分【例微分方程数值积分【例5-3-7】用数值积分法求解微分方程 设初始时间t0=0;终止时间tf=3;初始条件y(0)=1,y(0)=0.解:先将方程化为两个一阶微分方程方程组,其左端为两维变量一阶导数。第
4、19页微分方程化为标准形式写成矩阵形式为 其中 为取代变量y变量向量,为x导数,在程序中用xdot表示。x初始条件为 这就是待积分微分方程组标准形式。用MATLAB语句表述为:xdot=0,1;-t,0*x+0;1*(1-t2/pi2);第20页【例【例5-3-7】数值解程序】数值解程序将微分方程右端写成一个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页数值解程序数值解程序exn547运行结果运行结果程序运行结果见图5-37。这个数值积分函数是按精度要求自动选择步长。它默认精度为1.e-3,所以图中积分结果是可靠。若要改变精度要求,可在调用命令中增加备选变元,详细做法可键入help ode23查找。第22页Simulink模型图第23页【例】第24页Simulink模型图第25页【例】第26页Simulink模型图第27页