【发布时间】:2014-07-28 17:59:11
【问题描述】:
如果我知道 dN/dt=rN(1-(N/K))(逻辑微分方程),取自可汗学院的 Sal Khan 讲座https://www.youtube.com/watch?v=oiDvNs15tkE
如何求解 N 并用 R 绘制 N=f(t)?
谢谢
【问题讨论】:
标签: r differential-equations calculus
如果我知道 dN/dt=rN(1-(N/K))(逻辑微分方程),取自可汗学院的 Sal Khan 讲座https://www.youtube.com/watch?v=oiDvNs15tkE
如何求解 N 并用 R 绘制 N=f(t)?
谢谢
【问题讨论】:
标签: r differential-equations calculus
这个逻辑方程有一个解析解(例如参见here),因此您可以直接绘制它。另一种选择是使用其中一个可用的求解器对其进行数值求解(请参阅here)
## Using the `deSolve` package
library(deSolve)
## Time
t <- seq(0, 100, 1)
## Initial population
N0 <- 10
## Parameter values
params <- list(r=0.1, K=1000)
## The logistic equation
fn <- function(t, N, params) with(params, list(r * N * (1 - N / K)))
## Solving and plotin the solution numerically
out <- ode(N0, t, fn, params)
plot(out, lwd=2, main="Logistic equation\nr=0.1, K=1000, N0=10")
## Ploting the analytical solution
with(params, lines(t, K * N0 * exp(r * t) / (K + N0 * (exp(r * t) - 1)), col=2, lwd=2))
【讨论】:
Y0而不是N0。 (2) 为了使您的解析解和数值解对齐,您需要从 t=0 而不是 t=1 开始 ODE 解(例如t <- 0:100)