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