問題に遭遇したとき、私はRで微分方程式を解いていました。プロットにアイソクラインと方向フィールドを追加する必要がありましたが、その方法がわかりませんでした。どのパッケージをインストールする必要がありますか/どの関数を呼び出す必要がありますか/すべて手動で実行する必要がありますか?
質問する
2754 次
3 に答える
2
ここに答えはありませんが、コメントで与えられた答えの要約です:
LVCompGames
in パッケージはprimer
このプロットを与えます:
- これは@BenBolkerによって与えられた解決策です。
graphics
このソリューションは、パッケージとfilled.contour
機能に基づいています。
- 次に、@JoshO'Brienが関数付きの
rasterVis
パッケージを提案しますvectorplot
出力として欲しいものについてもっと情報を提供していただければ、すべての回答をカスタマイズできると思います。
于 2013-01-07T14:37:12.033 に答える
1
phaseRと呼ばれる素晴らしいパッケージがあります。パッケージdeSolveのODEソルバーを使用しており、ヌルクラインや軌道などを簡単に追加できます。ODE関数のパラメーターには、必ず「t」、「y」、「parameters」という名前を付けてください。そうしないと、phaseR関数でエラーが発生します。
deriv(t = 0、y = c(x [i]、y [j])、パラメーター=パラメーター)のエラー:
未使用の引数(y = c(x [i]、y [j])、パラメーター=パラメーター)
Lotka-Volterra捕食者-被食者システムの実用的なコード例を次に示します。
require(deSolve)
require(phaseR)
model.LV <- function(t, y, parameters){
with(as.list(parameters),{
N<-y[1]
P<-y[2]
dN <- a*N - b*N*P
dP <- c*N*P -d*P
list(c(dN,dP))
})
}
params.LV<-c(a=0.4, b=0.3, c=0.1, d=0.2)
data.LV<-as.data.frame(lsoda(c(N=1,P=1),seq(1,250,by=0.5), model.LV, params.LV))
# plot the time series of both populations
plot(data.LV$time,data.LV$N, main="Time series of L-V equations", xlab="time",
ylab="Population densities N, P",
type="l", col="green",
ylim=c(0,max(data.LV$N,data.LV$C)))
lines(data.LV$time,data.LV$P,col="red")
# plot the trajectories of the system
plot(data.LV$N, data.LV$P, type="l", col="blue", main="Trajectory of L-V equations",
xlab="Prey density N", ylab="Predator density P", xlim=c(0,5), ylim=c(0,3))
#add Nullclines
nullclines(model.LV, x.lim=c(0.1,5),y.lim=c(0.1,3), parameters=params.LV, system="two.dim", colour=c("green","red"), add=TRUE)
于 2015-06-05T09:29:12.980 に答える
0
TeachingDemosパッケージのmy.symbols
関数を使用すると、既存のプロットに追加する独自のシンボルを定義できます。サポート関数ms.arrows
は、プロットに追加する基本的な矢印をすでにコーディングしています。追加する別のシンボルを作成するために、それ(または他のms。関数)を簡単に変更できます。
于 2013-01-07T20:56:31.070 に答える