R中的差分方程

时间:2013-07-22 07:23:10

标签: r recursion model

以下是寄生虫生长模型:

Ni(a,t) represents the expected number of parasites of age a at time t

Ni(a,t)表示在时间t的年龄a的预期寄生数,ki(a,t)表示杀伤效应,而PMF表示倍增因子。这是一个离散模型,等于1,2,3 ...... 48。谁能告诉我如何使用差分方程在R中实现这个方程?非常感谢您的支持。

2 个答案:

答案 0 :(得分:2)

这是我对您提供的信息所能做的最好的事情。把我指向其余部分,我或许可以让它真正起作用,因为我认为它会无限复发。

 Ki <- function(a, t){ ## You need to actually define this properly
      return(1)
    }

    Ni <- function(a, t, PMF){
      if ((a %% 1 != 0)) stop("Only Takes Integer values of a")
      if ((t %% 1 != 0)) stop("Only Takes Integer values of t")

      if (a == 1){
        x = Ni(48, t-1, PMF)
        y = exp(-Ki(48,t-1))
        result = PMF * x * y
        return(result)
      }

      if (a > 1){
        x = Ni(a-1, t-1, PMF)
        y = exp(-Ki(a-1,t-1))
        result = x * y
        return(result)
      }
    }

答案 1 :(得分:0)

您没有一组初始条件。一旦你得到N的初始48个值(a = 1..48,t = 1),你从第二个方程计算N(a = 1,t = 2),然后计算N(a = 2 .. 48,t = 2)来自第一个等式。重复t = 3,依此类推。

你所拥有的是递归关系,而不是微分方程。正如我刚刚解释的那样,你逐步完成递归关系。

有可能通过查看N(t)-N(t-1)/ dt并求解将其转换为微分方程组,但这是数学工作而不是编程工作。