Fractal (del latín fractus, "irregular", "fragmentado") es una palabra acuñada por el matemático Benoît Mandelbrot para describir la repetición "infinita" de patrones geométricos a diferentes escalas, los cuales muestran versiones cada vez más pequeñas de sí mismos. Las partes pequeñas de un fractal, explicaba Mandelbrot, son semejantes al todo, es decir, al conjunto completo. Lo más interesante es que el matemático demostró que la mayoría de las formas de la naturaleza son fractales. Estos se han utilizado para explicar fenómenos atmosféricos, analizar las redes vasculares y neuronales del cuerpo humano, calcular la longitud de las costas, explicar el crecimiento de los cerebros de los mamíferos, estudiar los seísmos... Incluso en telecomunicaciones se han diseñado antenas fractales, como las que utilizan los teléfonos celulares actuales, ya que mejoran el rendimiento y permiten reducir la longitud de los hilos de estas, disminuyendo a su vez el espacio que ocupan.
En el contexto de los fractales, la iteración se refiere a la aplicación repetida de una regla o un procedimiento para generar la forma o estructura compleja del fractal. En la creación del triángulo de Sierpiński, una fórmula matemática se aplica repetidamente, produciendo un patrón característico. La cantidad de veces que se aplica la fórmula se conoce como el nivel de iteración. La autosimilitud es una característica de los fractales que hace referencia a su capacidad para mantener un patrón o forma similar a sí mismos en diferentes escalas. En otras palabras, una porción de un fractal se asemeja a su forma completa, sin importar la escala en la que se observe. Esta propiedad se conoce como simetría fractal. La autosimilitud es una de las características que hacen que los fractales sean tan interesantes y únicos en el mundo de las matemáticas.
Para generar el triángulo de Sierpiński, vamos a utilizar Python Turtle, un módulo de Python que permite crear gráficos vectoriales mediante comandos simples. Estos comandos controlan un cursor, conocido como tortuga (turtle), que se mueve por la pantalla y dibuja líneas y figuras geométricas, permitiéndonos crear diseños personalizados. Es comúnmente utilizado en la enseñanza de la programación, ya que es fácil de entender y usar. Con Python Turtle, los estudiantes pueden aprender conceptos básicos de programación, como bucles, condicionales y funciones, mientras crean sus propios gráficos. Para utilizar Python Turtle, primero debemos importar el módulo en nuestro script. Luego, podemos crear una instancia de turtle y emplear los comandos mencionados anteriormente para dibujar en la pantalla. Hoy aprenderemos a dibujar el triángulo de Sierpiński con el módulo Python Turtle.
En el siguiente código Python utilizamos el módulo Turtle para dibujar un triángulo equilátero y el triángulo total se forma mediante iteraciones, acá tenemos el desglose del código comentado:
# -------------------------------------------------------------------------
# (| " TriánguloSierpinski.py "|)
# (| " "|)
# (| " Script que genera el fractal del triángulo de sierpinski para "|)
# (| " mostrar a modo de ejemplo, cómo se realiza el procedimiento. "|)
# (| " "|)
# (| " Este código de ejemplo es de dominio público. "|)
# (| " "|)
# (| " Developer: jorgechac© - Técnico Laboral en Programación UNAB "|)
# (| " Visita https://jorgechac.blogspot.com "|)
# (| " "|)
# (| " Venta de accesorios Arduino/Raspberry Pi Pico/ESP32 "|)
# (| " Whatsapp y Ventas NEQUI +573177295861 "|)
# (| " Bucaramanga - Colombia "|)
# -------------------------------------------------------------------------
import turtle # Importa la biblioteca turtle para gráficos
import math # Importa la biblioteca math para cálculos matemáticos
# Función recursiva para dibujar el triángulo de Sierpinski
def sierpinski(t, order, size):
if order == 0: # Caso base: dibuja un triángulo equilátero
for _ in range(3):
t.forward(size) # Dibuja un lado del triángulo
t.left(120) # Gira a la izquierda 120 grados
else:
# Llamadas recursivas para dibujar triángulos más pequeños
sierpinski(t, order-1, size/2) # Triángulo inferior izquierdo
t.forward(size/2) # Mueve la tortuga a la derecha
sierpinski(t, order-1, size/2) # Triángulo inferior derecho
t.backward(size/2) # Regresa a la posición original
t.left(60) # Gira a la izquierda
t.forward(size/2) # Mueve la tortuga hacia arriba
t.right(60) # Corrige la dirección
sierpinski(t, order-1, size/2) # Triángulo superior
t.left(60) # Regresa la dirección original
t.backward(size/2) # Vuelve a la posición de inicio
t.right(60) # Corrige la orientación
# Configuración del nivel del fractal y tamaño del triángulo
order = 5 # Nivel de recursión del fractal
size = 500 # Tamaño del triángulo principal
# Configuración de la pantalla de Turtle
screen = turtle.Screen()
screen.bgcolor("white") # Color de fondo blanco
screen.setup(width=size + 50, height=(size * math.sqrt(3)) / 2 + 100)
# Ajusta el tamaño de la ventana
# Configuración de la tortuga para dibujar
t = turtle.Turtle()
t.speed("fastest") # Velocidad máxima de dibujo
t.pencolor("green") # Color del lápiz
# Posiciona la tortuga para centrar el triángulo en la pantalla
t.penup() # Levanta el lápiz para mover sin dibujar
t.goto(-size/2, -size/(2*math.sqrt(3)) - 30)
# Mueve la tortuga a la posición inicial, más abajo
t.pendown() # Baja el lápiz para empezar a dibujar
# Llama a la función para dibujar el fractal
sierpinski(t, order, size)
# Finaliza el dibujo
turtle.done()
Finalmente después de ejecutar el código, se abrirá una nueva ventana y se comenzará a generar la grafica en Python, así:
Quieres aportar algo que complemente este articulo? crees que hay algo que se deba corregir? Escríbenos este blog es para todos.
Recuerda que en https://jorgechac.blogspot.com nos dedicamos a construir una electrónica mejor! y apoyamos el proyecto CTC GO! (Creative Technologies in the Classroom) que es un programa de educación steam personalizable.
Si te sirvió deja un comentario de agradecimiento, comparte el post en tus redes sociales o recomiéndale el blog a un amigo, eso me motiva a seguir realizando estos pequeños posts y espero que vuelvas a mi blog, publico nuevo material con base en los softwares y apps que utilizo y la experiencia que he adquirido. Por último si deseas colaborar voluntariamente y crees que mi trabajo y mi tiempo lo ameritan, considere hacer una pequeña donación a mi NEQUI +573177295861.
También te puede interesar:
Generación de Formas de Onda en Python utilizando la libreria Matplotlib y Numpy
Dibujo de un arbol de navidad utilizando el módulo Python Turtle
Dibujando en Python utilizando la libreria Matplotlib y Numpy
Dibujando en Python utilizando el módulo Python Turtle
Dibujo del logotipo de Python utilizando el módulo Python Turtle
No hay comentarios.:
Publicar un comentario