数值实验—捕食模型求解微分方程组.docVIP

  • 41
  • 0
  • 约1.45千字
  • 约 4页
  • 2019-04-01 发布于江苏
  • 举报

数值实验—捕食模型求解微分方程组.doc

捕食模型求解微分方程组 (电子科技大学机械电子工程学院) 一、问题叙述: 下面的模型被称为捕食竞争模型: 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)

1亿VIP精品文档

相关文档