当前位置: 首页 > news >正文

数学生物学-2-离散时间模型(Discrete Time Models)

上一篇介绍了一个指数增长模型。然而,我们也看到,在现实情况下,细菌培养的增长是在离散的时间(在这种情况下是小时)进行测量的,种群并没有无限增长,而是趋于以S形曲线趋于平稳,称为“逻辑曲线”。

数学生物学-1-指数增长与衰退(Exponential Growth and Decay)-CSDN博客

这里发生的是,由于培养基中食物数量有限,细菌细胞由于竞争食物而生长减缓,因此,种群也开始以更慢的速度增长,越来越趋于稳定。


在本篇中,我们将提出一个描述这种增长的一般模型以及两个替代模型。 数学上,这个过程可以用所谓的“离散逻辑模型”来描述。这是一个类似于之前表达的方程式的形式:

其中r是繁殖率常数,K是模型的承载能力。如之前所示,指数增长模型在生物学上是不现实的,因为它显示了无限增长。正如我们将看到的,离散逻辑模型纳入了一个承载能力,防止了无限增长。带有N^2t的项代表了种群内的种内竞争

这其实可以表示为一个微分方程:

\frac{\mathrm{dN} }{\mathrm{d} t} = rN(1-\frac{N}{k})

我们假定r=1.5,N=100,使用R语言求解微分方程得:

# 加载所需的包
library(deSolve)# 定义逻辑斯蒂增长模型
logistic_growth <- function(time, state, parameters) {with(as.list(c(state, parameters)), {dN <- r * N * (1 - N/K)return(list(dN))})
}# 初始条件和参数
state <- c(N = 10) # 初始菌群数量
parameters <- c(r = 1.5, K = 100) # 增长率和承载能力# 时间向量
times <- seq(0, 50, by = 0.1)# 求解微分方程
out <- ode(y = state, times = times, func = logistic_growth, parms = parameters)# 绘制菌群增长曲线
library(ggplot2)
ggplot(data.frame(out), aes(x = time, y = N)) +geom_line() +labs(x = "Time", y = "Population Size", title = "Logistic Growth of Bacterial Population") +theme_minimal()

对离散逻辑函数的增强

我们应该注意到,离散逻辑方程的实现会遇到一个问题,即当N的值较大时,会给出一个负值。当然,也有其他形式的离散逻辑方程,如de Vries等人(2006)所建议的,可以解决这个问题。

方案一:Beverton-Holt模型

选项I 其中一个替代模型是所谓的Beverton-Holt模型(Beverton和Holt 1993;Geritz和Kisdi 2004),该模型是为渔业而推导出来的,用以下离散逻辑方程代替:

with r > 1 and (of course) K > 0. Note Nt+1 > 0 for all t.

方案二:Ricker模型

另一个模型是所谓的Ricker模型(Ricker 1954;Geritz和Kisdi 2004),也是为渔业而推导出来的,用以下离散逻辑方程代替:

with r > 1 and K > 0. Again, note that Nt+1 > 0 for all t.

我们分别可视化看一下:

library(ggplot2)# 参数设置
r <- 1.5
K <- 100
N <- seq(0, K, length.out = 100)# 离散逻辑模型(DLM)
g_DLM <- r * N * (1 - N/K)# Beverton-Holt模型(B-H)
g_BH <- N * (1 - N/K)^r# Ricker模型
g_Ricker <- N * exp(r * (1 - N/K))# 创建数据框
df <- data.frame(N = N, g_DLM = g_DLM, g_BH = g_BH, g_Ricker = g_Ricker)# 绘制图形
p <- ggplot(df, aes(x = N)) +geom_line(aes(y = g_DLM, color = "Discrete Logistic Model"), linewidth = 1) +geom_line(aes(y = g_BH, color = "Beverton-Holt Model"), linewidth = 1) +geom_line(aes(y = g_Ricker, color = "Ricker Model"), linewidth = 1) +scale_color_manual(name = "Model",values = c("Discrete Logistic Model" = "blue","Beverton-Holt Model" = "red","Ricker Model" = "green")) +labs(title = "Growth Functions for Discrete Models",x = "Population Size (N)",y = "Growth Rate",caption = "r = 1.5, K = 100") +theme_minimal() +theme(text = element_text(size = 12),plot.caption = element_text(hjust = 0.95))# 显示图形
print(p)

或者可以可视化为:

这三种模型都可以用一个生长函数来表达,形式如下:

如果我们观察生长函数 g(N) 依赖于 N 的方式,我们可以看到离散逻辑模型导致 Nt+1 为负的问题是如何产生的,而对于 Beverton-Holt 和 Ricker 模型则不会。请注意,图中所有三个函数都在 N = K(此图中为 100)处相交,此时生长函数等于 1.0。

总结

离散逻辑模型通过引入一个承载能力来解决第章中提出的简单指数增长模型的问题,该承载能力防止种群无限增长。另一方面,离散逻辑模型有一个弱点,即当 N 的值足够大时,下一个计算出的种群大小将为负。Beverton-Holt 和 Ricker 等替代模型通过使用不会变为负数的生长函数来解决这个弱点。

http://www.lryc.cn/news/429874.html

相关文章:

  • 免费开源!AI视频自动剪辑已成现实!效率提升80%,打工人福音!(附详细教程)
  • NtripShare全站仪自动化监测之气象改正
  • 【人工智能】项目案例分析:使用自动编码器进行信用卡欺诈检测
  • 【工控】线扫相机小结
  • 将Web应用部署到Tomcat根目录的三种方法
  • 工业和信息化部教育与考试中心计算机相关专业介绍
  • 第二证券:生物天然气线上交易达成 创新探索互联互通、气证合一
  • 重磅!RISC-V+OpenHarmony平板电脑发布
  • [DL]深度学习_扩散模型
  • AI学习记录 - 如何快速构造一个简单的token词汇表
  • JAVA中的数组流ByteArrayOutputStream
  • S3C2440中断处理
  • 《数据分析与知识发现》
  • IaaS,PaaS,aPaaS,SaaS,FaaS,如何区分?
  • 软件测试工具分享
  • word翻译工具有哪些?5个工具助你快速翻译Word文件
  • 【51单片机】ds18b20驱动,11.0592MHZ,使用DS18b20
  • Vue 导航条+滑块效果
  • Android:使用Gson常见问题(包含解决将Long型转化为科学计数法的问题)
  • 【Win开发环境搭建】Redis与可视化工具详细安装与配置过程
  • Compose知识分享
  • python-study-day5
  • Telegram mini app 本地开发配置
  • python发票查验接口助您拒绝做糊涂账、发票ocr
  • 【Linux】线程控制|POSIX线程库|多线程创建|线程终止|等待|线程分离|线程空间布局
  • JimuReport 积木报表 v1.8.0 版本发布,开源可视化报表
  • 性能优化理论篇 | swap area是个什么东西
  • Photoshop (PS)下载安装win/mac版
  • 初识redis:Set类型
  • Qt 设置QTableView的某列或某行只读