实验五利用Matlab求解常微分方程组的实验报告学院:数计学院班级:1003班姓名:黄晓丹学号:1051020144
一实验目的熟悉Matlab软件中关于求解常微分方程的各种命令掌握利用Matlab软
件进行常微分方程的求解。二相关知识
在MATLAB中,由函数dsolve解决常微分方程(组)的求解问题,其具体格式如下:
Xdsolve‘eq
1’’eq
2’…函数dsolve用来解符号常微分方程、方程组,如果没有初始条件,则求出通解,如果有初始条件,则求出特解用字符串方程表示,自变量缺省值为t。导数用D表示,2阶导数用D2表示,以此类推。S返回解析解。在方程组情形,s为一个符号结构。toutyoutode45‘yprime’t0tfy0采用变步长四阶Ru
geKutta法和五阶Ru
geKuttaFelhberg法求数值解,yprime是用以表示fty的M文件名,t0表示自变量的初始值,tf表示自变量的终值,y0表示初始向量值。输出向量tout表示节点t0t1…t
T输出矩阵yout表示数值解,每一列对应y的一个分量。若无输出参数,则自动作出图形三实验内容例1求下列微分方程的解析解
(1)yayb
(2)ysi
2xyy00y01
(3)ffgggff01g01
方程(1)求解的MATLAB代码为:
clearsdsolveDyayb结果为sbaexpatC1方程(2)求解的MATLAB代码为:clearsdsolveD2ysi
2xyy00Dy01xsimplifys以最简形式显示s结果为s16cos3x12cosxsi
x12si
x16si
3xcosx53si
xa
s23si
xcosx53si
x方程(3)求解的MATLAB代码为:
fclearsdsolveDffgDggff01g01simplifysfs是一个结构simplifysg结果为a
sexptcostexptsi
ta
sexptsi
texptcost
例2求解微分方程
yyt1y01
先求解析解,再求数值解,并进行比较。由clearsdsolveDyyt1y01tsimplifys
可得解析解为ytet。下面再求其数值解,先编写M文件fu
8m
M函数fu
8mfu
ctio
ffu
8tyfyt1再用命令clearcloset0011ytexptplotty化解析解的图形holdo
保留已经画好的图形,如果下面再画图,两个图形和并在一起tyode45fu
8011plottyro画数值解图形,用红色小圈画xlabeltylabely结果见图71
14
135
13
125
y
12
115
11
105
1
0
02
04
06
08
1
t
图71解析解与数值解由图1661可见,解析解和数值解吻合得很好。
例3求方程
ml