Использование интегральной функции в дифференциальном уравнении с задержкой - PullRequest
0 голосов
/ 10 октября 2019

Я пытаюсь закодировать в R модель дифференциального уравнения с задержкой, аналогичную модели в «Неуязвимом возрастном классе и стабильности в моделях паразитоид-хозяин с задержкой дифференцирования» Автор (ы): В. В. Мердок, Р. М. Нисбет, С. П. Блайт,WSC Gurney и JD Reeve Источник: Американский натуралист, Vol. 129, № 2 (февраль, 1987 г.), с. 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 (интегрировать (pdeath <- function (x) {: нечисловой аргумент дляматематическая функция "</p>

Хотя обратите внимание, я не кодировал a*N*P(t-t2) в представленном коде

...