资源描述:
《MATLAB在化工中的应用-第5讲常微分方程数值解》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第五部分常微分方程数值解天津科大海洋学院2006-10本章知识要点数值计算常微分方程初值问题常微分方程边值问题MATLAB微分方程求解常微分方程的相关函数ode45ode23bvp4c微分方程在化工模型中的应用间歇反应器的计算活塞流反应器的计算全混流反应器的动态模拟定态一维热传导问题逆流壁冷式固定床反应器一维模型固定床反应器的分散模型Matlab常微分方程求解问题分类初值问题:定解附加条件在自变量的一端一般形式为:初值问题的数值解法一般采用步进法,如Runge-Kutta法边值问题:在自变量两端均给定附加条件一般形式:边值问题可能有解、也可能无解,可能
2、有唯一解、也可能有无数解边值问题有3种基本解法迭加法打靶法松弛法Matlab求解常微分方程初值问题方法将待求解转化为标准形式,并“翻译”成Matlab可以理解的语言,即编写odefile文件选择合适的解算指令求解问题根据求解问题的要求,设置解算指令的调用格式Matlab求解初值问题函数指令含义指令含义解算ode23普通2-3阶法解ODEodefileODE文件格式ode45普通4-5阶法解ODE选项odeset创建、更改ODE选项的设置ode113普通变阶法解ODEodeget读取ODE选项的设置ode23t解适度刚性ODE输出odeplotODE的输
3、出时间序列图ode15s变阶法解刚性ODEodephas2ODE的二维相平面图ode23s低阶法解刚性ODEodephas3ODE的三维相空间图ode23tb低阶法解刚性ODEodeprint在Matlab指令窗显示结果odefile所谓的odefile实际上是一个Matlab函数文件,一般作为整个求解程序的一个子函数,表示ode求解问题Matlab提供了odefile的模板,采用typeodefile命令显示其详细内容,然后将其复制到脚本编辑窗口,在合适的位置填入所需内容一般而言,对于程序通用性要求不高的场合,只需将原有模型写成标准形式,然后“翻译”
4、成Matlab语言即可odefile的编写规定ode文件的最简单格式必须有一个自变量t和函数y作为输入变量,一个y的导函数作为输出变量。其中自变量t不论在ode文件中是否使用都必须作为第一输入变量,y则必须作为第二输入变量,位置不能颠倒。可以向ode文件中传递参数,数目不受限制odefile的编写functionf=fun(x,y)f=y-2*x/y;求解初值问题:自变量在前,因变量在后ode输入函数输出变量为因变量导数的表达式初值问题:functionf=fun(x,y)f=y+y^2;常微分方程组odefile的编写常微分方程组与单个常微分方程求解
5、方法相同,只需在编写odefile时将整个方程组作为一个向量输出。functionf=fun(x,y)dy1dx=0.04*(1-y(1))-(1-y(2)).*y(1)+0.0001*(1-y(2)).^2;dy2dx=-1e4*dy1dx+3000*(1-y(2)).^2;f=[dy1dx;dy2dx];高阶微分方程odefile的编写本例的难度:求解:y(0)=0,y'(0)=1,方程系数非线性可在odefile中定义方程高阶,非标准形式方程变形:令y1=y;y2=y’则原方程等价于:functionf=fun(t,y)a=-exp(-t)+co
6、s(2*pi*t)*exp(-2*t);b=cos(2*pi*t);f=[y(2)-a*y(2)^2-b*y(1)+exp(t)*b];解算指令的使用方法调用格式:[T,Y]=ode45(@fun,TSPAN,Y0)[T,Y]=ode45(@fun,TSPAN,Y0,options)[T,Y]=ode45(@fun,TSPAN,Y0,options,P1,P2,…)[T,Y,TE,YE,IE]=ode45(@fun,TSPAN,Y0,options,P1,P2,…)说明:输出变量T为返回时间列向量;解矩阵Y的每一行对应于T的一个元素,列数与求解变量数相
7、等。@fun为函数句柄,为根据待求解的ODE方程所编写的ode文件(odefile);TSPAN=[T0TFINAL]是微分系统y'=F(t,y)的积分区间;Y0为初始条件options用于设置一些可选的参数值,缺省时,相对于第一种调用格式。options中可以设置的参数参见odesetP1,P2,…的作用是传递附加参数P1,P2,…到ode文件。当options缺省时,应在相应位置保留[],以便正确传递参数。常微分方程初值问题解算指令比较解算指令算法精度ode45四五阶Runge-Kutta法较高ode23二三阶Runge-Kutta法低ode113
8、可变阶Adams-Bashforth-Moulton法ode15s基于数值差分的可变阶方法(B