| Principal ULA | Facultad de Ciencias | Departamento de Biología | Laboratorio de Zoología Aplicada | Centro de Simulación y Modelos | |
# MODELO BÁSICO DE LOTKA VOLTERRA j <- 500 # iteraciones alfa <- 0.25 beta <- 0.01 gamma <- 1 sigma <- 0.01 h <- 0.25 H <- P <- seq(1, j, 1) H[1] <- 80 P[1] <- 60 i <- 2 for (i in 2:j){ HM <- H[i-1] PM <- P[i-1] K1 <- h*(alfa*HM - beta*HM*PM) L1 <- h*(sigma*PM*HM - gamma*PM) K2 <- h*(alfa*(HM+(K1/2)) - beta*(HM+K1/2)*(PM+L1/2)) L2 <- h*(sigma*(PM+(L1/2))*(HM+K1/2) - gamma*(PM+(L1/2))) K3 <- h*(alfa*(HM+(K2/2)) - beta*(HM+K2/2)*(PM+L2/2)) L3 <- h*(sigma*(PM+L2/2)*(HM+K2/2) - gamma*(PM+L2/2)) K4 <- h*(alfa*(HM+K3) - beta*(HM+K3)*(PM+L3)) L4 <- h*(( (sigma*(PM+L3)*(HM+K3)) - gamma *(PM+L3))) H[i] <- HM +(K1+2*K2+2*K3+K4)/6 P[i] <- PM+(L1+2*L2+2*L3+L4)/6 } plot(H, type= "l", ylim = c(0, max(H)), xla = "", ylab = "N de individuos", col = "blue", lwd = 2) lines(P, type= "l", col = "red", lwd = 2) X11() plot (H,P, type= "l", col = "green", lwd = 2) lines(c(0, max(H)), c((alfa/beta), (alfa/beta)), type = "l", lty=2, lwd=1) lines(c((gamma/sigma), (gamma/sigma)), c(0, max(P)), type = "l", lty=2, lwd=1) points((gamma/sigma), (alfa/beta), type = "p", col = "yellow", lwd = 3) # MODELO DE PRESA DEPREDADOR CON CRECIMIENTO LOGÍSTICO PARA LA PRESA j <- 500 # iteraciones alfa <- 0.25 beta <- 0.01 gamma <- 0.5 sigma <- 0.01 h <- 0.25 Q <- 100 H <- P <- seq(1, j, 1) H[1] <- 80 P[1] <- 30 i <- 2 for (i in 2:j){ HM <- H[i-1] PM <- P[i-1] K1 <- h*(alfa*HM*(1-HM/Q) - beta*HM*PM) L1 <- h*(sigma*PM*HM - gamma*PM) K2 <- h*(alfa*(HM+(K1/2)) *(1-(HM+(K1/2))/Q) - beta*(HM+K1/2)*(PM+L1/2)) L2 <- h*(sigma*(PM+(L1/2))*(HM+K1/2) - gamma*(PM+(L1/2))) K3 <- h*(alfa*(HM+(K2/2)) *(1-(HM+(K2/2))/Q) - beta*(HM+K2/2)*(PM+L2/2)) L3 <- h*(sigma*(PM+L2/2)*(HM+K2/2) - gamma*(PM+L2/2)) K4 <- h*(alfa*(HM+K3) *(1-(HM+K3)/Q) - beta*(HM+K3)*(PM+L3)) L4 <- h*(( (sigma*(PM+L3)*(HM+K3)) - gamma *(PM+L3))) H[i] <- HM +(K1+2*K2+2*K3+K4)/6 P[i] <- PM+(L1+2*L2+2*L3+L4)/6 } plot(H, type= "l", ylim = c(0, max(H)), xla = "", ylab = "N de individuos", col = "blue", lwd = 2) lines(P, type= "l", col = "red", lwd = 2) X11() plot (H,P, type= "l", col = "green", lwd = 2) lines(c(0, Q), c((alfa/beta), 0), type = "l", lty=2, lwd=1) lines(c((gamma/sigma), (gamma/sigma)), c(0, max(P)), type = "l", lty=2, lwd=1) # MODELO DE PRESA DEPREDADOR CON CRECIMIENTO LOGÍSTICO PARA AMBOS j <- 1000 # iteraciones alfa <- 0.8 alfa.dep <- alfa/4 beta <- 0.07 ce <- 0.7 h <- 0.25 Q <- 100 H <- P <- seq(1, j, 1) H[1] <- 20 P[1] <- 10 i <- 2 for (i in 2:j){ HM <- H[i-1] PM <- P[i-1] K1 <- h*(alfa*HM*(1-HM/Q) - beta*HM*PM) L1 <- h*(alfa.dep*PM*(1-PM/(ce*HM))) K2 <- h*(alfa*(HM+(K1/2)) *(1-(HM+(K1/2))/Q) - beta*(HM+K1/2)*(PM+L1/2)) L2 <- h*(alfa.dep*(PM+L1/2)*(1- (PM+L1/2)/(ce*(HM+K1/2)))) K3 <- h*(alfa*(HM+(K2/2)) *(1-(HM+(K2/2))/Q) - beta*(HM+K2/2)*(PM+L2/2)) L3 <- h*(alfa.dep*(PM+L2/2)*(1- (PM+L2/2)/(ce*(HM+K2/2)))) K4 <- h*(alfa*(HM+K3) *(1-(HM+K3)/Q) - beta*(HM+K3)*(PM+L3)) L4 <- h*(alfa.dep*(PM+L3)*(1- (PM+L3)/(ce*(HM+K3)))) H[i] <- HM +(K1+2*K2+2*K3+K4)/6 P[i] <- PM+(L1+2*L2+2*L3+L4)/6 } plot(H, type= "l", ylim = c(min(P), max(H)), xla = "", ylab = "N de individuos", col = "blue", lwd = 2) lines(P, type= "l", col = "red", lwd = 2) X11() plot (H,P, type= "l", col = "green", lwd = 2) lines(c(0, Q), c((alfa/beta), 0), type = "l", lty=2, lwd=1) lines(c(0, H[j]), c(0, P[j]), type = "l", lty=2, lwd=1) ##################################################################### # PATRONES DE TURING library(sp) windows() # Definiendo la cuadrícula N <- 256 h <- 0.2 # Tamaño del paso en "x" y "y" x <- h*(0:N) # coordenadas "x" de la gradilla y <- h*(0:N) # coordenadas "y" # Gradilla 2D con coordenadas "x" e "y" X <- matrix(rep(x,each=length(y)),nrow=length(y)); Y <- matrix(rep(y,length(x)),nrow=length(y)) # Paso del tiempo (muy corto) dt <- .01*h^2 # Valor de los parámetros según el paper a <- 22 b <- 84 # Capacidad de carga c <- 113.33 d <- 27.2 # Relación entre las difusiones e <- 18 # Datos en t=0 us <- (a*b)/(c*e) # Estado estacionario de u vs <- (c*e^2)/(b*a) # Estado estacionario de v u <- matrix(rep(us,length(X)), nrow = length(y), ncol = length(x), byrow = FALSE) # Estado estacionario de u v <- matrix(rep(vs,length(X)), nrow = length(y), ncol = length(x), byrow = FALSE) # Estado estacionario de v u <- u + rnorm(length(X), 0.01) # agregamos pequeñas perturbaciones alrededor del estado estacionario v <- v + rnorm(length(X), 0.01) # agregamos pequeñas perturbaciones alrededor del estado estacionario # Pasos temporales t <- 0 tmax <- 100 pasos <- round(tmax/dt) # cantidad de pasos temporales # Desarrollo de la historia for(i in 1:pasos){ t <- t+dt # Difusión hacia los puntos cardinales u.E <- u[,c((N+1),1:N)] u.W <- u[, c(2:(N+1),1)] u.N <- u[c(2:(N+1), 1),] u.S <- u[c((N+1),1:N),] v.E <- v[,c((N+1),1:N)] v.W <- v[, c(2:(N+1),1)] v.N <- v[c(2:(N+1), 1),] v.S <- v[c((N+1),1:N),] # Desarrollo de la cinética no lineal + difusión u2 <- u^2 v2 <- v^2 u <- u + dt*((a*v*u2)-(e*u2)) + dt*(u.E+u.W+u.N+u.S-(4*u))/h^2 v <- v + dt*((v*b) - (c*u2*v2)) + d*dt*(v.E+v.W+v.N+v.S-(4*v))/h^2 # Mapeamos vec.u <- as.vector(u) vec.X <- as.vector(X) vec.Y <- as.vector(Y) datos <- cbind(vec.X, vec.Y, vec.u) colnames(datos) <- c("X", "Y", "u") datos <- data.frame(datos) coord<- cbind(datos$X, datos$Y) datos.sp <-SpatialPoints(coord) datos.df <- SpatialPointsDataFrame(datos.sp, datos) datos.grid <- as(datos.df, "SpatialPixelsDataFrame") if(i%%50 == 0){ graphics.off() } print(spplot(datos.grid, "u", xlab = NULL, ylab = NULL, main = paste("Paso =", i), scales = list(draw = TRUE), cuts = 2, at = c(0, 1, 2), col.regions = gray.colors(2, start = 0, end = 1), colorkey= FALSE)) } |