用deSolve求解R中含时变参数的常微分方程

用deSolve求解R中含时变参数的常微分方程,r,parameters,ode,numerical-analysis,R,Parameters,Ode,Numerical Analysis,我有特定于每次的参数值。我想输入这个参数值来解决以下ODE:dN/dt=mu*N 其中mu=b*(X-12.2)^2。X值随时间变化。请参阅我提出的以下代码: library(deSolve) times = seq(from = 0, to = 2, by = 0.1) X = c(57.20000, 57.19989, 57.18739, 57.08867, 56.80817, 56.31114, 55.61912, 54.77622, 53.82779, 52.81217

我有特定于每次的参数值。我想输入这个参数值来解决以下ODE:
dN/dt=mu*N
其中
mu=b*(X-12.2)^2
X
值随时间变化。请参阅我提出的以下代码:

library(deSolve)
times = seq(from = 0, to = 2, by = 0.1)
X = c(57.20000, 57.19989, 57.18739, 57.08867, 56.80817, 56.31114, 55.61912,
         54.77622, 53.82779, 52.81217, 51.75900, 50.69015, 49.62139, 48.56372,
         47.52467, 46.50934, 45.52096, 44.56154, 43.63211, 42.73310, 41.86450)


N0 <- 1
b <- 7.45      # Model parameter
Xmin = 12.2

model <- function(t, y, parms) {
  with(as.list(c(y, parms)),{
   mu <- b*(X-Xmin)^2
    dN <- mu*N
    return(list(dN))
})
}


yini <- c(N=N0)
parms <- mu
t <- times

out <- ode(y=yini, times=times, func=model, parms=parms)
库(deSolve)
时间=顺序(从=0到=2,由=0.1)
X=c(57.20000,57.19989,57.18739,57.08867,56.80817,56.31114,55.61912,
54.77622, 53.82779, 52.81217, 51.75900, 50.69015, 49.62139, 48.56372,
47.52467, 46.50934, 45.52096, 44.56154, 43.63211, 42.73310, 41.86450)

N0您的参数(不随步骤变化的值)是b和Xmin。mu不能是parm,因为它每一步都在变化。你似乎想估算μ,以便在微分模型下最适合该数据,但这不是你提出问题的方式。你是正确的,μ是使用随时间变化的X值计算的。所以,mu在每个时间步都会发生变化。在每个时间步都有μ值的情况下,我想从方程中计算N。事实上,μ是X的参数,函数,X随时间变化。因此,mu是时间的函数。如果我有可用的N值,我会估计mu。但是,这里我想预测N值。再次感谢,希望现在一切都清楚了。我原以为
N0
将是
max(X)
,而你将在
t