Фракталы Python
Фрактальная геометрия — увлекательная область, занимающаяся изучением математических структур, известных как фракталы. Фракталы — это сложные, самоподобные узоры, которые повторяются в разных масштабах, и их можно найти в природе, искусстве и науке.
Одним из самых известных фракталов является множество Мандельброта, названное в честь математика Бенуа Мандельброта. Множество Мандельброта генерируется путем многократного повторения простого уравнения и изучения поведения результирующей последовательности комплексных чисел. Множество Мандельброта определяется как множество комплексных чисел c, для которых последовательность остается ограниченной при итерации.
Чтобы сгенерировать множество Мандельброта, мы можем использовать Python и библиотеку matplotlib. Первый шаг — определить функцию, которая принимает комплексное число c и максимальное количество итераций и возвращает количество итераций, необходимое для того, чтобы последовательность стала неограниченной.
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
После создания множества Мандельброта мы можем использовать библиотеку matplotlib для визуализации его в виде изображения.
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
Теперь мы можем использовать эти функции для создания и построения множества Мандельброта для заданной интересующей области и разрешения.
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')
Другой известный фрактал, который можно сгенерировать с помощью аналогичного подхода, — это множество Жюлиа, которое определяется как множество комплексных чисел c, для которых последовательность z_n = z_{n-1}² + c остается ограниченной. Набор Жюлиа генерируется повторением того же уравнения, что и набор Мандельброта, но с фиксированным значением c.
Чтобы сгенерировать набор Жюлиа, мы можем изменить функцию Мандельброта, чтобы она принимала фиксированное значение c и применяла его к каждой точке комплексной плоскости.
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')
Фракталы — это увлекательные математические структуры, которые можно генерировать и визуализировать с помощью Python и библиотеки matplotlib. Множество Мандельброта и множество Жюлиа — два известных примера фракталов, которые можно генерировать с помощью простых итерационных алгоритмов, а их сложная и красивая структура делает их популярным предметом изучения и исследования в математике, науке и искусстве.

![В любом случае, что такое связанный список? [Часть 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































