Bir problemle karşılaştığımda R ile diferansiyel denklemleri çözmekteydim: Isoclines ve bir yön alanını arsaya eklemem gerekiyordu, ama nasıl yapılacağını bilmiyordum. Hangi paketi kurmalıyım/hangi işlevi çağırmalıyım/hepsini el ile yapmalı mıyım?izotlines ve/veya yön alanı eklemek için
İştecevap
bir cevap değil ama yorumlarda verilen cevapların sadece bir özet:
- Bu:
primer
paketteLVCompGames
bu arsa vermek @Ben Bolker tarafından verilen çözümdür. Çözüm,graphics
paket vefilled.contour
işlevini temel alır.
- Sonra @Josh O'Brien öneri
vectorplot
fonksiyonu ilerasterVis
paket
tüm cevaplar özelleştirilebilir düşünmek bize daha fazla bilgi verirseniz çıktı olarak ne istediğinizi.
Çok teşekkür ederim, bana çok yardımcı oldunuz. Bu soruyla seni rahatsız ettiğim için gerçekten üzgünüm, şimdi görüyorum ki o kadar da zor değildi. Tekrar teşekkürler ve siteye katkıda bulunmayı umuyoruz. – user1955058
Siz bir müşterisiniz. Eğer cevabınız sizin cevabınıza uyuyorsa, cevabın solundaki onay kutusunu işaretleyerek bunu kabul edebilirsiniz. – agstudy
TeachingDemos paketindeki my.symbols
işlevi, mevcut grafiklere eklemek için kendi sembollerinizi tanımlamanıza olanak tanır. Destek işlevi ms.arrows
zaten bir okuyucuyu eklemek için temel okları kodlar, eklemek için farklı bir sembol oluşturmak için kolayca değiştirebilirsiniz (veya diğer ms. Işlevleri).
phaseR adlı harika bir paket var. ODE çözücüyü deSolve paketinden kullanır ve nullclines, trajectories ve benzerlerini kolayca ekleyelim. Sadece ODE fonksiyonunuzun "t", "y" ve "parameters" parametrelerini belirttiğinizden emin olunuz.
BuradaError in deriv(t = 0, y = c(x[i], y[j]), parameters = parameters) :
unused arguments (y = c(x[i], y[j]), parameters = parameters)
Lotka-Volterra avcı-av sistemi için bir çalışma kod örneği:
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)
'kitaplığı (SOS ') findFn ('İzoklinler' Aksi fazer fonksiyonları bir hata verecektir) '' LVCompGames' paketi verir: bu isoclines ve başlangıç noktaları bir arsa oluşturur .. – agstudy
Bence * elle * yapmanız gerekir; Bunu yapmak için birçok insanın kendi kodlarını yazdığından şüpheliyim, ama paketlenmiş bir versiyonunu bilmiyorum (ve @ agstudy'nin cevabına dayanarak, bir tane olduğundan şüpheliyim - "isocline" oldukça güvenilir bir arama anahtar kelimesi olmalı). Isoclines bulmak (ne yazık ki) tamamen önemsiz değil ... –
Üzgünüz paket adı 'primer' ve LVCompGames isoclines işlevidir – agstudy