matlab求解常微分方程-新.pdf
文本预览下载声明
用 matlab 求解常微分方程
在 MATLAB 中,由函数dsolve()解决常微分方程(组)的求解问题,其具体格式如
下:
r = dsolve(eq1,eq2,..., cond1,cond2,..., v)
eq1,eq2,...为微分方程或微分方程组,cond1,cond2,...,是初始条件或边界条件,v是
独立变量,默认的独立变量是t 。
函数 dsolve 用来解符号常微分方程、方程组,如果没有初始条件,则求出通解,如
果有初始条件,则求出特解。
dy 1
例 1:求解常微分方程dx x +y 的MATLAB程序为:dsolve(Dy=1/(x+y),x)
,
注意,系统缺省的自变量为 t ,因此这里要把自变量写明。
其中:Y=lambertw(X)表示函数关系 Y*exp(Y)=X 。
例 2 :求解常微分方程yy −y 2 0 的MATLAB程序为:
Y2=dsolve(y*D2y-Dy^2=0,x)
Y2=dsolve(D2y*y-Dy^2=0,x)
我们看到有两个解,其中一个是常数 0 。
⎧dx t
⎪⎪dt +5x +y e
⎨
⎪dy −x −3y e 2t
例 3 :求常微分方程组 ⎪⎩dt 通解的MATLAB程序为:
[X,Y]=dsolve(Dx+5*x+y=exp(t),Dy-x-3*y=exp(2*t),t)
⎧dx dy
x t x
+2 − 10cos , 2
⎪⎪dt dt t 0
⎨
⎪dx dy −2t
⎪ + +2y 4e , y t 0 0
例 4 :求常微分方程组 ⎩dt dt 通解的MATLAB程序为:
[X,Y]=dsolve(Dx+2*x-Dy=10*cos(t),Dx+Dy+2*y=4*exp(-
2*t),x(0)=2,y(0)=0,t)
以上这些都是常微分方程的精确解法,也称为常微分方程的符号解。但是,我们知
道,有大量的常微分方程虽然从理论上讲,其解是存在的,但我们却无法求出其解析
解,此时,我们需要寻求方程的数值解,在求常微分方程数值解方面,MATLAB 具有丰
富的函数,我们将其统称为 solver,其一般格式为:
[T,Y]=solver(odefun,tspan,y0)
该函数表示在区间tspan=[t0,tf]上,用初始条件y0 求解显式常微分方程y f (t , y ) 。
solver 为命令 ode45,ode23,ode113,ode15s,ode23s,ode23t,ode23tb 之一,这些
命令各有特点。我们列表说明如下:
求解
特点 说明
器
一步算法,4,5 阶 Runge-
大部分场合的首选
ode45 Kutta
3 算法
方
显示全部