【问题标题】:How to solve and plot differential equations in R [closed]如何在 R 中求解和绘制微分方程 [关闭]
【发布时间】: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


    【解决方案1】:

    这个逻辑方程有一个解析解(例如参见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))
    

    【讨论】:

    • 没查过,不过解析解和数值解明显不同还是有点意外的……
    • 如果您发现问题,请告诉我(或编辑)。
    • 两个问题:(1)你在解析表达式中使用Y0而不是N0。 (2) 为了使您的解析解和数值解对齐,您需要从 t=0 而不是 t=1 开始 ODE 解(例如t &lt;- 0:100
    • @BenBolker 非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    • 2018-02-14
    • 2016-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多