密度依赖性增长

Density Dependent Growth

我正在尝试使用给我的示例在 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 <- c(1) 更改为 c(178) ,但随后触底。我试过将 prms <- c(r = 1, alpha = 0.01) 更改为 (r = 21, 随着初始人口变化的变化而没有变化,但它并没有增加。我错过了什么?知道 R 它会变得很小,但我一直想念它。 任何帮助将不胜感激。

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

 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时是logistic/ 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)