免积分超清晰可编辑微分方程求解.ppt
微分方程的MATLAB求解,微分方程的解析解方法,例题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,t1); plot(t1,xt1,t1,xt2,t1,xt3),微分方程的数值积分,MATLAB中用来进行常微分方程数值积分的函数有好多种,例如ode23,ode45,等,ode是常微分方程(ordinary differential equation)的缩写。它们都用来解形如 的一阶微分方程组在给定初始值y0时的解。对入门者而言,会一种ode函数就行。,微分方程求解函数,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); plot(t,x),【例】,Simulink 简介,1990 年前后出现最早的 Simulink,当时名为SimuLAB,1992 年改为 Simulink Simulink 的名字有两重含义 仿真 (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模型图,