R:微分方程模型中的时间相关参数

R:微分方程模型中的时间相关参数,r,differential-equations,R,Differential Equations,我有一个微分方程模型(见下文),我正在寻找某种方法来改变某些时间步长或某个状态变量的某个值的某些参数值(或另一种方法,如果效果更好)。例如,我想在时间步骤5将GammaQR和GammaQD从0更改为.02(或者,如果它工作得更好,当H>0.04时)。我不知道该怎么做,如果有任何建议,我将不胜感激!谢谢 VS = 0.01 VE = 0.01 VH = 0.01 BSE = 10 # BSI = 10 # THE = 1/10 TEI = 1/3 Delt

我有一个微分方程模型(见下文),我正在寻找某种方法来改变某些时间步长或某个状态变量的某个值的某些参数值(或另一种方法,如果效果更好)。例如,我想在时间步骤5将GammaQR和GammaQD从0更改为.02(或者,如果它工作得更好,当H>0.04时)。我不知道该怎么做,如果有任何建议,我将不胜感激!谢谢

 VS  = 0.01    
VE  = 0.01  
VH  = 0.01  
BSE = 10 #
BSI = 10  #
THE = 1/10      
TEI =  1/3 
DeltaID = .5 
GammaIR = .5 
XIQ = 0.001  
XEQ = 0.01 
XHQ = 0.05 
GammaQR = .02  
GammaQD = .02 

library(deSolve)

pars <- c(VS, VE, VH, BSE, BSI, THE, TEI, DeltaID, GammaIR, XIQ, XEQ, XHQ, GammaQR)

init.values <- c(S = .99 , H = .01 , E = 0 , V = 0, I = 0 , Q = 0 , D = 0 , R = 0 )

times <- seq(0, 60, by = 1)

Smallpox <- function(time, y.values, parameters){
   with(as.list(c(y.values, parameters)), {

    dS.dt = -VS*S - BSI*S*I - BSE*E*S 
    dH.dt = BSI*S*I + BSE*E*S  - THE*H - XHQ*H - VH*H 
    dE.dt = THE*H - XEQ*E - VE*E - DeltaID*E - TEI*E
    dV.dt = VS*S + VE*E + VH*H
    dI.dt = TEI*E - XIQ*I - GammaIR*I - DeltaID*I
    dQ.dt = XHQ*H + XIQ*I + XEQ*E - GammaQR*Q - GammaQD*Q
    dD.dt = DeltaID*I + DeltaID*E + GammaQD*Q
    dR.dt = GammaQR*Q + DeltaID*I


    return(list(c(dS.dt, dH.dt, dE.dt, dV.dt, dI.dt, dQ.dt, dD.dt, dR.dt)))
  })
}

out <- as.data.frame(ode(func = Smallpox, y = init.values, parms = pars, times = times))
tail(out)

matplot(out$time, out[ ,2:9], type = "l", xlab = "time", ylab = "percent of       population", main = "Model Name", lwd = 2, col = c("black", "red", "green", "Blue", "cyan", "purple", "grey", "magenta"), lty = 1:8)
VS=0.01
VE=0.01
VH=0.01
疯牛病=10#
BSI=10#
平均值=1/10
TEI=1/3
三角洲=0.5
GammaIR=.5
XIQ=0.001
XEQ=0.01
XHQ=0.05
GammaQR=.02
GammaQD=.02
图书馆(deSolve)

PAR请参见
deSolve
软件包中的
?事件
。如果您知道您的时间序列有多长,可以简单地设置,例如
GammaQR