Python分析捕食者和被捕食者模型 | 拟合求解a,b,c,d
Posted 叶庭云
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python分析捕食者和被捕食者模型 | 拟合求解a,b,c,d相关的知识,希望对你有一定的参考价值。
文章目录
一、问题来源
问题来自帮朋友做的一个题,如下所示:
我主要做了:
- 可视化捕食者和被捕食者数量随时间变换情况;
- 利用 numpy 的 polyfit、poly1d 拟合数据点分别得到两个多项式方程;
- scipy求导并代入值计算;
- 等式两边的输入都有了,用多元线性回归(fit_intercept=False,不要截距)拟合数据,分别估计方程两个参数;
- 最终得到拟合的 a,b,c,d 的值;
二、引言
捕食者和被捕食者模型(Predator-Prey Model),这是生态学中非常经典的一个模型。
假设一个生态系统中有两个物种,其中一个为食草动物,两者分别构成了捕食者和被捕食者。以兔子和狐狸为例:
- x ( t ) x(t) x(t) : 狐狸的数量随时间变换的函数
- y ( t ) y(t) y(t):兔子的数量随时间变换的函数
如果没有兔子,狐狸的数量会因为缺少食物而减少:
d
x
d
t
=
−
a
x
,
a
>
0
\\frac\\mathrmd x\\mathrm~d t=-a x, a>0
dtdx=−ax,a>0
事实上,生态系统中的兔子和狐狸存在一种互动关系,兔子的数量会因为狐狸数量的增加而减少,狐狸的数量也会因为兔子数量的减少而减少,两者之始至终都相互影响。我们用正比于两者数量的积来表示这种互动关系, 所以更精确的模型可以这样写:
d x d t = − a x + b x y \\frac\\mathrmd x\\mathrm~d t=-a x+b x y dtdx=−ax+bxy
现在考虑兔子的数量,如果没有狐狸,并且假设自然资源、空间充足,那么兔子会呈现指数式增长:
d y d t = d y , d > 0 \\frac\\mathrmd y\\mathrm~d t=d y, d>0 dtdy=dy,d>0
事实上,兔子的数量会随着狐狸数量的增加而减少,这种减少体现在两种生物的互动过程中。
结合之前的分析,我们可以得到一个综合的微分方程组:
d x d t = − a x + b x y \\frac\\mathrmd x\\mathrm~d t=-a x+b x y dtdx=−ax+bxy
d y d t = d y − c x y \\frac\\mathrmd y\\mathrm~d t=d y-c x y dtdy=dy−cxy
捕食者和被捕食者模型,这个著名的方程组也叫做 Lotka-Volterra predator-prey model。
三、Python分析
可视化捕食者和被捕食者模型随时间变换情况:
利用 numpy 的 polyfit、poly1d 拟合数据点,分别得到两个多项式方程。
scipy求导并代入值计算,等式两边的输入都有了,用多元线性回归(fit_intercept=False,不要截距)拟合数据,可以分别估计方程两个参数;最终得到拟合的 a,b,c,d 的值。
以上是关于Python分析捕食者和被捕食者模型 | 拟合求解a,b,c,d的主要内容,如果未能解决你的问题,请参考以下文章