在ode模型

时间:2017-09-05 16:35:49

标签: r loops model ode

我构建了一个模型,并希望为状态值插入一些循环,但它不起作用。我将模型简化如下,ia,ib,ic,id是状态值的矩阵。有没有人有解决方案?

Mod<-function(t, parms){
  derivs<-function(t, state, parms){
    with(as.list(c(state, parms)),{
      dA=k1*a-k2*b
        dB=k1*a+aa
        dC=k2*c-bb
        dD=k2*d-k1*c
        return(list(c(dA,dB,dC,dD),
                    IRAB=dA/dB))
    })

  }

  betavec <- seq(1,14,by=1)

  res <- as.vector(data.frame(1:5, 1:14),mode="numeric")

for (k in seq_along(betavec)){

res[[k]]<-ode(y=c(a=ia[1,k],b=ib[1,k]*eAA[1,k],c=ic[1,k]*eAA[1,k],d=id[1,k]),times=time,func=derivs,parms=parms, method ="rk4")

  }
}

pars<-c( k1=1,k2=1)

Objective<-function(x, parset=names(x)){

  pars[parset]<-x

  tout<-d1$time

  out<-Mod(tout,pars)

  return(modCost(obs=d1, model=out, y="val", err="err"))
}

lower = c( k1=0, k2=0)
upper=c( K1=10,  K2=10)

m1<-modFit(p=pars, f=Objective,lower=lower, upper=upper, method="Marq")

summary(m1)

0 个答案:

没有答案