我认为,这应该很简单。 我用数字解决了R中的一组微分方程。当我这样做时,它很好。但是我需要测试几组参数的微分方程组,因此我使用了一个循环。问题是,对于所有参数集,它显示相同的值,这是不正确的。
contrand<-sample(paste0("p",1:18),
size=nb, replace=TRUE,
prob=c(0, 0, 0.052, 0.013, 0.033, 0.017, 0.002,0.026, 0.005, 0.093,
0.186, 0.006, 0.001, 0.004, 0.0044, 0.4395, 0.005, 0.113))
z.cont <- data.frame(matrix(rep(NA,1*nb),nrow=nb,ncol=1))
for (i in 1:nb){
params <- get(contrand[i])
model<-function(t,x,params){
S<-x[1]
I<-x[2]
R<-x[3]
with(as.list(params),{
N<- S+I+R
dS <- birth*N - beta*S*I- death*S
dI <- beta*S*I - gamma*I - death*I
dR <- gamma*I - death*R
dx <- c(dS,dI,dR)
list(dx)
})
}
out<-as.data.frame(lsoda(xstart,times,model,params))
I<-as.data.frame(out$I)
z.cont[i,1] <- Iv[157,]
}