Rパッケージの別の関数によって何度も実行されている関数を書きましたが、内部パラメータのうちのいくつか関数が使用されているたびに機能しますが、Rパッケージの関数によって関数が使用されているときにはそれを行うことは不可能です。関数が別の関数内で実行されるたびに特定のパラメータの値を格納する
library(pracma)
model <- function(t,x,params){
y0 <- x[1]
y1 <- x[2]
y2 <- x[3]
y3 <- x[4]
ry <- params[1]
mu <- params[2]
d0 <- params[3]
ay <- params[4]
d1 <- params[5]
by <- params[6]
d2 <- params[7]
cy <- params[8]
d3 <- params[9]
m <- rep(0,4)
m[1] = ((ry*(1-mu)) - d0) * y0 #####I want to store the value of y0
m[2] = (ay * y0) - (d1 * y1) #######and y1
m[3] = (by * y1) - (d2 * y2) #######and y2
m[4] = (cy * y2) - (d3 * y3) #######and y3, for each time ode23 calls my function
return(m)
}
ay = 1.6/100
d1 = 0.008
by = 10/750
d2 = 0.05
cy = 100
d3 = 1
y_0 = 250000
y_1 = (ay*y_0)/d1
y_2 = (by*y_1)/d2
y_3 = (cy*y_2)/d3
x <- ode23(model, y0 = c(y0=y_0, y1=y_1, y2=y_2, y3=y_3), t0=0,tf=400,
params = c(0.008,4*10^-8,0.003,1.6/100,0.008,10/750,0.05,100,1))