正在加载图片...
Qa=12-2P+P'+3P",Q.=-4+6P-P'+2P”. 初始条件为P(O)=10,P'(O)=4.假设在每一刻市场均是出清的,求P(). 解由Q=Q.得 p"+2P'-8P=-16 求给定初始条件P(O)=10,P'(O)=4的微分方程特解的Matlab程序为 >p=dsolve('D2p+2*p-8*p=-16','p(O)=10','Dp(0)=4') 运行结果为 p=6*exp(2*t)+2*exp(4*t)+2 因此特解为P()=6e2”+2e4+2, 二、常微分方程的数值解求解 、少数特殊方程可用初等积分法求解外,大部 y't)=fl.).l。<1<1, 6)=⅓ 其中y=0,片,儿了,f=,5,f,乃=0oo,了.所谓数值解法,就 是寻求0在一系列离散节点。<1<.<1n≤1上的近似值,k=0,1.,n,称h=4-1为 步长,通常取为常量h.最简单的数值解法是Euler法. uler法的思路很简单:在节点处用差商近似代替导数 h 这样导出计算公式 它能我解种形式的分方起品法=Q2 ler法也称折线法. Euler法只有一阶精度,改进方法有二阶Runge-Kutta法、四阶Runge-kutta法、五阶 Runge-kut ta-Felhberg法和线性多步法等,这些方法可用于解高阶常微分方程(组)初值问 题.边值问题采用不同方法,如差分法、有限元法等.数值解法的主要缺点是它缺乏物理意义 Mat1ah中主要用函数ode45,ode23,ode15s求常做分方程的:值解.其中ode45是最常 用的求解微分方程数值解的命令,对于刚性方程组不宜采用.od23与 de45类似,只是精度 .ode15s用来求解刚性方程组.这三个函数的调用格式基本相同,下面介绍ode45的调 用格式 [tout,yout]=ode45('yprime',[t0,tf],yo) 此命令是采用变步长四阶Runge-kutta法和五阶Runge-kutta-Felhberg法求数值解, yprime是表示f(t,y)的M文件名,t0表示自变量的初始值,tf表示自变量的终值,y0表示 初始向量值.输出向量tout表示节点(么4,.,1了,输出矩阵y0ut表示数值解,每一列对应y 的一个分量.若无输出参数,则自动作出图形 例4求解微分方程业=-y+1+山,0=1的解析解和数值解,并进行比较。 解相应的Matlab代码为 >y=dsolve ('Dy=-y+t+1','y(0)=1','t') 运行结果为y=t+exp(~t),即方程的解析解为y=1+e'.下面再求其数值解,先编写M文件 funl.m. function f=funl(t,y) 2 Q 12 2P P 3P , d = − +  +  Qs = −4 + 6P − P + 2P . 初始条件为 P(0) = 10, P(0) = 4 . 假设在每一刻市场均是出清的,求 P(t) . 解 由 Qd = Qs 得 P + 2P −8P = −16 求给定初始条件 P(0) = 10, P(0) = 4 的微分方程特解的 Matlab 程序为 >> p=dsolve('D2p+2*Dp-8*p=-16','p(0)=10','Dp(0)=4') 运行结果为 p =6*exp(2*t)+2*exp(-4*t)+2 因此特解为 ( ) 6e 2e 2 2 4 = + + t − t P t . 二、常微分方程的数值解求解 除常系数线性微分方程可用特征根法求解、少数特殊方程可用初等积分法求解外,大部 分微分方程无解析解,应用中主要依靠数值解法.考虑一阶常微分方程初值问题 0 0 0 ( ) ( , ( )), ( ) f y t f t y t t t t y t y   =     = 其中 1 2 ( , , , )T m y y y y = , 1 2 ( , , , )T m f f f f = , 0 10 20 0 ( , , , )T m y y y y = .所谓数值解法,就 是寻求 yt() 在一系列离散节点 0 1 n f t t t t     上的近似值 , 0,1, , k y k n = ,称 k k k 1 h t t = − + 为 步长,通常取为常量 h .最简单的数值解法是 Euler 法. Euler 法的思路很简单:在节点处用差商近似代替导数 1 ( ) ( ) ( ) k k k y t y t y t h + −   这样导出计算公式 1 ( , ), 0,1,2, k k k k y y hf t y k + = + = 它能求解各种形式的微分方程.Euler 法也称折线法. Euler 法只有一阶精度,改进方法有二阶 Runge-Kutta 法、四阶 Runge-kutta 法、五阶 Runge-kutta-Felhberg 法和线性多步法等,这些方法可用于解高阶常微分方程(组)初值问 题.边值问题采用不同方法,如差分法、有限元法等.数值解法的主要缺点是它缺乏物理意义. Matlab 中主要用函数 ode45,ode23,ode15s 求常微分方程的数值解.其中 ode45 是最常 用的求解微分方程数值解的命令,对于刚性方程组不宜采用.ode23 与 ode45 类似,只是精度 低一些.ode15s 用来求解刚性方程组.这三个函数的调用格式基本相同,下面介绍 ode45 的调 用格式. [tout,yout]=ode45(‘yprime’,[t0,tf],y0) 此命令是采用变步长四阶 Runge-kutta 法和五阶 Runge-kutta-Felhberg 法求数值解, yprime 是表示 f(t,y)的 M 文件名,t0 表示自变量的初始值,tf 表示自变量的终值,y0 表示 初始向量值.输出向量 tout 表示节点 0, 1 ( , , )T n t t t ,输出矩阵 yout 表示数值解,每一列对应 y 的一个分量.若无输出参数,则自动作出图形. 例 4 求解微分方程 d 1, (0) 1 d y y t y t = − + + = 的解析解和数值解,并进行比较. 解 相应的 Matlab 代码为 >> y=dsolve('Dy=-y+t+1','y(0)=1','t') 运行结果为 y =t+exp(-t),即方程的解析解为 e t y t − = + .下面再求其数值解,先编写 M 文件 fun1.m. function f=fun1(t,y)
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有