A vueltas con los fractales
Si bien no hace mucho publicaba una entrada sobre el triángulo de Sierpinsky, mi tocayo Carlos Ortega (y ahora gentil colaborador) nos ha proporcionado un enlace en este blog a un pedazo de código que bien vale la pena replicar aquí para el solaz (y tal vez, incluso, provecho) de los lectores de estas páginas. Es:
library(fields) # for tim.colors
library(caTools) # for write.gif
m = 400 # grid size
C <- complex(
real=rep(seq(-1.8,0.6, length.out=m), each=m ),
imag=rep(seq(-1.2,1.2, length.out=m), m ) )
C <- matrix(C,m,m)
Z <- 0
X <- array(0, c(m,m,20))
for (k in 1:20) {
Z <- Z^2+C
X[,,k] <- exp(-abs(Z))
}
image(X[,,k], col=tim.colors(256))
write.gif(X, "Mandelbrot.gif", col=tim.colors(256), delay=100)
Para que copien, peguen y disfruten: addenda
Ayer dejé publicadas unas cuantas líneas de R y la promesa de contar de qué iba la cosa. Adelantando acontecimientos, he recibido comentarios públicos y privados al respecto que en esta entrada trataré de contestar.
El código era, una vez mínimamente desofuscado (no quería dar demasiadas pistas):
vertice.x <- c(0,1,2) # 1
vertice.y <- c(0,1,0) # 2
muestra <- sample( 1:3, 100000, replace = T ) # 3
iter <- function( ini, v ){ # 4
out <- rep( ini, length(v) ) # 5
for( i in 2:length(v) )
out[i] <- ( out[i-1] + v[i] ) / 2 # 6
out
}
plot( iter( runif(1), v.x[ muestra ] ),
iter( runif(1), v.y[ muestra ] ), pch = "." )