用MATLAB解常微分方程
f实验四求微分方程的解
一、问题背景与实验目的
实际应用问题通过数学建模所归纳而得到的方程,绝大多数都是微分方程,真正能得到代数方程的机会很少.另一方面,能够求解的微分方程也是十分有限的,特别是高阶方程和偏微分方程(组).这就要求我们必须研究微分方程(组)的解法,既要研究微分方程(组)的解析解法(精确解),更要研究微分方程(组)的数值解法(近似解).
对微分方程(组)的解析解法精确解,Matlab有专门的函数可以用,本实验将作一定的介绍.
本实验将主要研究微分方程组的数值解法(近似解),重点介绍Euler折线法.
二、相关函数(命令)及简介
1.dsolveequ1equ2…:Matlab求微分方程的解析解.equ1、equ2、…
为方程(或条件).写方程(或条件)时用Dy表示y关于自变量的一阶导数,用用D2y表示y关于自变量的二阶导数,依此类推.
2.simplifys:对表达式s使用maple的化简规则进行化简.
例如:
symsxsimplifysi
x2cosx2a
s13.rhowsimples:由于Matlab提供了多种化简规则,simple命令就是对表达式s用各种规则进行化简,然后用r返回最简形式,how返回形成这种形式所用的规则.例如:
symsxrhowsimplecosx2si
x2rcos2xhowcombi
e4.TYsolverodefu
tspa
y0求微分方程的数值解.说明:1其中的solver为命令ode45、ode23、ode113、ode15s、ode23s、ode23t、ode23tb之一.
2odefu
dy
是显式常微分方程:
dt
fty
yt0y0
3在积分区间tspa
t0tf上,从t0到tf,用初始条件y0求解.
0
f4要获得问题在其他指定时间点t0t1t2上的解,则令tspa
t0t1t2tf(要求是单调的).5因为没有一种算法可以有效地解决所有的ODE问题,为此,Matlab提
供了多种求解器Solver,对于不同的ODE问题,采用不同的Solver.
求解器ODE类型Solver
特点
说明
ode45非刚性
单步算法;4、5阶Ru
geKutta大部分场合的首选算方程;累计截断误差达x3法
ode23非刚性
单步算法;2、3阶Ru
geKutta使用于精度较低的情方程;累计截断误差达x3形
ode113非刚性
多步法;Adams算法;高低精计算时间比ode45短
度均可到103106
ode23t适度刚性ode15s刚性
ode23s刚性
ode23tb刚性
采用梯形算法
适度刚性情形
多步法;Gears反向数值微分;若ode45失效时,可
精度中等
尝试使用
单步法;2阶Rosebrock算法;当精度较低时,计算时
低精度
间比ode15s短
梯形算法;低精度
当精度较低时,计算时
间比ode15s短
6要特别的是:ode2r