Fraktale Pythona
Geometria fraktalna to fascynująca dziedzina zajmująca się badaniem struktur matematycznych zwanych fraktalami. Fraktale to złożone, samopodobne wzory, które powtarzają się w różnych skalach i można je znaleźć w przyrodzie, sztuce i nauce.
Jednym z najbardziej znanych fraktali jest zbiór Mandelbrota, nazwany na cześć matematyka Benoit Mandelbrota. Zbiór Mandelbrota jest generowany przez wielokrotne iterowanie prostego równania i badanie zachowania wynikowej sekwencji liczb zespolonych. Zbiór Mandelbrota definiuje się jako zbiór liczb zespolonych c, dla których sekwencja pozostaje ograniczona podczas iteracji.
Aby wygenerować zbiór Mandelbrota, możemy użyć Pythona i biblioteki matplotlib. Pierwszym krokiem jest zdefiniowanie funkcji, która przyjmuje liczbę zespoloną c i maksymalną liczbę iteracji i zwraca liczbę iteracji wymaganych, aby sekwencja stała się nieograniczona.
import numpy as np
def mandelbrot(c, max_iter):
z = 0
for i in range(max_iter):
z = z**2 + c
if abs(z) > 2:
return i
return max_iter
def generate_mandelbrot_set(xmin, xmax, ymin, ymax, width, height, max_iter):
x_values = np.linspace(xmin, xmax, width)
y_values = np.linspace(ymin, ymax, height)
mandelbrot_set = np.zeros((height, width))
for i in range(height):
for j in range(width):
mandelbrot_set[i,j] = mandelbrot(complex(x_values[j], y_values[i]), max_iter)
return mandelbrot_set
Po wygenerowaniu zbioru Mandelbrota możemy użyć biblioteki matplotlib, aby zwizualizować go jako obraz.
def generate_mandelbrot_set(xmin, xmax, ymin, ymax, width, height, max_iter):
x_values = np.linspace(xmin, xmax, width)
y_values = np.linspace(ymin, ymax, height)
mandelbrot_set = np.zeros((height, width))
for i in range(height):
for j in range(width):
mandelbrot_set[i,j] = mandelbrot(complex(x_values[j], y_values[i]), max_iter)
return mandelbrot_set
Możemy teraz użyć tych funkcji do wygenerowania i wykreślenia zbioru Mandelbrota dla danego obszaru zainteresowania i rozdzielczości.
if __name__ == '__main__':
xmin, xmax, ymin, ymax = -2, 1, -1.5, 1.5
width, height = 1000, 1000
max_iter = 1000
mandelbrot_set = generate_mandelbrot_set(xmin, xmax, ymin, ymax, width, height, max_iter)
plot_mandelbrot_set(mandelbrot_set, cmap='inferno')
Innym znanym fraktalem, który można wygenerować przy użyciu podobnego podejścia, jest zbiór Julii, zdefiniowany jako zbiór liczb zespolonych c, dla których ciąg z_n = z_{n-1}² + c pozostaje ograniczony. Zbiór Julii jest generowany przez iterację tego samego równania co zbiór Mandelbrota, ale ze stałą wartością c.
Aby wygenerować zbiór Julii, możemy zmodyfikować funkcję Mandelbrota, aby przyjąć stałą wartość c i zastosować ją do każdego punktu na płaszczyźnie zespolonej.
def julia(z, c, max_iter):
for i in range(max_iter):
z = z**2 + c
if abs(z) > 2:
return i
return max_iter
def julia(z, c, max_iter):
for i in range(max_iter):
z = z**2 + c
if abs(z) > 2:
return i
return max_iter
if __name__ == '__main__':
xmin, xmax, ymin, ymax = -2, 2, -2, 2
width, height = 1000, 1000
max_iter = 1000
c = complex(-0.4, 0.6)
julia_set = generate_julia_set(xmin, xmax, ymin, ymax, width, height, c, max_iter)
plot_mandelbrot_set(julia_set, cmap='inferno')
Fraktale to fascynujące struktury matematyczne, które można generować i wizualizować za pomocą Pythona i biblioteki matplotlib. Zbiór Mandelbrota i zbiór Julii to dwa słynne przykłady fraktali, które można generować za pomocą prostych algorytmów iteracyjnych, a ich skomplikowane i piękne struktury sprawiają, że są popularnym przedmiotem badań i eksploracji w matematyce, naukach ścisłych i sztuce.

![Czym w ogóle jest lista połączona? [Część 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































