WPROWADZENIE

Fraktale to fascynujące obiekty matematyczne, które charakteryzują się samopodobieństwem – ich fragmenty wyglądają podobnie do całości, niezależnie od skali. Odkryte i spopularyzowane przez Benoît Mandelbrota, fraktale znalazły zastosowanie w wielu dziedzinach, od grafiki komputerowej po analizę rynków finansowych.

Fraktale w przyrodzie

Choć fraktale są abstrakcyjnymi konstrukcjami matematycznymi, ich wzory często pojawiają się w naturze:

  • Płatki śniegu: Każdy płatek śniegu posiada unikalny, ale samopodobny kształt.
  • Brokuły romanesco: Ten rodzaj brokuła charakteryzuje się spiralną strukturą, gdzie każda mniejsza różyczka jest podobna do całości.
  • Linie brzegowe: Długość linii brzegowej zależy od skali pomiaru – im dokładniejszy pomiar, tym dłuższa linia, co wynika z jej fraktalnej natury.
  • Paprocie: Struktura paproci jest samopodobna – każda gałązka przypomina kształtem całą paproć.

Trójkąt Sierpińskiego

Jednym z klasycznych przykładów fraktala jest trójkąt Sierpińskiego. Można go wygenerować w następujący sposób:

  1. Zacznij od równobocznego trójkąta.
  2. Podziel go na cztery mniejsze, identyczne trójkąty.
  3. Usuń środkowy trójkąt.
  4. Powtórz kroki 2 i 3 dla pozostałych trzech trójkątów.
  5. Kontynuuj proces w nieskończoność.

KOD W JĘZYKU PYTHON

import matplotlib.pyplot as plt

def sierpinski(points, depth):
    if depth == 0:
        return  
    p1, p2, p3 = points    
    m1 = ((p1[0] + p2[0]) / 2, (p1[1] + p2[1]) / 2)
    m2 = ((p2[0] + p3[0]) / 2, (p2[1] + p3[1]) / 2)
    m3 = ((p3[0] + p1[0]) / 2, (p3[1] + p1[1]) / 2)
    plt.plot([p1[0], p2[0], p3[0], p1[0]], [p1[1], p2[1], p3[1], p1[1]], 'k-') # Rysuje kontur
    sierpinski([p1, m1, m3], depth - 1)
    sierpinski([m1, p2, m2], depth - 1)
    sierpinski([m3, m2, p3], depth - 1)
points = [(0, 0), (1, 0), (0.5, 0.866)]
depth = 5
plt.figure(figsize=(8, 8))
plt.axis('off')  # Wyłącza osie
sierpinski(points, depth)
plt.show()

⬆️⬆️⬆️ Zobacz w Google Colaboratory


JAK DZIAŁA PROGRAM?

Program ten rysuje fraktal znany jako Trójkąt Sierpińskiego, korzystając z biblioteki matplotlib w Pythonie. Działa on w następujący sposób:

  1. Import biblioteki:
    • import matplotlib.pyplot as plt importuje bibliotekę do tworzenia wykresów i nadaje jej skróconą nazwę plt, aby ułatwić jej użycie.
  2. Definicja funkcji sierpinski:
    • Funkcja ta przyjmuje dwa argumenty: points (wierzchołki trójkąta) i depth (głębokość rekursji).
    • Jeśli depth wynosi 0, funkcja kończy działanie (warunek stopu rekursji).
    • W przeciwnym razie:
      • Wyodrębnia współrzędne wierzchołków trójkąta (p1p2p3) z listy points.
      • Oblicza środki boków trójkąta (m1m2m3).
      • Rysuje kontur trójkąta za pomocą plt.plot.
      • Wywołuje samą siebie (rekurencyjnie) trzy razy, dla trzech mniejszych trójkątów utworzonych przez połączenie wierzchołków z środkami boków, zmniejszając depth o 1.
  3. Ustawienia początkowe i rysowanie:
    • points = [(0, 0), (1, 0), (0.5, 0.866)] definiuje wierzchołki początkowego trójkąta.
    • depth = 5 ustala głębokość rekursji (im większa wartość, tym bardziej szczegółowy fraktal).
    • plt.figure(figsize=(8, 8)) tworzy okno wykresu o rozmiarze 8×8 cali.
    • plt.axis('off') ukrywa osie wykresu.
    • sierpinski(points, depth) wywołuje funkcję sierpinski, rozpoczynając rysowanie fraktala.
    • plt.show() wyświetla wygenerowany wykres.