2013-01-07 22 views
6

Ich löste Differentialgleichungen mit R, als ich auf ein Problem stieß: Ich musste meinem Plot Isoclines und ein Richtungsfeld hinzufügen, wusste aber nicht wie. Welches Paket soll ich installieren/welche Funktion soll ich aufrufen/sollte ich das alles manuell machen? HierIsoklinen und/oder Richtungsfeld zum Plotten hinzufügen

+1

'Bibliothek ('sos') findFn ('Isoklinen') 'gibt mir' LVCompGames' Paket: Dies erzeugt ein Diagramm von Iso-Linien und Anfangspunkten. – agstudy

+0

Ich denke, Sie * müssen * müssen es manuell tun; Ich vermute, dass viele Leute ihren eigenen Code dafür geschrieben haben, aber ich kenne keine gepackte Version (und basierend auf der Antwort von @ agstudy, ich bezweifle, dass es eine gibt - "isocline" sollte ein ziemlich zuverlässiges Suchwort sein). Isoclines zu finden ist (leider) nicht ganz trivial ... –

+0

Entschuldigung, der Paketname ist 'primer' und LVCompGames ist die Isoclines-Funktion – agstudy

Antwort

2

ist keine Antwort, sondern nur eine Zusammenfassung der in den Kommentaren gegebenen Antworten:

  • die LVCompGames in primer Paket gibt dieses Grundstück:

enter image description here

  1. Diese ist die Lösung von @Ben Bolker. Die Lösung basiert auf dem graphics Paket und der filled.contour Funktion.

enter image description here

  • Dann Vorschlag @ Josh O'Brien das rasterVis Paket mit vectorplot Funktion

enter image description here

Ich denke, alle Antworten angepasst werden können, wenn Sie uns weitere Informationen geben von dem, was Sie als Ausgabe wünschen.

+0

Vielen Dank, Sie haben mir sehr geholfen. Es tut mir wirklich leid, dass ich Sie mit dieser Frage belästigt habe, jetzt sehe ich, dass es nicht so schwierig war. Nochmals vielen Dank und ich hoffe, dass ich zur Seite beitragen kann. – user1955058

+0

Sie sind willkommen. Wenn die Antwort Ihren Anforderungen entspricht, können Sie sie akzeptieren, indem Sie das Kontrollkästchen links neben der Antwort aktivieren. – agstudy

0

Mit der Funktion my.symbols im TeachingDemos-Paket können Sie eigene Symbole definieren, die zu vorhandenen Plots hinzugefügt werden. Die Unterstützungsfunktion ms.arrows codiert bereits grundlegende Pfeile, die zu einem Plot hinzugefügt werden. Sie können sie einfach (oder die anderen ms. Funktionen) modifizieren, um ein anderes Symbol zum Hinzufügen zu erstellen.

0

Es gibt ein großes Paket namens phaseR. Es verwendet den ODE-Solver aus dem Paket deSolve und lässt Sie problemlos Nulllinien, Trajektorien und so weiter hinzufügen. Geben Sie nur die Parameter Ihrer ODE-Funktion "t", "y" und "parameter" an. Andernfalls werden die Phaser-Funktionen einen Fehler geben:

Error in deriv(t = 0, y = c(x[i], y[j]), parameters = parameters) :
unused arguments (y = c(x[i], y[j]), parameters = parameters)

Hier ist ein funktionierendes Codebeispiel für die Lotka-Volterra-Räuber-Beute-System:

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)