MATLAB求解微分方程2.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 模型 可以用 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-t^2/pi^2); 【例5-3-7】数值解的程序 将微分方程的右端写成一个exn547f.m函数程序,内容如下: function xdot=exn547f(t,x) u=1-(t.^2)/(pi^2); 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的运行结果 Simulink模型图 【例】 Simulink模型图 【例】 Simulink模型图 * Simulink 相关模块 ◆程序运行的结果见图5-37。这个数值积分函数是按精度要求自动选择步长的。它的默认精度为1.e-3,因此图中的积分结果是可靠的。 若要改变精度要求,可在调用命令中增加备选变元,具体做法可键入help ode23查找。 *
显示全部