Множество Мандельброта ( / ˈ m æ n d əl b r oʊ t , - b r ɒ t / ) [ 1] [2] представляет собой двумерное множество с относительно простым определением, которое демонстрирует большую сложность, особенно при увеличении. Оно популярно благодаря своей эстетической привлекательности и фрактальным структурам. Множество определяется в комплексной плоскости как комплексные числа , для которых функция не расходится до бесконечности при итерации, начиная с , т. е. для которых последовательность , , и т. д. остается ограниченной по абсолютной величине .
Это множество было впервые определено и нарисовано Робертом У. Бруксом и Питером Мательски в 1978 году в рамках исследования групп Клейна . [3] Впоследствии, в 1980 году, Бенуа Мандельброт получил высококачественные визуализации множества, работая в Исследовательском центре Томаса Дж. Уотсона IBM в Йорктаун -Хайтс, Нью-Йорк .
Изображения множества Мандельброта демонстрируют бесконечно сложную границу , которая раскрывает все более тонкие рекурсивные детали при возрастающем увеличении; математически граница множества Мандельброта представляет собой фрактальную кривую . «Стиль» этой рекурсивной детали зависит от области исследуемой границы множества. Изображения множества Мандельброта могут быть созданы путем выборки комплексных чисел и проверки для каждой точки выборки , стремится ли последовательность к бесконечности . Рассматривая действительную и мнимую части как координаты изображения на комплексной плоскости , пиксели затем могут быть окрашены в соответствии с тем, как скоро последовательность пересекает произвольно выбранный порог ( порог должен быть не менее 2, так как −2 — это комплексное число с наибольшей величиной в пределах набора, но в противном случае порог произволен). Если поддерживается постоянным, а начальное значение вместо этого изменяется, то получается соответствующее множество Жюлиа для точки .
Множество Мандельброта стало популярным за пределами математики как из-за своей эстетической привлекательности, так и как пример сложной структуры, возникающей из применения простых правил. Это один из самых известных примеров математической визуализации , математической красоты и мотива .
Множество Мандельброта берет свое начало в комплексной динамике , области, впервые исследованной французскими математиками Пьером Фату и Гастоном Жюлиа в начале 20-го века. Фрактал был впервые определен и нарисован в 1978 году Робертом В. Бруксом и Питером Мательски в рамках исследования групп Клейна . [3] 1 марта 1980 года в исследовательском центре IBM Thomas J. Watson в Йорктаун - Хайтс , Нью-Йорк , Бенуа Мандельброт впервые визуализировал множество. [4]
Мандельброт изучал пространство параметров квадратичных многочленов в статье, опубликованной в 1980 году. [5] Математическое изучение множества Мандельброта фактически началось с работы математиков Адриена Дуади и Джона Х. Хаббарда (1985), [6] которые установили многие из его фундаментальных свойств и назвали множество в честь Мандельброта за его влиятельные работы по фрактальной геометрии .
Математики Хайнц-Отто Пайтген и Петер Рихтер стали широко известны благодаря продвижению набора с помощью фотографий, книг (1986), [7] и международной гастрольной выставки немецкого Гёте-Института (1985). [8] [9]
В статье на обложке журнала Scientific American за август 1985 года был представлен алгоритм вычисления множества Мандельброта. Обложка была создана Пайтгеном, Рихтером и Заупе из Бременского университета . [10] Множество Мандельброта стало популярным в середине 1980-х годов как демонстрационная модель компьютерной графики , когда персональные компьютеры стали достаточно мощными, чтобы строить и отображать множество в высоком разрешении. [11]
Работа Дуади и Хаббарда появилась в период роста интереса к сложной динамике и абстрактной математике , [12] и изучение множества Мандельброта с тех пор стало центральным элементом этой области. [ необходима ссылка ]
Множество Мандельброта — это множество значений c в комплексной плоскости , для которых орбита критической точки при итерации квадратичного отображения
остается ограниченным . [14] Таким образом, комплексное число c является членом множества Мандельброта, если при запуске и повторном применении итерации абсолютное значение остается ограниченным для всех .
Например, для c = 1 последовательность равна 0, 1, 2, 5, 26, ..., что стремится к бесконечности , поэтому 1 не является элементом множества Мандельброта. С другой стороны, для последовательность равна 0, −1, 0, −1, 0, ..., что является ограниченным, поэтому −1 принадлежит множеству.
Множество Мандельброта можно также определить как локус связности семейства квадратичных многочленов , подмножество пространства параметров, для которых множество Жюлиа соответствующего многочлена образует связное множество . Таким же образом границу множества Мандельброта можно определить как локус бифуркации этого квадратичного семейства, подмножество параметров, вблизи которых динамическое поведение многочлена (при его многократной итерации ) резко меняется.
Множество Мандельброта является компактным множеством , поскольку оно замкнуто и содержится в замкнутом круге радиуса 2 вокруг начала координат . Точка принадлежит множеству Мандельброта тогда и только тогда, когда для всех . Другими словами, абсолютное значение должно оставаться равным или ниже 2, чтобы находиться во множестве Мандельброта, , и если это абсолютное значение превышает 2, последовательность уйдет в бесконечность. Поскольку , следует, что , устанавливая, что всегда будет находиться в замкнутом круге радиуса 2 вокруг начала координат. [15]
Пересечение с действительной осью есть интервал . Параметры вдоль этого интервала могут быть поставлены во взаимно-однозначное соответствие с параметрами действительного логистического семейства ,
Соответствие дано
Это дает соответствие между всем пространством параметров логистического семейства и множеством Мандельброта. [16]
Дуади и Хаббард показали, что множество Мандельброта связно . Они построили явный конформный изоморфизм между дополнением множества Мандельброта и дополнением замкнутого единичного круга . Мандельброт изначально предположил, что множество Мандельброта несвязно . Эта гипотеза основывалась на компьютерных изображениях, созданных программами, которые не способны обнаружить тонкие нити, соединяющие различные части . После дальнейших экспериментов он пересмотрел свою гипотезу, решив, что должно быть связно. Топологическое доказательство связности было обнаружено в 2001 году Джереми Каном . [17]
Динамическая формула для униформизации дополнения множества Мандельброта, вытекающая из доказательства Дуади и Хаббарда связности , приводит к появлению внешних лучей множества Мандельброта. Эти лучи могут быть использованы для изучения множества Мандельброта в комбинаторных терминах и образуют основу параголоволомки Йоккоца . [18]
Граница множества Мандельброта является бифуркационным локусом семейства квадратичных многочленов. Другими словами, граница множества Мандельброта является набором всех параметров, для которых динамика квадратичного отображения демонстрирует чувствительную зависимость от , то есть резко изменяется при произвольно малых изменениях Его можно построить как предельное множество последовательности плоских алгебраических кривых , кривых Мандельброта , общего типа, известного как полиномиальные лемнискаты . Кривые Мандельброта определяются путем установки , а затем интерпретации набора точек в комплексной плоскости как кривой в действительной декартовой плоскости степени по x и y . [19] Каждая кривая является отображением исходного круга радиуса 2 при . Эти алгебраические кривые появляются на изображениях множества Мандельброта, вычисленных с использованием «алгоритма времени выхода», упомянутого ниже.
Основная кардиоида — континент периода 1. Это область параметров, для которых построена карта
имеет притягивающую неподвижную точку . Она состоит из всех параметров вида
для некоторых в открытом единичном диске .
Слева от основной кардиоиды, прикрепленной к ней в точке , видна круглая лампочка, лампочка периода 2. Лампочка состоит из для , которая имеет притягивающий цикл периода 2 . Это заполненная окружность радиуса 1/4 с центром около −1.
В более общем смысле, для каждого положительного целого числа существуют круговые луковицы, касающиеся основной кардиоиды, называемые луковицами с периодом q (где обозначает функцию Эйлера фи ), которые состоят из параметров , для которых существует притягивающий цикл с периодом . Более конкретно, для каждого примитивного корня th из единицы (где ), существует одна луковица с периодом q, называемая луковицей, которая касается основной кардиоиды в параметре
и который содержит параметры с -циклами, имеющими комбинаторное число вращения . Точнее, периодические компоненты Фату, содержащие притягивающий цикл, все касаются в общей точке (обычно называемой -неподвижной точкой ). Если мы обозначим эти компоненты в ориентации против часовой стрелки, то сопоставляет компоненту с компонентом .
Изменение поведения, происходящее при известно как бифуркация : притягивающая неподвижная точка «сталкивается» с отталкивающим циклом периода q . Когда мы проходим через параметр бифуркации в -колбу, притягивающая неподвижная точка превращается в отталкивающую неподвижную точку ( -неподвижную точку), а цикл периода q становится притягивающим.
Луковицы, являющиеся внутренними компонентами множества Мандельброта, в которых отображения имеют притягивающий периодический цикл, называются гиперболическими компонентами . [ требуется ссылка ]
Предполагается, что это единственные внутренние области и что они плотны в . Эта проблема, известная как плотность гиперболичности , является одной из самых важных открытых проблем в сложной динамике . [20] Гипотетические негиперболические компоненты множества Мандельброта часто называют «странными» или призрачными компонентами. [21] [22] Для действительных квадратичных полиномов этот вопрос был доказан в 1990-х годах независимо Любичем и Грачиком и Свёнтеком. (Обратите внимание, что гиперболические компоненты, пересекающие действительную ось, в точности соответствуют периодическим окнам на диаграмме Фейгенбаума . Таким образом, этот результат утверждает, что такие окна существуют вблизи каждого параметра на диаграмме.)
Не каждый гиперболический компонент может быть достигнут последовательностью прямых бифуркаций из главной кардиоиды множества Мандельброта. Такой компонент может быть достигнут последовательностью прямых бифуркаций из главной кардиоиды небольшой копии Мандельброта (см. ниже).
Каждый из гиперболических компонентов имеет центр , который является точкой c такой, что внутренняя область Фату для имеет суперпритягивающий цикл — то есть, что притяжение бесконечно. Это означает, что цикл содержит критическую точку 0, так что 0 возвращается к себе после некоторых итераций. Следовательно, для некоторого n . Если мы назовем этот многочлен (позволяя ему зависеть от c вместо z ), мы получим, что и что степень равна . Следовательно, построение центров гиперболических компонентов возможно путем последовательного решения уравнений . [ необходима цитата ] Количество новых центров, созданных на каждом шаге, задается OEIS Слоана : A000740 .
Предполагается, что множество Мандельброта локально связно . Эта гипотеза известна как MLC ( Mandelbrot locally connected ). Согласно работе Адриена Дуади и Джона Х. Хаббарда , эта гипотеза привела бы к простой абстрактной модели «защемленного диска» множества Мандельброта. В частности, это подразумевало бы важную гипотезу гиперболичности, упомянутую выше. [ необходима цитата ]
Работа Жана-Кристофа Йокко установила локальную связность множества Мандельброта при всех конечно перенормируемых параметрах; то есть, грубо говоря, тех, которые содержатся только в конечном числе малых копий Мандельброта. [23] С тех пор локальная связность была доказана во многих других точках , но полная гипотеза все еще остается открытой.
Множество Мандельброта самоподобно при увеличении в окрестностях точек Мисюревича . Также предполагается, что оно самоподобно вокруг обобщенных точек Фейгенбаума (например, −1,401155 или −0,1528 + 1,0397 i ), в смысле сходимости к предельному множеству. [24] [25] Множество Мандельброта в целом является квазисамоподобным, поскольку небольшие слегка отличающиеся версии самого себя могут быть найдены в произвольно малых масштабах. Все эти копии множества Мандельброта немного отличаются, в основном из-за тонких нитей, соединяющих их с основным телом множества. [ необходима цитата ]
Хаусдорфова размерность границы множества Мандельброта равна 2 , как определено результатом Мицухиро Шишикуры . [26] Тот факт, что это на целое число больше, чем ее топологическая размерность, которая равна 1, отражает экстремальную фрактальную природу границы множества Мандельброта. Грубо говоря, результат Шишикуры утверждает, что граница множества Мандельброта настолько «волнистая», что она локально заполняет пространство так же эффективно, как двумерная плоская область. Кривые с хаусдорфовой размерностью 2, несмотря на то, что они (топологически) одномерны, часто способны иметь ненулевую площадь (более формально, ненулевую плоскую меру Лебега ). Является ли это так для границы множества Мандельброта, является нерешенной проблемой. [ необходима цитата ]
Было показано, что обобщенное множество Мандельброта в многомерных гиперкомплексных числовых пространствах (т.е. когда степень итерируемой переменной стремится к бесконечности) сходится к единичной ( -1)-сфере. [27]
В модели реальных вычислений Блюма–Шуба–Смейла множество Мандельброта невычислимо, но его дополнение вычислимо перечислимо . Многие простые объекты (например, график возведения в степень) также невычислимы в модели BSS. В настоящее время неизвестно, вычислимо ли множество Мандельброта в моделях реальных вычислений, основанных на вычислимом анализе , которые больше соответствуют интуитивному понятию «построения множества компьютером». Хертлинг показал, что множество Мандельброта вычислимо в этой модели, если гипотеза гиперболичности верна. [ необходима цитата ]
Как следствие определения множества Мандельброта, существует близкое соответствие между геометрией множества Мандельброта в заданной точке и структурой соответствующего множества Жюлиа . Например, значение c принадлежит множеству Мандельброта тогда и только тогда, когда соответствующее множество Жюлиа связно. Таким образом, множество Мандельброта можно рассматривать как карту связных множеств Жюлиа. [ необходима цитата ]
Этот принцип используется практически во всех глубоких результатах по множеству Мандельброта. Например, Шишикура доказал, что для плотного набора параметров на границе множества Мандельброта множество Жюлиа имеет размерность Хаусдорфа два, а затем перенес эту информацию на плоскость параметров. [26] Аналогично, Йоккоз сначала доказал локальную связность множеств Жюлиа, прежде чем установить ее для множества Мандельброта при соответствующих параметрах. [23]
Для каждого рационального числа , где p и q являются взаимно простыми , гиперболический компонент периода q бифурцируется от основной кардиоиды в точке на краю кардиоиды, соответствующей внутреннему углу . [ 28] Часть множества Мандельброта, соединенная с основной кардиоидой в этой точке бифуркации, называется p / q -лимбом . Компьютерные эксперименты показывают, что диаметр лимба стремится к нулю, как . Лучшая известная на данный момент оценка - это неравенство Йокко, которое утверждает, что размер стремится к нулю, как . [ необходима цитата ]
Период -q лимб будет иметь "антенны" наверху своего лимба. Период данной луковицы определяется путем подсчета этих антенн. Числитель числа вращения, p , находится путем нумерации каждой антенны против часовой стрелки от лимба от 1 до и нахождения самой короткой антенны. [28]
В попытке продемонстрировать, что толщина p / q -лимба равна нулю, Дэвид Болл провел компьютерный эксперимент в 1991 году, где он вычислил количество итераций, необходимых для расходимости ряда для ( является его местоположением). Поскольку ряд не расходится для точного значения , количество требуемых итераций увеличивается с небольшим . Оказывается, что умножение значения на количество требуемых итераций дает приближение , которое становится лучше для меньших . Например, для = 0,0000001 количество итераций равно 31415928, а произведение равно 3,1415928. [29] В 2001 году Аарон Клебанофф доказал открытие Болла. [30]
Набор Мандельброта имеет фундаментальную кардиоидную форму, украшенную многочисленными лампочками, непосредственно прикрепленными к нему. [31] Понимание расположения этих лампочек требует детального изучения границы набора Мандельброта. При увеличении масштаба определенных частей с геометрической точки зрения появляется точная выводимая информация о местоположении внутри границы и соответствующем динамическом поведении для параметров, извлеченных из связанных лампочек. [32]
Итерация квадратичного многочлена , где — параметр, взятый из одной из лампочек, прикрепленных к основной кардиоиде в наборе Мандельброта, приводит к картам, содержащим циклы притяжения определенного периода и числа вращения . В этом контексте цикл притяжения демонстрирует вращательное движение вокруг центральной неподвижной точки, завершая в среднем обороты на каждой итерации. [32] [33]
Луковицы в наборе Мандельброта различаются как по их циклам притяжения, так и по геометрическим особенностям их структуры. Каждая луковица характеризуется антенной, прикрепленной к ней, исходящей из точки соединения и отображающей определенное количество спиц, указывающих на ее период. Например, луковица идентифицируется своим циклом притяжения с числом вращения . Ее отличительная антенноподобная структура включает точку соединения, из которой исходят пять спиц. Среди этих спиц, называемая главной спицей, непосредственно прикреплена к луковице , а «наименьшая» неглавная спица расположена примерно на один оборот против часовой стрелки от главной спицы, обеспечивая отличительную идентификацию как -луковица . [34] Это поднимает вопрос: как различить, какая из этих спиц является «наименьшей»? [31] [34] В теории внешних лучей, разработанной Дуади и Хаббардом. [35] существует ровно два внешних луча, приземляющихся в корневой точке сателлитного гиперболического компонента набора Мандельброта. Каждый из этих лучей обладает внешним углом, который подвергается удвоению под действием отображения удвоения угла . Согласно этой теореме, когда два луча попадают в одну и ту же точку, никакие другие лучи между ними не могут пересекаться. Таким образом, «размер» этой области измеряется путем определения длины дуги между двумя углами. [32]
Если корневая точка основной кардиоиды — это точка перегиба в , то основная кардиоида — это -бульба. Корневая точка любой другой бульбы — это просто точка, где эта бульба прикреплена к основной кардиоиде. Это подсказывает вопрос: какая бульба самая большая между корневыми точками и -бульб? Это, очевидно, -бульба . И заметьте, что получается из предыдущих двух дробей сложением Фарея , т. е. сложением числителей и сложением знаменателей
Аналогично, самая большая луковица между - и -луковицами является -луковицей, снова полученной сложением Фарея.
Самая большая лампочка между и -лампой является -лампой, в то время как самая большая лампочка между и -лампами является -лампой, и так далее. [32] [36] Расположение лампочек в множестве Мандельброта следует замечательному шаблону, управляемому деревом Фарея , структурой, охватывающей все рациональные числа между и . Этот порядок располагает лампочки вдоль границы основной кардиоиды точно в соответствии с рациональными числами в единичном интервале . [34]
Начиная с луковицы наверху и продвигаясь к кругу, последовательность разворачивается систематически: самая большая луковица между и равна , между и равна , и так далее. [37] Интересно, что знаменатели периодов круглых луковиц в последовательных масштабах в наборе Мандельброта соответствуют последовательности чисел Фибоначчи , последовательности, которая получается путем сложения двух предыдущих членов – 1, 2, 3, 5, 8, 13, 21... [38] [39]
Последовательность Фибоначчи проявляется в количестве спиральных рукавов в уникальном месте множества Мандельброта, зеркально отображенном как сверху, так и снизу. Это отличительное расположение требует наибольшего количества итераций для детального визуального фрактала, со сложными деталями, повторяющимися при увеличении масштаба. [40]
Граница множества Мандельброта показывает более сложную детализацию, чем ближе смотришь или увеличиваешь изображение. Ниже приведен пример последовательности изображений, масштабируемых до выбранного значения c .
Увеличение последнего изображения относительно первого составляет примерно 10 10 к 1. Применительно к обычному компьютерному монитору оно представляет собой часть множества Мандельброта диаметром 4 миллиона километров.
«Тело» морского конька состоит из 25 «спиц», состоящих из двух групп по 12 «спиц» в каждой и одной «спицы», соединяющейся с основной кардиоидой. Эти две группы можно отнести путем некоторой метаморфозы к двум «пальцам» «верхней руки» множества Мандельброта; поэтому количество «спиц» увеличивается от одного «морского конька» к другому на 2; «ступица» является точкой Мисюревича . Между «верхней частью тела» и «хвостом» находится искаженная копия множества Мандельброта, называемая «спутником».
Острова на третьем с конца шаге, похоже, состоят из бесконечного числа частей, как и в случае с соответствующим множеством Жюлиа . Они соединены крошечными структурами, так что целое представляет собой просто связное множество. Крошечные структуры встречаются друг с другом на спутнике в центре, который слишком мал, чтобы быть распознанным при таком увеличении. Значение для соответствующего не является центром изображения, но относительно основного тела множества Мандельброта имеет то же положение, что и центр этого изображения относительно спутника, показанного на 6-м шаге.
В то время как множество Мандельброта обычно визуализируется с указанием внешних границ, структура внутри ограниченного множества также может быть выявлена. Например, при вычислении того, является ли заданное значение c связанным или несвязанным, пока оно остается связанным, максимальное значение, которого достигает это число, можно сравнить со значением c в этом месте. Если используется метод суммы квадратов, вычисленное число будет max:(действительное^2 + мнимое^2) - c:(действительное^2 + мнимое^2). Величина этого вычисления может быть визуализирована как значение на градиенте.
Это дает результаты, подобные следующим: градиенты с четкими краями и контурами по мере приближения к границам. Анимации служат для выделения границ градиента.
Мультибротные множества — это ограниченные множества, найденные в комплексной плоскости для членов общего монического одномерного полиномиального семейства рекурсий.
Для целого числа d эти множества являются локусами связности для множеств Жюлиа, построенных по той же формуле. Также изучался полный кубический локус связности; здесь рассматривается двухпараметрическая рекурсия , две критические точки которой являются комплексными квадратными корнями параметра k . Параметр находится в кубическом локусе связности, если обе критические точки устойчивы. [41] Для общих семейств голоморфных функций граница множества Мандельброта обобщается до бифуркационного локуса . [ требуется ссылка ]
Набор Multibrot получается путем изменения значения показателя d . В статье есть видео, которое показывает развитие от d = 0 до 7, в этой точке по периметру имеется 6 ie лепестков . В общем, когда d — положительное целое число, центральная область в каждом из этих наборов всегда является эпициклоидой из выступов. Аналогичное развитие с отрицательными интегральными показателями приводит к расщелинам на внутренней стороне кольца, где основная центральная область набора является гипоциклоидой из выступов. [ необходима цитата ]
Не существует идеального расширения множества Мандельброта в 3D, поскольку не существует 3D-аналога комплексных чисел для его итерации. Существует расширение комплексных чисел в 4 измерения, кватернионы , которое создает идеальное расширение множества Мандельброта и множеств Жюлиа в 4 измерения. [42] Затем их можно либо разрезать , либо спроецировать в 3D-структуру. Кватернионное (4-мерное) множество Мандельброта — это просто тело вращения 2-мерного множества Мандельброта (в плоскости jk), и поэтому на него неинтересно смотреть. [42] Взятие 3-мерного сечения в приводит к телу вращения 2-мерного множества Мандельброта вокруг действительной оси. [ требуется цитата ]
Особый интерес представляет фрактал- треугольник , локус связности антиголоморфного семейства .
Треуголка (иногда называемая также Мандельбаром ) была обнаружена Милнором в его исследовании срезов параметров действительных кубических многочленов . Она не является локально связной. Это свойство наследуется локусом связности действительных кубических многочленов.
Другим неаналитическим обобщением является фрактал «Горящий корабль» , который получается путем итерации следующего:
Существует множество различных алгоритмов для построения множества Мандельброта с помощью вычислительного устройства. Здесь будет продемонстрирован наиболее широко используемый и простейший алгоритм, а именно наивный «алгоритм времени побега». В алгоритме времени побега выполняется повторяющееся вычисление для каждой точки x , y в области построения и на основе поведения этого вычисления выбирается цвет для этого пикселя.
Координаты x и y каждой точки используются в качестве начальных значений в повторяющемся или итеративном вычислении (подробно описанном ниже). Результат каждой итерации используется в качестве начальных значений для следующей. Значения проверяются во время каждой итерации, чтобы увидеть, достигли ли они критического состояния «выход» или «катастрофы». Если это состояние достигнуто, вычисление останавливается, пиксель рисуется и проверяется следующая точка x , y .
Цвет каждой точки показывает, как быстро значения достигли точки выхода. Часто черный цвет используется для отображения значений, которые не смогли выйти до предела итерации, а для точек, которые вышли, постепенно используются более яркие цвета. Это дает визуальное представление о том, сколько циклов потребовалось до достижения условия выхода.
Для визуализации такого изображения рассматриваемая нами область комплексной плоскости подразделяется на определенное количество пикселей . Чтобы раскрасить любой такой пиксель, пусть будет средней точкой этого пикселя. Итерируем критическую точку 0 под , проверяя на каждом шаге, имеет ли точка орбиты радиус больше 2. В этом случае не принадлежит множеству Мандельброта, и раскрашиваем пиксель в соответствии с количеством итераций, использованных для выяснения. В противном случае продолжаем итерацию до фиксированного количества шагов, после чего решаем, что наш параметр «вероятно» находится в множестве Мандельброта или, по крайней мере, очень близок к нему, и раскрашиваем пиксель в черный цвет.
В псевдокоде этот алгоритм будет выглядеть следующим образом. Алгоритм не использует комплексные числа и вручную имитирует операции с комплексными числами, используя два действительных числа, для тех, у кого нет комплексного типа данных . Программа может быть упрощена, если язык программирования включает операции с комплексными типами данных .
для каждого пикселя (Px, Py) на экране сделайте x0 := масштабированная x-координата пикселя (масштабируется в соответствии со шкалой Мандельброта X (-2,00, 0,47)) y0 := масштабированная координата y пикселя (масштабируется в соответствии со шкалой Y Мандельброта (-1,12, 1,12)) х := 0.0 у := 0.0 итерация := 0 макс_итерация := 1000 пока (x^2 + y^2 ≤ 2^2 И итерация < макс_итерация) делать xтемп := x^2 - y^2 + x0 у := 2*x*y + y0 x := xtemp итерация := итерация + 1
цвет := палитра[итерация] график(Px, Py, цвет)
Здесь, связывая псевдокод с , и :
и так, как видно из псевдокода при вычислении x и y :
Для получения цветных изображений множества присвоение цвета каждому значению количества выполненных итераций можно осуществить с помощью одной из множества функций (линейной, экспоненциальной и т. д.).
Вот код, реализующий вышеуказанный алгоритм на Python :
импортировать numpy как np импортировать matplotlib.pyplot как plt# настройка параметров ( эти значения можно изменить) xDomain , yDomain = np.linspace ( -2 , 1.5 , 500 ), np.linspace ( -2 , 2 , 500 ) bound = 2 power = 2 # любое положительное значение с плавающей точкой max_iterations = 50 # любое положительное целочисленное значение colormap = ' magma' # установить любую допустимую цветовую карту matplotlib # вычисление двумерного массива для представления множества Мандельброта iterationArray = [] for y in yDomain : row = [] for x in xDomain : c = complex ( x , y ) z = 0 for iterationNumber in range ( max_iterations ): if ( abs ( z ) >= bound ): row . append ( iterationNumber ) break else : z = z ** power + c else : row . append ( 0 ) iterationArray.append ( строка )# построение графика данных ax = plt . axes () #plt. rc('text', usetex = True) # раскомментируйте эту строку, чтобы включить использование tex при установке LaTeX ax . set_aspect ( 'equal' ) graph = ax . pcolormesh ( xDomain , yDomain , iterationArray , cmap = colormap ) plt . colorbar ( graph ) plt . xlabel ( "Real-Axis" ) plt . ylabel ( "Imaginary-Axis" ) plt . title ( 'Mandelbrot set for $z_{{new}} = z^{{ {} }} + c$' . format ( power )) plt . show ()
Значение power
переменной может быть изменено для генерации изображения эквивалентного набора мультибротов ( ). Например, настройка создает связанное изображение.power = 5
Множество Мандельброта широко считается самым популярным фракталом [43] [ 44] и неоднократно упоминается в популярной культуре .