を解決するために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
: