Я пытаюсь закодировать в 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)
в представленном коде