Я пытаюсь решить систему ODE, используя пакет Diffeqr
в R ( ссылка на документацию).При решении системы возникает ошибка, в которой говорится: « Требуются большие макситеры .»
Пример :
library(diffeqr)
library(plotly)
diffeq_setup()
### Adapted Zombie apocalypse model (Munz, 2009) ###
# Drift function
f <- function(u,p,t) {
du1 = u[4] * u[1] - p[1] * u[1] * u[3] + p[2] * u[2]
du2 = p[1] * u[1] * u[3] - p[2] * u[2] - p[3] * u[2]
du3 = 100 + p[3] * u[2] - p[1] * u[1] * u[3] + p[2] * u[2]
du4 = 0
return(c(du1,du2, du3, du4))
}
# Diffusion function (note that noise terms are 0)
g <- function(u,p,t) {
return(c(0*u[1], 0*u[2], 0*u[3], 0*u[4]))
}
u0 = c(100000, 0, 0, 0.7) # initial conditions
tspan <- list(0.0,1000) # timespan to solve over
p = c(0.0002, 0.005, 0.02) # parameter values
sol = diffeqr::sde.solve(f,g,u0,tspan,p=p,saveat=1, abstol = 10^(-3))
udf = as.data.frame(sol$u)
plot_ly(udf, x = sol$t, y = ~V1, name = 'Zombies', type = 'scatter', mode = 'lines') %>%
add_trace(y = ~V2, name = 'Zombie/human conflicts', mode = 'lines') %>%
add_trace(y = ~V3, name = 'Zombies', mode = 'lines')
Произошла ошибкавыглядит следующим образом:
> sol = diffeqr::sde.solve(f,g,u0,tspan,p=p,saveat=1, abstol = 10^(-3))
┌ Warning: Interrupted. Larger maxiters is needed.
└ @ DiffEqBase ~/.julia/packages/DiffEqBase/cp0Wf/src/integrator_interface.jl:150
Я попытался указать maxiter
в sde.solve()
, однако добавить к этому аргументу maxiter
не удалось.
Вопрос Как вручную установить maxiter
на более высокое значение?