在延迟微分方程中使用积分函数

时间:2019-10-10 10:47:16

标签: r differential-equations dde

我正在尝试在R中编码,该延迟微分方程模型类似于 延迟差分寄生寄生虫-宿主模型中无可匹敌的年龄和稳定性作者:W. W. Murdoch,R。M. Nisbet,S。P. Blythe,W。S. C. Gurney和J. D. Reeve来源:美国自然主义者,第1卷。 129,第2号(1987年2月),第263-282'

这是模型;

dU(t)/dt=r*A(t)-a*U*P(t)-Du(t)

dA(t)/dt=Mu(t)-Da(t)

dJ(t)/dt=a*U*P(t)-Mj(t)-Dj(t)

(dP(t)/dt=Mj(t)-Dp(t)

Mu(t)=E(t-T1)exp{-∫-(t-T1)^t[aP(x)+Du]dx}

Mj(t)= a*U*P(t-T2)exp(-DjT2)

我很难让代码的主要部分与dde历史功能一起使用。

library(deSolve)
## Parameters
parameters <- c(r = 0.25, a = 0.01, Dl = 1, DN = 0.3, Dj= 0.5, DP = 0.5, tau = 2, Chi = 3)
init <- c(L= 5, N = 20,J= 10, P = 2, ML = 0, MH = 0)
time <- seq(0, 100, by = 1)

## Delayed DE
PreyPredLag <- function(times, y, parms){
  L<- y['L'] # # nymph prey
  N <- y['N']  #N <- init['N'] adult prey
  J <- y['J'] # juvenile parasitoid
  P <- y['P'] #P <- init['P'] # adult predator
  ML<- y['ML'] # maturing nymph prey
  MJ<- y['MJ'] # maturing juvenile predator

  r <- parms['r'] #growth rate prey
  a <- parms['a'] #attack rate predator
  Dl<- parms['Dl'] #mortality nymph prey
  DN<- parms ['DN'] # Death adult prey
  Dj<- parms ['Dj'] # Death juvenile parasitoid
  DP<- parms ['DP'] # death adult parasitoid
  tau <- parms['tau'] #time lag prey
  chi<- parms['chi'] # time lag parasitoid

  # History function
  tlag <- times - tau
  #tlag <- time - tau #different result
  if (tlag < 0)
    ylag <- y
  #ylag <- init
  else
    ylag <- lagvalue(tlag)

  # dede
  dL <- (r*N)- ML- (a*L*P)-(Dl*L)
  dN <- ML- (DN*N)
  DJ<- (a*L*P) - MJ- (Dj*J)
  dP <- MJ - (DP*P)
  ML <- ylag[1]*exp(integrate(pdeath<-function(x){(a*P*x+Dl)*x},lower = 0,upper=2))
  MJ<- ylag[3]*exp(-Dj*2)

  return(list(c(dL,dN,DJ, dP), lag = ylag))
}

dederesult <- dede(func = PreyPredLag, parms = parameters, y = init, times = time)

我当前的错误是

  

“ exp(integrate(pdeath <-function(x){:数学函数的非数字参数)错误”

尽管请注意,我没有在显示的代码中编码a*N*P(t-t2)

0 个答案:

没有答案