¿Qué es la Geometría Fractal?
La geometría fractal es una forma especial de representación gráfica de funciones matemáticas o conjunto de números generados por una función matemática. Es un conjunto de matemáticas recursivo, detallado e infinitamente auto-similar. Estas representaciones geométricas exhiben “Simetría Desplegable” . La simetría de despliegue es la propiedad de las estructuras geométricas para retener un patrón auto-similar a una escala infinitesimalmente pequeña.
Sabemos que la serie de Fibonacci sigue una relación recursiva f(n) = f(n-1) + f(n-2) , donde n es el enésimo término de la serie. De nuevo f(0) = 0, f(1) = 1
Enfoque para trazar el Fractal de Fibonacci
Cada número de la serie representa la longitud de los lados de un cuadrado. El cuadrado de lado 0 no existe. Así que comenzamos desde el cuadrado de lado 1. El siguiente cuadrado también tiene lado 1.
- Primero construimos los dos cuadrados de dimensión 1 uno al lado del otro como se muestra en la imagen de abajo.
- Luego, tomando la longitud conjunta de los dos cuadrados, construimos un tercer cuadrado debajo de los dos cuadrados de dimensión 1. Ahora el cuadrado es de dimensión 2
- De nuevo tomando los 2 cuadrados de dimensión 1, 2 respectivamente construimos el cuarto cuadrado de dimensión 3
- Aunque continuamos este proceso por un pequeño número de iteraciones, este proceso continúa hasta el infinito.
Después de completar el dibujo de los cuadrados, comenzamos con el cuadrado más pequeño que está más adentro. Luego dibujamos cuadrantes continuos dentro de los cuadrados con el lado de cada cuadrado como el radio.
A continuación se muestra la implementación:
Python3
# Python program for Plotting Fibonacci # spiral fractal using Turtle import turtle import math def fiboPlot(n): a = 0 b = 1 square_a = a square_b = b # Setting the colour of the plotting pen to blue x.pencolor("blue") # Drawing the first square x.forward(b * factor) x.left(90) x.forward(b * factor) x.left(90) x.forward(b * factor) x.left(90) x.forward(b * factor) # Proceeding in the Fibonacci Series temp = square_b square_b = square_b + square_a square_a = temp # Drawing the rest of the squares for i in range(1, n): x.backward(square_a * factor) x.right(90) x.forward(square_b * factor) x.left(90) x.forward(square_b * factor) x.left(90) x.forward(square_b * factor) # Proceeding in the Fibonacci Series temp = square_b square_b = square_b + square_a square_a = temp # Bringing the pen to starting point of the spiral plot x.penup() x.setposition(factor, 0) x.seth(0) x.pendown() # Setting the colour of the plotting pen to red x.pencolor("red") # Fibonacci Spiral Plot x.left(90) for i in range(n): print(b) fdwd = math.pi * b * factor / 2 fdwd /= 90 for j in range(90): x.forward(fdwd) x.left(1) temp = a a = b b = temp + b # Here 'factor' signifies the multiplicative # factor which expands or shrinks the scale # of the plot by a certain factor. factor = 1 # Taking Input for the number of # Iterations our Algorithm will run n = int(input('Enter the number of iterations (must be > 1): ')) # Plotting the Fibonacci Spiral Fractal # and printing the corresponding Fibonacci Number if n > 0: print("Fibonacci series for", n, "elements :") x = turtle.Turtle() x.speed(100) fiboPlot(n) turtle.done() else: print("Number of iterations must be > 0")
Producción: