Созерцаем узоры на комплексной плоскости
Посмотрели дикие стримы? Время переключиться на вторую программу нашего новогоднего телевизора. Редакция N + 1 предлагает погрузиться в созерцание нечеловеческой красоты фракталов, образованных границей множества Мандельброта на комплексной плоскости.
Разверните видео ниже на полный экран и отправляйтесь:
Если вам захотелось узнать, что именно вы видели, то вот небольшой рассказ о фракталах (а если вы не хотите читать, промотайте текст, ниже еще много красоты).
Часто под фракталами понимают самоподобные структуры — такие, чья даже самая малая деталь воспроизводит их облик в целом и наоборот. Самый знаменитый пример такого фрактала — «салфетка Серпинского», треугольник, разбивающийся на три своих копии с вдвое меньшей стороной и так до бесконечности. Но это только один из типов фракталов. Более общее (и нестрогое) определение фрактала гласит, что это множества, у которых «есть нетривиальные детали на сколь угодно мелком масштабе».
Представьте себе, что вы разглядываете на карте береговую линию, постепенно уменьшаете масштаб, но какие бы все более мелкие и мелкие детали вы не видели, берег не становится «проще», на нем по-прежнему видны мысы и заливы. Это будет полноправный фрактал, даже если рисунок по мере увеличения не воспроизводит сам себя, а меняется. Нужно лишь, чтобы он оставался достаточно сложным.
Исследователь и популяризатор фракталов Бенуа Мандельброт дал такое формальное определение: фрактал — это множество, чья хаусдорфова размерность отличается от его топологической размерности.
Самый знаменитый фрактал образует граница множества Мандельброта, названное так Адрианом Дуади и Джоном Хаббардом. Это не самоподобный фрактал, он не воспроизводит сам себя буквально, но при этом является «продуктом» самоподобного фрактала, образованного множествами Жюлиа. И сейчас самое время на них посмотреть:
Возникает множество Жюлиа так: для функции от комплексной переменной z, например, квадратичного многочлена P(z) = z2 + c, можно взять какую-нибудь начальную точку z0 и начать с нее последовательность итераций: z0, z1 = P(z0), z2 = P(z1)... Для каких-то точек z0 — например, для слишком больших по модулю — последовательность zn убегает на бесконечность. Для других — остается ограниченной. Те точки z0, для которых последовательность ограничена, и образуют заполненное множество Жюлиа. При некоторых значениях c (например, при слишком больших по модулю) множество Жюлиа распадается: оно состоит из не связанных друг с другом больших частей, каждая из которых распадается на не связанные друг с другом части поменьше, и так далее. Получается так называемая канторова пыль.
Так вот, множество таких c, при которых распада не происходит, и множество Жюлиа остается связным, и называется множеством Мандельброта. Неочевидная теорема, доказанная Фату и Жюлиа в 1919 году, утверждает, что связность множества Жюлиа равносильна тому, что на бесконечность не убегает одна конкретная точка z0 = 0. Поэтому часто множество Мандельброта определяют так: это множество тех c, при которых последовательность zn, заданная по правилу z0 = 0, zn+1 = zn2 + c, при n = 0, 1, 2... не убегает на бесконечность. И вот так выглядит множество Мандельброта, если все его точки покрасить в черный, а все точки вне его оставить белыми:
Однако чаще всего белое пространство вне множества закрашивают в разные цвета в зависимости от того, сколь быстро последовательность zn в этой точке убегает на бесконечность. Есть множество сайтов, где вы можете выбрать свой вариант раскраски, например такой: Mandelbrot Viewer, а если вы владеете программированием, то подходящие инструменты ждут вас в блоге математика Ильи Щурова: Рисуем Мандельброта с помощью Python и Numpy. Есть способы добавить разнообразия: например, учитывать при раскраске не только номер n, при котором модуль zn становится достаточно большим (скажем, 5 или 10), но и сам этот модуль (о котором можно думать, как о «радиусе»), за счет чего цветовая раскраска становится непрерывной, а также «угол» (какой аргумент будет у этого zn).
Смотрите, что получается:
Множество Мандельброта интересно тем, что в нем, с одной стороны, можно при увеличении увидеть его копии, а с другой, у некоторых граничных точек — точек Мизюревича — множество Мандельброта начинает напоминать соответствующее множество Жюлиа. И этот рассказ правильно завершить словами Адриана Дуади, связывающими комплексную плоскость динамики z с плоскостью параметров c: «Нужно сначала вспахать плоскость динамики, чтобы затем собрать урожай в плоскости параметров».
А теперь можно погрузиться в нечеловеческую красоту математики:
Виктор Клепцын при участии Ильи Щурова