2016-09-12 18 views
0

を解決するためにDESOLVE・パッケージを使用しました。私は、「 - オイラーの統合栄養藻類ケモスタットモデルの6.7.2数値解法」の例では、第6章(Download)に到着しました。だから私はdeSolveパッケージとdocumentationを使ってRを使ってモデリングを再現しようとしました。私は、最初の部分を通じて勤務し、次のコードを派生:私はSoetaertとハーマンによる「生態モデルの実用ガイド」を通じて働いていオイラー積分

require(deSolve) 

# Setting parameter values 
parameters <- c(Nin=10, pmax=1, ks=1, dil=0.24) 

# Setting state variable values 
state <- c(DIN=0.1, Phyto=1) 

# Defining function 
Lorenz<-function(t, state, parameters) { 
    with(as.list(c(state, parameters)),{ 
    # Rate of change 
    dDIN <- -pmax * (DIN/DIN+ks) * Phyto - dil * (DIN-Nin) 
    dPhyto <- pmax * (DIN/DIN+ks) * Phyto - dil * Phyto 

    # Return the rate of change 
    return(list(c(dDIN, dPhyto))) 
    }) 
} 

# Define time frame 
times<-seq(0,20,by=0.1) 

# Solving equations 
out<-ode(y=state,times=times,func=Lorenz,parms=parameters,method="euler") 
head(out) 

# Plotting results 
par(mfrow=c(1,3), oma = c(0, 0, 3, 0)) 
plot(out, xlab = "time", ylab = "-") 
plot(out[, "Phyto"], out[, "DIN"], pch = ".") 
mtext(outer = TRUE, side = 3, "Lorenz model", cex = 1.5) 

だから私はエラーを取得していないが、私は、このソリューションが間違っていることを事実として知っています。ドキュメントのサンプルコードを使用すると、すべてが機能します。私の考えは、エラーが定義機能の部分の中にあるということでした。タイムステップ操作を... [i + 1] ...として含めるのは奇妙に思えますが、ドキュメンテーションはそれらなしで動作します。

誰もがdeSolveでの経験や全体としての運動を持っていますし、私の問題に取り組むためにどのように任意のヒントを得ることができますか?私はit'sが明確なぜ、それをisn't考える

dDIN <- -pmax * DIN/(DIN+ks) * Phyto - dil * (DIN-Nin) 
dPhyto <- pmax * DIN/(DIN+ks) * Phyto - dil * Phyto 

答えて

0

あなたのエラーが間違って設定されたブラケットです、あなたはこれを使用する必要がありますか?

関連する問題