Ich bin ziemlich neu mit R und ich versuche, ein System von Differentialgleichungen mit de deSolve-Paket zu lösen.R-Paket deSolve: Fehler in checkFunc
Ich habe insgesamt 10000 Zeitschritte und alle 100 Zeitschritte muss ich die Werte der Variablen ändern. Der Code habe ich versucht, gibt mir folgende Fehlermeldung:
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)
Ich bin nicht ganz sicher, wo der Fehler herkommt. Hier ist mein Code so weit:
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
}
}
Haben Sie irgendwelche Vorschläge des Fehlers, um loszuwerden, oder den Code zu verbessern? Vielen Dank!