每次R

时间:2016-04-29 15:15:46

标签: r dsolve

我认为,这应该很简单。 我用数字解决了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,]
}

0 个答案:

没有答案