没有合适的资源?快使用搜索试试~ 我知道了~
首页Matlab求解微分方程(组)及偏微分方程(组).pdf
Matlab求解微分方程(组)及偏微分方程(组).pdf
需积分: 40 1.7k 浏览量
更新于2023-03-03
评论 2
收藏 370KB PDF 举报
(1)PDEtool(GUI)求解偏微分方程的一般步骤 在Matlab命令窗口输入pdetool,回车,PDE工具箱的图形用户界面(GUI)系统就启动了.从定义一个偏微分方程问题到完成解偏微分方程的定解,整个过程大致可以分为六个阶段
资源详情
资源评论
资源推荐

1
第四讲 Matlab 求解微分方程(组)
理论介绍:Matlab 求解微分方程(组)命令
求解实例:Matlab 求解微分方程(组)实例
实际应用问题通过数学建模所归纳得到的方程,绝大多数都是微分方程,真
正能得到代数方程的机会很少.另一方面,能够求解的微分方程也是十分有限的,
特别是高阶方程和偏微分方程(组).这就要求我们必须研究微分方程(组)的
解法:解析解法和数值解法.
一.相关函数、命令及简介
1.在 Matlab 中,用大写字母 D 表示导数,Dy 表示 y 关于自变量的一阶导数,
D2y 表示 y 关于自变量的二阶导数,依此类推.函数 dsolve 用来解决常微分方程
(组)的求解问题,调用格式为:
X=dsolve(‘eqn1’,’eqn2’,…)
函数 dsolve 用来解符号常微分方程、方程组,如果没有初始条件,则求出通
解,如果有初始条件,则求出特解.
注意,系统缺省的自变量为 t
2.函数 dsolve 求解的是常微分方程的精确解法,也称为常微分方程的符号解.
但是,有大量的常微分方程虽然从理论上讲,其解是存在的,但我们却无法求出
其解析解,此时,我们需要寻求方程的数值解,在求常微分方程数值解方面,
MATLAB 具有丰富的函数,我们将其统称为 solver,其一般格式为:
[T,Y]=solver(odefun,tspan,y0)
说明:(1)solver 为命令 ode45、ode23、ode113、ode15s、ode23s、ode23t、ode23tb、
ode15i 之一.
(2)odefun 是显示微分方程
'
( , )y f t y
在积分区间 tspan
0
[ , ]
f
tt
上从
0
t
到
f
t
用
初始条件
0
y
求解.
(3)如果要获得微分方程问题在其他指定时间点
0 1 2
, , , ,
f
t t t t
上的解,则令
tspan
0 1 2
[ , , , ]
f
t t t t
(要求是单调的).
(4)因为没有一种算法可以有效的解决所有的 ODE 问题,为此,Matlab 提供
了多种求解器 solver,对于不同的 ODE 问题,采用不同的 solver.

2
表 1 Matlab 中文本文件读写函数
求解器
ODE 类型
特点
说明
ode45
非刚性
单步算法:4、5 阶 Runge-Kutta
方程;累计截断误差
3
()x
大部分场合的首选
算法
ode23
非刚性
单步算法:2、3 阶 Runge-Kutta
方程;累计截断误差
3
()x
使用于精度较低的
情形
ode113
非刚性
多步法:Adams 算法;高低精度
可达
36
10 ~10
计算时间比 ode45 短
ode23t
适度刚性
采用梯形算法
适度刚性情形
ode15s
刚性
多步法:Gear’s 反向数值微分;
精度中等
若 ode45 失效时,可
尝试使用
ode23s
刚性
单步法:2 阶 Rosebrock 算法;低
精度
当精度较低时,计算
时间比 ode15s 短
ode23tb
刚性
梯形算法;低精度
当精度较低时,计算
时间比 ode15s 短
说明:ode23、ode45 是极其常用的用来求解非刚性的标准形式的一阶微分方
程(组)的初值问题的解的 Matlab 常用程序,其中:
ode23 采用龙格-库塔 2 阶算法,用 3 阶公式作误差估计来调节步长,具有低
等的精度.
ode45 则采用龙格-库塔 4 阶算法,用 5 阶公式作误差估计来调节步长,具有
中等的精度.
3.在 matlab 命令窗口、程序或函数中创建局部函数时,可用内联函数 inline,
inline 函数形式相当于编写 M 函数文件,但不需编写 M-文件就可以描述出某种
数学关系.调用 inline 函数,只能由一个 matlab 表达式组成,并且只能返回一个
变量,不允许[u,v]这种向量形式.因而,任何要求逻辑运算或乘法运算以求得最
终结果的场合,都不能应用 inline 函数,inline 函数的一般形式为:
FunctionName=inline(‘函数内容’, ‘所有自变量列表’)
例如:(求解 F(x)=x^2*cos(a*x)-b ,a,b 是标量;x 是向量 )在命令窗口输入:

3
Fofx=inline(‘x .^2*cos(a*x)-b’ , ‘x’,’a’,’b’);
g= Fofx([pi/3 pi/3.5],4,1)
系统输出为:g=-1.5483 -1.7259
注意:由于使用内联对象函数 inline 不需要另外建立 m 文件,所有使用比较
方便,另外在使用 ode45 函数的时候,定义函数往往需要编辑一个 m 文件来单
独定义,这样不便于管理文件,这里可以使用 inline 来定义函数.
二.实例介绍
1.几个可以直接用 Matlab 求微分方程精确解的实例
例 1 求解微分方程
2
'
2
x
y xy xe
程序:syms x y; y=dsolve(‘Dy+2*x*y=x*exp(-x^2)’,’x’)
例 2 求微分方程
'
0
x
xy y e
在初始条件
(1) 2ye
下的特解并画出解函数
的图形.
程序:syms x y; y=dsolve(‘x*Dy+y-exp(1)=0’,’y(1)=2*exp(1)’,’x’);ezplot(y)
例 3 求解微分方程组
5
30
t
dx
x y e
dt
dy
xy
dt
在初始条件
00
| 1, | 0
tt
xy
下的特解
并画出解函数的图形.
程序:syms x y t
[x,y]=dsolve('Dx+5*x+y=exp(t)','Dy-x-3*y=0','x(0)=1','y(0)=0','t')
simple(x);
simple(y)
ezplot(x,y,[0,1.3]);axis auto
2.用 ode23、ode45 等求解非刚性标准形式的一阶微分方程(组)的初值问题
的数值解(近似解)
例 4 求解微分方程初值问题
2
2 2 2
(0) 1
dy
y x x
dx
y
的数值解,求解范围为区
间[0,0.5].
程序:fun=inline('-2*y+2*x^2+2*x','x','y');
剩余11页未读,继续阅读






安全验证
文档复制为VIP权益,开通VIP直接复制

评论0