《微分方程求解》PPT课件.ppt
微分方程的MATLAB求解微分方程的解析解方法例题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)微分方程的数值积分微分方程的数值积分MATLAB中用来进行常微分方程数值积分的函数有好多种,例如ode23,ode45,等,ode是常微分方程(ordinary differential equation)的缩写。它们都用来解形如的一阶微分方程组在给定初始值y0时的解。对入门者而言,会一种ode函数就行。微分方程求解函数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)【例】Simulink 简介1990 年前后出现最早的 Simulink,当时名为SimuLAB,1992 年改为 SimulinkSimulink 的名字有两重含义仿真(simu)与模型连接(link)odegroup 命令可以打开自定义模块集 Simulink 相关模块常用的模块:微分方程的Simulink建模与求解建立起微分方程的 Simulink 模型可以用 sim()函数对其模型直接求解得出微分方程的数值解【例7-30】Simulink模型图微分方程转换单个高阶常微分方程处理方法微分方程数值积分【例微分方程数值积分【例5-3-7】用数值积分法求解微分方程 设初始时间t0=0;终止时间tf=3;初始条件y(0)=1,y(0)=0.解:先将方程化为两个一阶微分方程的方程组,其左端为两维变量的一阶导数。微分方程化为标准形式写成矩阵形式为 其中 为取代变量y的变量向量,为x的导数,在程序中用xdot表示。x的初始条件为 这就是待积分的微分方程组的标准形式。用MATLAB语句表述为:xdot=0,1;-t,0*x+0;1*(1-t2/pi2);【例【例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)数值解程序数值解程序exn547的运行结果的运行结果程序运行的结果见图5-37。这个数值积分函数是按精度要求自动选择步长的。它的默认精度为1.e-3,因此图中的积分结果是可靠的。若要改变精度要求,可在调用命令中增加备选变元,具体做法可键入help ode23查找。Simulink模型图【例】Simulink模型图【例】Simulink模型图