2013-01-07 8 views
6

Rozwiązałem równania różniczkowe z R, gdy natknąłem się na problem: musiałem dodać Isoclines i pole kierunkowe do mojego spisku, ale nie wiedziałem, jak to zrobić. Jaki pakiet powinienem zainstalować/jakiej funkcji powinienem/powinienem zrobić ręcznie?Dodaj izocliny i/lub pole kierunkowe do wydrukowania

+1

'biblioteka ('SOS') findFn ('isoclines') 'daje mi pakiet' LVCompGames': generuje wykres isoclin i punktów początkowych. – agstudy

+0

Myślę, że * możesz * musisz to zrobić ręcznie; Podejrzewam, że wielu ludzi napisało swój własny kod, aby to zrobić, ale nie znam wersji w pakiecie (i na podstawie odpowiedzi @ agstudy, wątpię, by była jedna - "isoklina" powinna być dość niezawodny dla słowa kluczowego wyszukiwania). Znalezienie isoclines jest (niestety) nie całkiem banalne ... –

+0

Niestety nazwa pakietu to 'primer', a LVCompGames to funkcja izoclin – agstudy

Odpowiedz

2

Tutaj nie jest odpowiedzią, ale tylko podsumowanie odpowiedzi udzielonych w komentarzach:

  • LVCompGames w primer pakietu dać tej działki:

enter image description here

  1. ten jest rozwiązaniem podanym przez @Ben Bolker. Rozwiązanie oparte jest na pakiecie graphics i funkcji filled.contour.

enter image description here

  • Następnie @Josh O'Brien sugestia pakiet rasterVis z vectorplot funkcji

enter image description here

Myślę, że wszystkie odpowiedzi można dostosować, jeśli dać nam więcej informacji tego, co chcesz jako wynik.

+0

Dziękuję bardzo, bardzo mi pomogłeś. Naprawdę przepraszam, że zawracam ci głowę tym pytaniem, teraz widzę, że nie było to takie trudne. Jeszcze raz dziękuję i mam nadzieję, że będę mógł wnieść swój wkład na stronę. – user1955058

+0

Jesteś zadowolony. jeśli odpowiedź spełnia twoje wymagania, możesz to sprawdzić, zaznaczając pole wyboru po lewej stronie odpowiedzi. – agstudy

0

Funkcja my.symbols w pakiecie TeachingDemos umożliwia zdefiniowanie własnych symboli do dodania do istniejącej działki. Funkcja wsparcia ms.arrows koduje już podstawowe strzałki do dodania do wykresu, można go łatwo modyfikować (lub inne funkcje ms), aby utworzyć inny symbol do dodania.

0

Istnieje świetny pakiet o nazwie phaseR. Korzysta z rozwiązania ODE z pakietu deSolve i pozwala łatwo dodawać nullclines, trajektorie i tak dalej. Pamiętaj, aby wymienić parametry funkcji ODE "t", "y" i "parametry". W przeciwnym razie funkcje Phaser daje błąd:

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

Oto przykładowy kod działa dla układu drapieżnik-ofiara 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) 
Powiązane problemy