Множество Мандельброта
Материал из Википедии — свободной энциклопедии
В математике мно́жество Мандельбро́та — это фрактал, определённый как множество точек на комплексной плоскости, для которых итеративная последовательность
не уходит в бесконечность.
Содержание |
[править] Расширенное определение
Таким образом, вышеуказанная последовательность может быть раскрыта для каждой точки на комплексной плоскости следующим образом:
и так далее.
Если переформулировать эти выражения в виде итеративной последовательности значений координат комплексной плоскости и , т. е. заменив на , а на , мы получим:
Визуально, внутри множества Мандельброта можно выделить бесконечное количество элементарных фигур, причём самая большая в центре представляет собой кардиоиду. Также есть набор кругов, касающихся кардиоиды, размер которых постепенно уменьшается, постепенно стремясь к нулю. Каждый из этих кругов имеет свой набор меньших кругов, диаметр которых также стремится к нулю и т. д. Этот процесс продолжается бесконечно, образуя фрактал. Также важно, что эти процессы ветвления фигур не исчерпывают полностью множество Мандельброта: если рассмотреть с увеличением дополнительные «ветки», то в них можно увидеть свои кардиоиды и круги, не связанные с главной фигурой. Самая большая фигура (видимая при рассматривании основного множества) из них находится в области от −1,78 до −1,75 на отрицательной оси действительных значений.
[править] Упрощённое определение
Множества Мандельброта — нелинейные, квадратичные фракталы, комплексные динамические системы, генерируемые бесконечным повторением (итерацией) алгебраических функций или систем функций, причем значение вычисленной функции при следующей операции подставляется как аргумент.
Формула для вычисления z множества Мандельброта:
где переменная z и константа c — комплексные числа, состоящие из действительной и мнимой частей (мнимая часть содержит множитель ). Эти числа отображаются точками на координатной плоскости, где формируется пространственно-временной образ множества. Множество Мандельброта оказывается и вместилищем изображений множеств Жюлиа.
Графический образ множества Мандельброта называют также «чёрный карлик».
[править] История множества Мандельброта
Впервые множество Мандельброта было описано в 1905 году Пьером Фату (Pierre Fatou), французским математиком, работавшим в области аналитической динамики комплексных чисел. Фату изучал рекурсивные процессы вида
Начав с точки на комплексной плоскости, можно получить новые точки, последовательно применяя к ним эту формулу. Такая последовательность точек называется орбитой при преобразовании
Фату нашел, что орбита при этом преобразовании показывают достаточно сложное и интересное поведение. Существует бесконечное множество таких преобразований — своё для каждого значения . В те времена компьютеров ещё не было, и Фату, конечно, не мог построить орбиты всех точек плоскости, ему приходилось всё делать вручную. Основываясь на своих расчётах, он доказал, что орбита точки, лежащей на расстоянии больше 2 от начала координат, всегда уходит в бесконечность.
Фату никогда не видел изображений, которые мы сейчас знаем как изображения множества Мандельброта, потому что необходимое количество вычислений невозможно провести вручную. Профессор Бенуа Мандельброт был первым, кто использовал для этого компьютер.
Фракталы были описаны Мандельбротом в 1975 году в его книге «Les Objets Fractals: Forme, Hasard et Dimension» («Фрактальные объекты: форма, случайность и размерность»). В этой книге Мандельброт впервые использовал термин «фрактал» для обозначения математического феномена, демонстрирующего столь непредсказуемое и удивительное поведение. Эти феномены рождались при использовании рекурсивного алгоритма для получения какой-либо кривой или множества. Множество Мандельброта — один из таких феноменов, названный по имени своего исследователя.
[править] Взаимодействие с множеством Жюлиа
Множество Мандельброта изначально было построено как каталог множеств Жюлиа: каждой точке на комплексной плоскости соответствует своё множество Жюлиа. Точки, лежащие внутри множества Мандельброта, точно соответствуют связным множествам Жюлиа, а точки снаружи — несвязным.
Отсюда понятно, что интересные варианты множества Жюлиа соответствуют точкам, лежащим на границе множества Мандельброта. Точки глубоко внутри образуют простые геометрические фигуры, а внешние выглядят как пыль, окружающая цветные пятна. Некоторые программы, например, Fracint, позволяют пользователю прямо на экране указать точку, для которой необходимо построить соответствующее множество Жюлиа, упрощая поиск красивых изображений.
Множество Мандельброта и само содержит структуры, напоминающие множество Жюлиа: для любого область множества Мандельброта около напоминает центр множества Жюлиа с параметром .
[править] Построение множества
Было доказано, что как только модуль окажется больше 2 (или в терминах действительной и мнимой частей ), последовательность станет стремиться к бесконечности. Сравнение с этим числом (в англоязычной литературе его называют «bail-out») позволяет выделять точки, не попадающие внутрь множества. Для точек, лежащих внутри множества, последовательность не будет иметь тенденции к бесконечности и никогда не достигнет этого числа, поэтому после определённого числа итераций расчёт необходимо принудительно завершить. Максимальное число итераций, после которых число считается попавшим внутрь множества, задается в программе.
Изображение, полученное таким способом, является лишь приближением к реальному множеству Мандельброта. Более качественные результаты можно получать, увеличивая максимальное количество итераций, однако при этом пропорционально вырастает и время расчётов.
[править] Добавление цвета
Строго математически, изображения множеств Мандельброта и Жюлиа должны быть чёрно-белыми. Точка либо попадает внутрь множества, либо нет. Несмотря на это, с помощью компьютера мы можем построить и цветные изображения. Самым распространённым способом является раскрашивание точек снаружи множества в цвет, равный количеству итераций, за которое точка уходит в «бесконечность» или, с точки зрения программы, на определённое расстояние от нуля.
Порядок определения, попадает ли точка внутрь множества (традиционно закрашиваемого чёрным цветом) или нет (закрашивается цветом, зависящим от скорости движения к бесконечности) следующий: на каждой итерации для вычисляется значение модуля , которое затем сравнивается с «границей бесконечности» (обычно берётся значение, равное 2). Здесь важно обратить внимание, что уже на данном этапе можно ввести определённую оптимизацию вычислений, если сравнивать не , а , что значительно снизит время расчётов.
Таким образом, если при любом числе итераций, то цвет точки чёрный, в противном случае он зависит от последнего значения . Значение , фактически, обозначает скорость движения в бесконечность, и может быть просто индексом в таблице цветов, или использоваться как параметр в более сложном алгоритме.
Итак, мы получили алгоритм определения, лежит ли точка снаружи множества Мандельброта — это происходит, если она удаляется больше чем на 2 от начала координат. Каким же образом определить, что она лежит внутри множества? Это не так просто и для этого есть много способов. В этом суть проблемы. Если бы всё было по-другому, у нас бы не было столь большого количества разнообразных алгоритмов для построения множества Мандельброта. Самое простое решение — ограничить максимальное количество итераций. Если точка не вышла за указанную границу, можно считать, что она находится внутри множества.
Теоретически, точкам около границы множества нужно больше итераций для ухода в бесконечность, поэтому такие области рисуются заметно дольше. На расстоянии от множества скорость ухода выше, и, соответственно, требуется меньше итераций.
[править] Оптимизация
Одним из способов уменьшения объема вычислений может служить проверка, попадает ли точка в область главной кардиоиды. Формула кардиоиды в полярных координатах выглядит следующим образом:
Таким образом, для точки необходимо вычислить
- ,
- ,
- .
Если то точка попадает внутрь множества и закрашивается чёрным цветом, а итеративные вычисления можно пропустить.
Чтобы избежать большого количества итераций для других точек множества, можно применить дополнительную проверку, не попала ли точка в значение, достигнутое ранее другой точкой, что означает повторение её пути и также принадлежность к множеству.
[править] Применение множества Мандельброта в искусстве
Поиск красивых изображений множества Мандельброта — интересное хобби для очень многих людей. Они собирают коллекции таких изображений, причём каждое из них может быть описано небольшим количеством параметров, например, просто координатами центра.
Есть большое количество программ для рисования фракталов, но, несмотря на это, многие люди пишут свои программы для большей гибкости при экспериментах.
[править] Вариации множества Мандельброта
Зачастую, под названием «Множество Мандельброта» понимается только множество, описанное выше. Но на самом деле, любая функция комплексной переменной имеет соответствующее множество Мандельброта, которое также характеризуется наличием или отсутствием связного множества Жюлиа.
Например:
- .
Для каждого значения ищется соответствующее связное множество Жюлиа, и при его наличии считается, что попадает внутрь множества Мандельброта.
Эти утверждения можно обобщить и на множества Жюлиа, определяемые больше, чем двумя числами. Например, множество Жюлиа, определяемое тремя действительными числами, имеет соответствующее трёхмерное множество Мандельброта.
[править] Математические факты о множестве Мандельбротта
Множество Мандельбротта является связным, хотя в это и трудно поверить, глядя на хитрые системы мостов, соединяющие различные его части.
Число итераций очень близко к логарифму электрического потенциала, который возникает, если зарядить множество Мандельбротта. Точнее предел ln(ln( | zn | ) / 2n) + const совпадает с этим потенциалом.
Если сильно увеличить множество Мандельбротта в граничной точке c и тоже самое проделать с множеством Жюлиа для этого же значения c и в этой же точке, то картины будут асимптотически стремиться друг к другу при все больших увеличениях.