第五讲 Matlab求解微分方程

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第五讲 Matlab求解微分方程

教学目的:学会用MATLAB求简单微分方程的解析解、数值解,加深对微分方程概念和应用的理解;针对一些具体的问题,如追击问题,掌握利用软件求解微分方程的过程;了解微分方程模型解决问题思维方法及技巧;体会微分方程建摸的艺术性.

教学重点:利用机理分析建模微分方程模型,掌握追击问题的建模方法,掌握利用MATLAB求解数值解.

教学难点:利用机理分析建模微分方程模型,通过举例,结合图形以及与恰当的假设突破教学难点.

1 微分方程相关函数(命令)及简介

函数名函数功能

Dy 表示y 关于自变量的一阶导数

D2y 表示y 关于自变量的二阶导数

dsolve('equ1','equ2',…) 求微分方程的解析解,equ1、equ2、…为方程(或条件)simplify(s) 对表达式s 使用maple 的化简规则进行化简

[r,how]=simple(s) simple 命令就是对表达式s 用各种规则进行化简,然后用r 返回最简形式,how 返回形成这种形式所用的规则.

[T,Y] = solver(odefun,tspan,y0) 求微分方程的数值解,其中的solver为命令ode45、ode23、ode113、ode15s、ode23s、ode23t、ode23tb 之一,odefun 是显式常微分方程:,在积分

⎪⎩

=

=

)

(

)

,(

y

t y

y

t

f

dt

dy

区间tspan=上,从到,用初始条件求解,

]

,

[

0f

t

t

t

f

t

y

要获得问题在其他指定时间点上的解,则令

,2

1

,

,t

t

t

tspan=(要求是单调的).

]

,

,

,

[

,2

1

0f

t

t

t

t

ezplot(x,y,[tmin,tmax])符号函数的作图命令.x,y 为关于参数t 的符号函数,

[tmin,tmax] 为t 的取值范围.

inline() 建立一个内联函数.格式:inline('expr', 'var1',

'var2',…) ,注意括号里的表达式要加引号.

因为没有一种算法可以有效地解决所有的ODE 问题,为此,Matlab 提供了多种求解器Solver,对于不同的ODE 问题,采用不同的Solver.

求解器 Solver ODE 类型 特点

说明

ode45

非刚性

单步算法;4、5阶Runge-Kutta 方程;累计截断误差达 3)(x ∆大部分场合的首选算法

ode23 非刚性

单步算法;2、3阶Runge-Kutta

方程;累计截断误差达 3)(x ∆使用于精度较低的情形

ode113 非刚性 多步法;Adams 算法;高低精

度均可到

6

3

10~10

--计算时间比 ode45 短

ode23t

适度刚性

采用梯形算法

适度刚性情形

ode15s 刚性

多步法;Gear's 反向数值微分;精度中等

若 ode45 失效时,可尝

试使用

ode23s 刚性

单步法;2阶 Rosebrock 算法;低精度

当精度较低时,计算时

间比 ode15s 短

ode23tb 刚性 梯形算法;低精度

当精度较低时,计算时

间比 ode15s 短

要特别的是:ode23、ode45 是极其常用的用来求解非刚性的标准形式的一阶常微分方程(组)的初值问题的解的 Matlab 的常用程序,其中:

ode23 采用龙格-库塔2 阶算法,用3 阶公式作误差估计来调节步长,具有低等的精度.

ode45 则采用龙格-库塔4 阶算法,用5 阶公式作误差估计来调节步长,具有中等的精度.

2 求解微分方程的一些例子

2.1 几个可以直接用 Matlab 求微分方程精确解的例子:

例1:求解微分方程

,并加以验证. 22x xe xy dx

dy

-=+求解本问题的Matlab 程序为: syms x y %line1 y=dsolve('Dy+2*x*y=x*exp(-x^2)','x') %line2 diff(y,x)+2 *x*y-x*exp(-x^2) %line3 simplify(diff(y,x)+2*x*y-x*exp(-x^2)) %line4

说明:(1) 行line1是用命令定义x,y 为符号变量.这里可以不写,但为确保正确性,建议写上;

(2) 行line2是用命令求出的微分方程的解:

1/2*exp(-x^2)*x^2+exp(-x^2)*C1

(3) 行line3使用所求得的解.这里是将解代入原微分方程,结果应该为0,但这里给出:

-x^3*exp(-x^2)-2*x*exp(-x^2)*C1+2*x*(1/2*exp(-x^2)*x^2+exp(-x^2)*C1)

相关文档
最新文档