Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R-使用包deSolve,如何克服此对象错误?_R_Ode - Fatal编程技术网

R-使用包deSolve,如何克服此对象错误?

R-使用包deSolve,如何克服此对象错误?,r,ode,R,Ode,我对R和deSolve都是新手。我试图用给定的初始参数和状态变量值解一个方程。但是,由于我的参数没有对象,最后出现了一个错误。我如何克服这个问题?我是否为每个参数创建一个新对象 以下是模型的语法: myfn <- function(times, y, parms) { dy <- numeric(6) dy[1] <- a - b*y[4] - c*y[1] dy[2] <- y[5]*dy[1]*(1+y[6]) - e*y[2] - (f*y[3]*y[4]*y[1

我对R和deSolve都是新手。我试图用给定的初始参数和状态变量值解一个方程。但是,由于我的参数没有对象,最后出现了一个错误。我如何克服这个问题?我是否为每个参数创建一个新对象

以下是模型的语法:

myfn <- function(times, y, parms) {

dy <- numeric(6)
dy[1] <- a - b*y[4] - c*y[1]
dy[2] <- y[5]*dy[1]*(1+y[6]) - e*y[2] - (f*y[3]*y[4]*y[1] - g)
dy[3] <- h - i*y[2]
dy[4] <- y[6]*dy[1] - j*y[4] + k*(f*y[3]*y[4]*y[1] - g) + d
dy[5] <- 1.0 - y[5]*(y[1] + y[4] + 1)
dy[6] <- 1.0 - y[6]*(y[1] + 1)

return(list(dy))

}

parms <-c(a= 2.0, b = 0.1, c = 0.1, d = 1.0, e = 1.0, f = 1.0, g = 0.15, h = 1.0, i = 1.0, j = 1.0, k = 0.5)
yini <-c(Y1 = 1, Y2 = 1, Y3 = 1, Y4 = 1, Y5 = 1, Y6 = 1)
times <-seq(1, 60, 1)

out <- ode(y = yini, times = times, func = myfn, parms = parms)
plot(out)

myfn一种解决方案是将
与()
一起使用,类似于:

myfn <- function(times, y, parms) {

   dy <- with(as.list(parms),
       c(a - b*y[4] - c*y[1],
         y[5]*dy[1]*(1+y[6]) - e*y[2] - (f*y[3]*y[4]*y[1] - g),
         h - i*y[2],
         y[6]*dy[1] - j*y[4] + k*(f*y[3]*y[4]*y[1] - g) + d,
         1.0 - y[5]*(y[1] + y[4] + 1),
         1.0 - y[6]*(y[1] + 1)))

   return(list(dy))  
}
myfn
myfn <- function(times, y, parms) {

   dy <- with(as.list(parms),
       c(a - b*y[4] - c*y[1],
         y[5]*dy[1]*(1+y[6]) - e*y[2] - (f*y[3]*y[4]*y[1] - g),
         h - i*y[2],
         y[6]*dy[1] - j*y[4] + k*(f*y[3]*y[4]*y[1] - g) + d,
         1.0 - y[5]*(y[1] + y[4] + 1),
         1.0 - y[6]*(y[1] + 1)))

   return(list(dy))  
}