Я довольно новичок в R, и я пытаюсь решить систему дифференциальных уравнений с пакетом deSolve.R-пакет deSolve: Ошибка в checkFunc
У меня есть 10000 временных меток и каждые 100 timesteps, я должен изменить значения переменных. Код я попытался дает мне следующую ошибку:
Error in checkFunc(Func2, times, y, rho) :
The number of derivatives returned by func() (2) must equal the length of the initial conditions vector (3)
Я не совсем уверен, где ошибка приходит. Вот мой код до сих пор:
library(deSolve)
#--------variables and parameter--------------------------
parameters <- c(up = 0.0001, hm = 0.1, hp = 0,889, mm = 0.1 , nt = 100)
yini <- c(u = 1, m = 0.001, h = 0.001)
times <- seq(0,100, by=0.1)
out<- NULL
#--------functions---------------------------------------
DiffU <- function(t, yini, parameters){
with(as.list(c(yini, parameters)),{
#functions
du <- -(up*u) + hm*h + (1/2*nt)*h
dm <- hp*h - mm*m - (1/nt)*m
# return functions
list(c(du, dm))
})
}
#---------------------------------------------
repeat{
out<- rbind(out, ode(yini, times, DiffU, parameters))
yini<-c(u = u+0.5*h, m = 0.001, h = m+0.5*h)
x<- x+1
if (x==100){
break
}
}
У вас есть какие-либо предложения, чтобы избавиться от ошибки или улучшить код? Большое спасибо!