domingo, 6 de diciembre de 2009

R: Triángulo de Sierpinski

El presente capítulo tratará sobre: El Triángulo de Sierpinski, usando como herramienta el lenguaje R.

Dicho triángulo, debe su nombre al matemático polaco Waclav Sierpinski (1882-1969), construyó este triángulo en 1919.

La figura se obtiene conectando los puntos medios de los tres lados de un triángulo equilátero y seleccionando sólo los tres subtriángulos que se forman en las esquinas, suprimiendo la cuarta parte central del triángulo.

Repitiendo este proceso de construcción, quitando fragmentos cada vez más pequeños una y otra vez, infinitas veces, se genera una imagen fractal muy conocida, llamada Triángulo de Sierpinski.

En resumidas cuentas, la figura que buscamos es la siguiente, en forma finita:


¿Y qué es un fractal? Pues como definición no formal, diré que es una estructura (básica o compleja) que se va repitiendo en un medio conocido.

¿Y qué tiene que ver los fractales con el Triángulo de Sierpinski? Pues fácil, este triángulo se forma mediante subtriángulos, por lo tanto, la estructura que se repite en este caso es, como era de esperar, un triángulo.

Para el estudio de este capítulo, la función desarrollada en R, presenta la siguiente estructura:

R: Triángulo de Sierpinski.
Sierpinski (puntos=3000, tipo="*", color="black")
Representa el Triángulo Sierpinski.

Los argumentos que podemos pasar a la función expuesta anteriormente, son:
  • puntos: Resolución del Triángulo de Sierpinski a representar. Por defecto, 3000 puntos.
  • tipo: Forma de dibujar los puntos. Por defecto: *.
  • color: Color del triángulo. Por defecto: Negro.

La función en sí, es la siguiente:

#######################################################################
#
# Este archivo es propiedad intelectual del blog Aqueronte,
# cuya dirección web, es la siguiente:
#
# http://unbarquero.blogspot.com/
#
# Se permite cualquier modificación del archivo siempre y cuando
# se mantenga la autoría del autor.
#
# El autor no se responsabiliza de las consecuencias que pueda
# ocasionar éste código debido a un uso inadecuado del mismo.
#
#######################################################################
#
# Función: Sierpinski Versión: vs0.0
# Fecha: 23/09/09 R Versión: 2.10.0
#
# Autor: Manuel Caballero
# Compañía: Hades
#
#######################################################################
#
# Notas: Esta función representa el triángulo de Sierpinski.
#
# Datos de Entrada:
# · puntos: Puntos a representar en el triángulo. Por defecto,
# representa 3000 puntos.
# · tipo: Forma de dibujar los puntos. Por defecto: *
# · color: Color del triángulo. Por defecto: Negro
#
#######################################################################
Sierpinski <- function(puntos=3000, tipo="*", color="black"){
x <- 0
y <- 0

x[1] <- abs(rnorm(1))

if(x[1] < 0.5)
y[1] <- abs(rnorm(1)*sqrt(3)*x[1])
else
y[1] <- abs(rnorm(1)*(-sqrt(3)*x[1]+sqrt(3)))

plot.new()

# Representa tres puntos -> Define el triángulo.
points(c(0,1,0.5,0),c(0,0,sqrt(3)/2,0), pch=tipo, col=color)

# Punto al azar.
points(x[1],y[1], pch=tipo, col=color)

# Representa los restantes puntos dependiendo del tamaño especificado.
for(i in 2:puntos)
{
aux <- abs(3*rnorm(1))

if (aux <= 1)
{
x[i] <- x[i-1]/2
y[i] <- y[i-1]/2
}
else
{
if (aux <= 2)
{
x[i] <- (1+x[i-1])/2
y[i] <- y[i-1]/2
}
else
{
x[i] <- (0.5+x[i-1])/2
y[i] <- ((sqrt(3)/2)+y[i-1])/2
}
}
}

points(x,y,pch=tipo, col=color)
}

Comprobamos que funciona de forma correcta, como primer ejemplo, representaremos los valores por defecto.

> Sierpinski()

Y la salida gráfica:


La función tiene ciertos parámetros útiles, por ejemplo, lo crearemos ahora con 5000 puntos, de color azul y con el símbolo: º.

> Sierpinski(puntos=5000, tipo="º", color="blue")

Y obtenemos:


Como podemos comprobar, R, dispone ya de una herramienta de representar, de forma aproximada, el fractal del Triángulo de Sierpinski.

Se puede descargar el script Sierpinski.r del siguiente enlace:

Sierpinski.r
Sierpinski.r


Este es un pequeño aporte a esta maravillosa estructura, y como suele ser habitual, demostrar que aunque R sea un software enfocado principalmente al campo de la estadística, ver y comprobar que no se limita a ello, sino que se puede personalizar para cualquier área de estudio con script.

4 comentarios:

Unknown dijo...

sinceramente no entendí nada de las instrucciones en R, y no puedo descargar el script

Unknown dijo...

Buena Laura Lps:

Copia el script y guárdalo con extensión .r, por ejemplo: Sierpinski.r y ya lo tendrás, el siguiente paso es ejecutarlo en R.


Un saludo.

Unknown dijo...

Este comentario ha sido eliminado por el autor.

Unknown dijo...

Pero en que programa lo guardo, y en si cual es el script? disculpe las molestias