- 41
- 0
- 约1.45千字
- 约 4页
- 2019-04-01 发布于江苏
- 举报
捕食模型求解微分方程组
(电子科技大学机械电子工程学院)
一、问题叙述:
下面的模型被称为捕食竞争模型:
d
在此模型中,t 可以看成是时间,x1 可以认为是兔子的数量,x
解释a0的意义及b, c,的含义.
取r0=50,f0.=5,
二、问题求解
1. a:捕食能力;a0 存在捕食能力;
b: 兔子的自然增长率;
c:狐狸的死亡率;
2. 代入值,原微分方程组变为:d
2.1数值求解
求微分方程组的初值问题, 在Matlab中用于求解非线性微分方程的常用函数有ode23和 ode45, 根据微分方程求解出的结果, 可以得出系统的时间变化曲线和相轨迹图。时间变化曲线图中, 实线表示被捕食者兔子, 虚线表示捕食者狐狸, 以下均同。
2.1.1 用Matlab中的ode45 解微分方程组
图 1 两物种的时间变化曲线
表1 Y表示兔子的最小值、最大值、均值
表2 Y表示狐狸的最小值、最大值、均值
图2 相图
2.1.2用Matlab中的ode23 解微分方程组
图 3 两物种的时间变化曲线
表3 Y表示兔子的最小值、最大值、均值
表4 Y表示狐狸的最小值、最大值、均值
三.实验程序
1.建立M文件
function dx= ode(t,x) ; %定义输入,输出变量与函数文件名
dx = zeros(2,1); %明确dx的维数,用微分方程组时不可缺省
dx(1) = x(1) *(1-0.1*x(2)); %dx(m)表示x的m阶导数;x(n)表示X的第n列
dx(2) = -x(2) *(0.5- x(1)*0.02); %与方程组的第2个微分方程对应
2.在Matlab的命令窗口输入
[t,x]=ode45(ode,[0 15],[50 5]); %用ode45解微分方程组
plot(t,x(:,1),-,t,x(:,2),*) %作出二维t-x图
plot(x(:,1),x(:,2)) %作出相图
四.实验结果分析
1. 系统分析
从上面图形的时间变化曲线和相图中很直观的得到, 在此模型中, 捕食者和被捕食者处于动态平衡之中, 哪一种也不至于灭绝, 各自数量随时间而做周期性变化, 此消彼长, 周而复始。
ode45与ode23的数值解比较
最小值
最大值
均值
兔子(ode45)
5.76
66.95
28.85
兔子(ode23)
5.799
66.99
29.39
兔子(ode45-ode23)
-0.039
-0.04
-0.54
狐狸(ode45)
3.805
20.75
12.05
狐狸(ode23)
3.808
20.77
12.34
狐狸(ode45-ode23)
-0.003
-0.02
-0.29
五.实验总结
在Matlab中用于求解非线性微分方程的常用函数有ode23和 ode45, 两者均采用龙格库塔法进行求解, 但由于 ode45采用四阶五级龙格库塔法求解, 精度高于ode23,此实验未计算出精确解,但可以通过人工解微分方程组计算,再与二者做了比较,故能得出以上结果。
原创力文档

文档评论(0)