21-22-2学期|工程计算期末报告
一、问题描述
捕食者-猎物模型(predator-prey models).又称寄生物-寄主模型,是表达捕食者-猎物系统内种群数量变化动态的数学方程。最简单的捕食者-猎物模型如下:
其中,x 和y 分别为猎物和捕食者的数量,a 为猎物的自然生长率,c 为捕食者的死亡率。这里认为捕食者仅以猎物为食,且猎物的食物足够多。
科研人员通过 2 年的观察获得下表所示的捕食者和猎物的数量变化情况,请根据下表数据求得模型中的各项参数值,并对模型进行求解,得到这 24 个月内以天为单位的捕食者和猎物种群数量变化数据。
注: 用符号运算求解析解时仅保留解的整数部分。
二、数学建模
由题意知,本题并非一般的微分方程组求解,给出的模型中含未知量参数
整体思路是根据原模型构造新的合适的模型,带入表格数据后利用最小二乘原理将型值进行分析运算,以求出最接近或最能表示数据趋势的“函数”,即确定参数a,b,c,d的值。四个参数的值确定下来后,之后便和正常的常微分方程组求解问题一致,就容易解决了。
所以总结一下,该题主要考察了拟合和常微分方程组求解两部分的内容。
具体分析过程见下:
将原微分方程的模型做如下变换,方便后续积分。
$$
\begin{equation}
\left{
\end{equation}$$
对上式在相邻两时间点上,即
$$
\begin{equation}
\left{
\end{equation}$$
根据梯形公式,可将上面方程组最右边两项积分符号消去,即有
$$
\begin{equation}
\left{
\end{equation}
$$
为使表示简洁,记
$$
\begin{equation}
\left{
\end{equation}$$
将上式中含i各项写开,再化为方程组的形式,即下面
$$
\begin{equation}
\left{
\end{equation}$$
其中,
常微分方程组确认后,这里再通过matlab使用经典四阶龙格库塔求解方程组的数值解,并绘制数值解图像以及相平面图像,具体见下方实现代码及结果分析。
三、实现代码
1 | function finalWork |
四、结果分析
在函数Least_squares_BuShiLieWu
中求得
所以原常微分方程组为:
接下来通过函数Classical_RK4s
,求出微分方程组的数值解,并绘制相关图像,如下:
分析图象可知,在猎物数量达到顶峰后,捕食者数量开始迅速增加,伴随猎物数量的下降;在猎物数量先下降到一定程度,捕食者数量也开始下降,待到捕食者数量下降到一定程度,猎物数量又开始增加。由相平面曲线闭合可推断出,捕食者-猎物的数量变化是一个循环往返的过程,这个结果也符合已知的生态学规律。
关于算法的时间复杂度分析,通过重复实验发现其主要与四阶龙格库塔的迭代步长有关,通过将迭代步长依次设为0.1,0.01,0.001等等后发现,数值解的图像基本不发生改变,但程序所需时间随步长的减小显著提升,所以这里选择h=0.1以获得更好的时间效果。