Created
May 11, 2013 22:06
-
-
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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
######## | |
# 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