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:
- Zacznij od równobocznego trójkąta.
- Podziel go na cztery mniejsze, identyczne trójkąty.
- Usuń środkowy trójkąt.
- Powtórz kroki 2 i 3 dla pozostałych trzech trójkątów.
- 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:
- 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.
- Definicja funkcji
sierpinski
:- Funkcja ta przyjmuje dwa argumenty:
points
(wierzchołki trójkąta) idepth
(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 (
p1
,p2
,p3
) z listypoints
. - Oblicza środki boków trójkąta (
m1
,m2
,m3
). - 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.
- Wyodrębnia współrzędne wierzchołków trójkąta (
- Funkcja ta przyjmuje dwa argumenty:
- 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.
Dodaj komentarz