2013-01-07 19 views
6

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

İşte
+1

'kitaplığı (SOS ') findFn ('İzoklinler' Aksi fazer fonksiyonları bir hata verecektir) '' LVCompGames' paketi verir: bu isoclines ve başlangıç ​​noktaları bir arsa oluşturur .. – agstudy

+0

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 ... –

+0

Üzgünüz paket adı 'primer' ve LVCompGames isoclines işlevidir – agstudy

cevap

2

bir cevap değil ama yorumlarda verilen cevapların sadece bir özet:

enter image description here

  1. Bu:

    • primer pakette LVCompGames bu arsa vermek @Ben Bolker tarafından verilen çözümdür. Çözüm, graphics paket ve filled.contour işlevini temel alır.

enter image description here

  • Sonra @Josh O'Brien öneri vectorplot fonksiyonu ile rasterVis paket

enter image description here

tüm cevaplar özelleştirilebilir düşünmek bize daha fazla bilgi verirseniz çıktı olarak ne istediğinizi.

+0

Ç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

+0

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

0

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).

0

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.

Burada

Error 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) 
İlgili konular