2016-08-28 4 views
0

ここでは非常に新しいユーザーです。私はlsodaを使って2つの層に層化された微分方程式を解くことを試みています(for(s in 1:2)ループで示されています)。この完全なコードを実行している場合'lsoda'にオブジェクトがある場合のエラーメッセージR

、私はエラーメッセージ

オブジェクト「N」を得続ける

私はNを定義しようとか、どんなに

が見つかりません。

誰でもエラーを見つけたり、間違っていることについてアドバイスしたりできますか?前もって感謝します。

Rコード:

library(deSolve) 

Dyn <- function(t, var,par) { 

    with(as.list(c(par, var)), { 

    for(s in 1:2){ 

     #Derivatives 
     dX[s] <- mu*N[s] - sigma*X[s] - (c[s]*beta*(InD[s] +ID[s]+ IdT[s])/N[s])*X[s] - mu*X[s] 

     dXint[s] <- sigma*X[s] - (1-omega)*(c[s]*beta*(InD[s] +ID[s]+ IdT[s])/N[s])*Xint[s] - mu*Xprep[s] 

     dInD[s] <- (c[s]*beta*(InD[s] +ID[s]+ IdT[s])/N[s])*X[s] - psi*InD[s]- mu*InD[s] 

     dID[s] <- (1-omega)*(c[s]*beta*(InD[s] +ID[s]+ IdT[s]) /N[s])*Xint[s]+ psi*InD[s]- mu*ID[s] 

     N[s] <- X[s]+Xint[s]+InD[s]+ID[s] 

     diffs <- c(dX[s], dXint[s], dInD[s], dID[s], N[s])} 

    return(list(diffs)) 

    })} 

#Defining parameter and initial values 

par <- c(mu=0.033, sigma=0.29, beta=0.40, c=c(2, 30), Ctot=1773600, N=c(332550, 36950), psi=0.022, omega=0.44) 

init <- c(X=c(332550,36950), Xint=c(0,0), InD=c(1,1), ID=c(0,0)) 

t <- seq(0, 30, by=0.1) 

#Numerical solution# 

Hom.sol <- lsoda(init, t, Dyn,par) 
+0

'' N''を定義した場所は表示されません - 完全再現可能な例。それについてはヘルプを参照してください[こちら](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) –

答えて

0

私はあなたがパラメータと変数を混同していると思います。 Nは次元2のパラメータparとして定義されているようですが、モデル定義では次元1のNを更新しています。

+0

ありがとうございます。私はNが2次元を持つようにコードを修正しました(上記参照)。これはN [s]を加えることによります。私はまだ同じエラーメッセージを取得します - "オブジェクト 'N'が見つかりません"。 N [s]は、今定義されているように、その層内の他のすべてのコンパートメントの合計です。私が見逃していることへのいかなる考え?どうも。 – user6767735

関連する問題