Skip to content

Instantly share code, notes, and snippets.

@matiasvd
Created May 11, 2013 22:06
Show Gist options
  • Save matiasvd/5561598 to your computer and use it in GitHub Desktop.
Save matiasvd/5561598 to your computer and use it in GitHub Desktop.
Plano de fases en R usando el paquete pplane disponible en http://r-forge.r-project.org/projects/pplane/ Ejemplo usando un modelo de competencia logístico CharlieXRay.blogspot.com Mayo 2013
########
# mayo 2013
# plano de fases en R - modelo de competencia logístico
# CharlieXRay en blogspot.com
########
########
# librerias necesarias
########
library(pplane) # para dibujar el plano de fases
library(deSolve) # para resolver el sistema de ecuaciones diferenciales
########
# defino el sistema dinámico a utilizar
########
modelo <- function(parametros){
function(x1,x2){
with(as.list(parametros),{ # con los componentes r1, k1, etc que conforman el array parametros
dx1 <- x1*( 1 - (x1/k1) - a12*(x2/k1) )
dx2 <- x2*( 1 - (x2/k2) - a21*(x1/k2) )
return( c(dx1,dx2) ) # retorna las derivadas
})
}
}
########
# parametros a utilizar
########
r1 <- 1
r2 <- 1
k1 <- 400
k2 <- 300
#######
# parametros de interaccion de las especies
#######
a12 <- 0.9 # 0.9 < 400/300 = 1.333
a21 <- 0.4 # 0.4 < 300/400 = 0.75
parametros <- c(r1=r1,r2=r2,k1=k1,k2=k2,a12=a12,a21=a21)
#######
# plano de fases
#######
plano_fases <- phaseArrows( modelo(parametros), xlims=c(0,k1), ylims=c(0,k2) )
#######
# dibujo trayectoria en el plano de fases
#######
tmax = 30 # trayectorias entre t=0 y t=tmax
drawTrajectories( modelo(parametros), tEnd=tmax, x0=c(x=100,y=80) ) # trayectoria con condicion inicial (100,80)
#######
# permito dibujar otras n=3 trayectorias indicando el inicio de cada trayectoria con un el mouse
#######
n <- 3 # numero de trayectorias a dibujar
drawTrajectories( modelo(parametros), tEnd=tmax, x0=locator(n,"p") )
#######
# curvas isoclinas (nullclines)
#######
phaseNullclines(plano_fases$z, plano_fases$xy, add=TRUE)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment