【问题标题】:Density Dependent Growth密度相关增长
【发布时间】:2015-04-12 07:11:24
【问题描述】:

我正在尝试使用给我的示例在 R 中创建一个图表来显示人口的承载能力:

install.packages("deSolve", dependencies = TRUE)

clogistic <- function(times, y, parms){
n <- y[1]
r <- parms[1]
alpha <- parms [2]
dN.dt <- r * n * (1 - alpha * n)
return(list(c(dN.dt)))
}

prms <- c(r = 1, alpha = 0.01)
init.N <- c(1)
t.s <- seq(0.1, 10, by = 0.1)
library(deSolve)
out <- ode(y = init.N, times = t.s, clogistic, parms = prms)

plot(out[,1], out[,2], type="l", xlab = "Time", ylab = "N", col = "blue", lwd = 2)

现在我正在使用它来尝试显示 178 的起始人口,在 15 个时间步长中增加了 21。但是当我尝试更改公式时,它会在一个时间步后减小并触底,并在剩余时间保持底部。 我尝试将 init.N

【问题讨论】:

  • 跟进@BondedDust的回答:生态学中逻辑方程的更常见形式是r * n * (1 - n/K),其中K是承载能力(=稳定平衡值只要r&gt;0K&gt;0n(0)&gt;0)。这可能会让事情更容易理解。

标签: r data-modeling


【解决方案1】:

这是正在积分的微分方程:

 dN.dt <- r * n * (1 - alpha * n)

如果您想要 n= 200 的渐近线,则将 alpha 设置为 1/200,这样当 n 达到 200 时,变化率将变为零:

prms <- c(r = 1, alpha = .005)
init.N <- 178
t.s <- seq(0.1, 10, by = 0.1)
library(deSolve)
out <- ode(y = init.N, times = t.s, clogistic, parms = prms)

plot(out[,1], out[,2], type="l", xlab = "Time", ylab = "N", col = "blue", lwd = 2)

起始值为 178,当 alpha 大于 1/178 时,变化率将为负,当 alpha == 1/178 时变化率是平线,当 alpha 小于 1/178 时变化率是逻辑的。

要从 300 变为 200,您将保持 alpha = 1/200 并从 300 开始:

prms <- c(r = 1, alpha = 1/200)
init.N <- c(300)
t.s <- seq(0.1, 10, by = 0.1)
out <- ode(y = init.N, times = t.s, clogistic, parms = prms)
plot(out[,1], out[,2], type="l", xlab = "Time", ylab = "N", col = "blue", lwd = 2)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-19
    • 2018-07-05
    • 2010-12-05
    相关资源
    最近更新 更多