Siguiente: , Anterior:   [Índice general][Índice]

53 fractals


53.1 Introducción a fractals

Este paquete define algunos fractales:

- con IFS (Iterated Function System) aleatorias: triángulo de Sierpinsky, un árbol y un helecho.

- Fractales complejos: conjuntos de Mandelbrot y de Julia.

- Copos de Koch.

- Funciones de Peano: funciones de Sierpinski y Hilbert.

Autor: José Rammírez Labrador.

Para preguntas, sugerencias y fallos,

pepe DOT ramirez AAATTT uca DOT es


53.2 Definiciones para IFS fractals

Algunos fractales se pueden generar por medio de la aplicación iterativa de transformaciones afines contractivas de forma aleatoria; véase

Hoggar S. G., "Mathematics for computer graphics", Cambridge University Press 1994.

Definimos una lista con varias transformaciones afines contractivas, luego las vamos seleccionando de forma aleatoria y recursiva. La probabilidad de selección de una transformación debe estar relacionada con la razón de contracción.

Se pueden cambiar las transformaciones y encontrar nuevos fractales.

Función: sierpinskiale (n)

Triángulo de Sierpinski: 3 aplicaciones contractivas; constante de contracción de 0.5 y traslaciones. Todas las aplicaciones tienen la misma constante de contracción. El argumento n debe ser suficientemente alto, 10000 o mayor.

Ejemplo:

(%i1) load("fractals")$
(%i2) n: 10000$
(%i3) plot2d([discrete,sierpinskiale(n)], [style,dots])$
Función: treefale (n)

3 aplicaciones contractivas, todas ellas con el mismo coeficiente de contracción. El argumento n debe ser suficientemente alto, 10000 o mayor.

Ejemplo:

(%i1) load("fractals")$
(%i2) n: 10000$
(%i3) plot2d([discrete,treefale(n)], [style,dots])$
Función: fernfale (n)

4 aplicaciones contractivas, cuyas probabilidades de selección deben estar relacionadas con su constante de contracción. El argumento n debe ser suficientemente alto, 10000 o mayor.

Ejemplo:

(%i1) load("fractals")$
(%i2) n: 10000$
(%i3) plot2d([discrete,fernfale(n)], [style,dots])$

53.3 Definiciones para fractales complejos

Función: mandelbrot_set (x, y)

Conjunto de Mandelbrot.

Esta función debe realizar muchas operaciones y puede tardar bastante tiempo en ejecutarse, tiempo que también depende del número de puntos de la malla.

Ejemplo:

(%i1) load("fractals")$
(%i2) plot3d (mandelbrot_set, [x, -2.5, 1], [y, -1.5, 1.5],
                [gnuplot_preamble, "set view map"],
                [gnuplot_pm3d, true],
                [grid, 150, 150])$
Función: julia_set (x, y)

Conjuntos de Julia.

Esta función debe realizar muchas operaciones y puede tardar bastante tiempo en ejecutarse, tiempo que también depende del número de puntos de la malla.

Ejemplo:

(%i1) load("fractals")$
(%i2) plot3d (julia_set, [x, -2, 1], [y, -1.5, 1.5],
                [gnuplot_preamble, "set view map"],
                [gnuplot_pm3d, true],
                [grid, 150, 150])$

Véase también julia_parameter.

Variable opcional: julia_parameter

Valor por defecto: %i

Parámetro complejo para fractales de Julia. Su valor por defecto es %i, y otros que se sugieren son: -.745+%i*.113002, -.39054-%i*.58679, -.15652+%i*1.03225, -.194+%i*.6557 y .011031-%i*.67037.

Función: julia_sin (x, y)

Mientras que la función julia_set implementa la transformación julia_parameter+z^2, la función julia_sin implementa julia_parameter*sin(z). Véase el código fuente para más detalles.

Este programa es lento porque calcula muchos senos; el tiempo de ejecución también depende del número de puntos de la malla.

Ejemplo:

(%i1) load("fractals")$
(%i2) julia_parameter:1+.1*%i$
(%i3) plot3d (julia_sin, [x, -2, 2], [y, -3, 3], 
                [gnuplot_preamble, "set view map"],
                [gnuplot_pm3d, true],
                [grid, 150, 150])$

Véase también julia_parameter.


53.4 Definiciones para cops de Koch

Función: snowmap (ent, nn)

Copos de Koch. La función snowmap dibuja el copo de Koch sobre los vértices de un polígono convexo inicial del plano complejo. La orientación del polígono es importante. El argumento nn es el número de recursividades de la transformación de Koch, el cual debe ser pequeño (5 o 6).

Ejemplos:

(%i1) load("fractals")$
(%i2) plot2d([discrete,
              snowmap([1,exp(%i*%pi*2/3),exp(-%i*%pi*2/3),1],4)])$
(%i3) plot2d([discrete,
              snowmap([1,exp(-%i*%pi*2/3),exp(%i*%pi*2/3),1],4)])$
(%i4) plot2d([discrete, snowmap([0,1,1+%i,%i,0],4)])$
(%i5) plot2d([discrete, snowmap([0,%i,1+%i,1,0],4)])$

53.5 Definiciones para curvas de Peano

Funciones continuas que cubren un área. Aviso: el número de puntos crece exponencialmente con n.

Función: hilbertmap (nn)

Curva de Hilbert. El argumento nn debe ser pequeño (por ejemplo, 5). Maxima se puede detener si nn es 7 o mayor.

Ejemplo:

(%i1) load("fractals")$
(%i2) plot2d([discrete,hilbertmap(6)])$
Función: sierpinskimap (nn)

Curva de Sierpinski. El argumento nn debe ser pequeño (por ejemplo, 5). Maxima se puede detener si nn es 7 o mayor.

Ejemplo:

(%i1) load("fractals")$
(%i2) plot2d([discrete,sierpinskimap(6)])$

Siguiente: , Anterior:   [Índice general][Índice]