Как устроено множество Мандельброта. Центральная кардиоида

image


Хорошо известно, что центральная часть множества Мандельброта представляет из себя кардиоиду. Не просто похожа, а именно ей и является. Сегодня мы пытаемся понять, почему именно кардиоида и что из этого следует.
Данная статья продолжает серию об устройстве множества Мандельброта. Ранее мы изучали свойства возведения в квадрат в комплексной плоскости. Сегодня продвигаемся чуть дальше.

image


Фиг.1 Аналитически построенная кардиоида, наложенная на множество Мандельброта. Отсюда.

Вдруг кто забыл
Множество Мандельбро́та — это «множество таких точек C на комплексной плоскости, для которых рекуррентное соотношение $Z_{n+1} = Z_n^2 + C$ при $Z_0=0$ задаёт ограниченную последовательность» (вики).

Иными словами, на каждом шаге число возводится в квадрат и к нему добавляется константа. Начальное значение всегда (0, 0i), варьируется именно константа. Если за определенное число шагов последовательность осталась в заданных пределах, то значение константы принадлежит множеству.


Интуитивно понятно, что точки кардиоиды порождают в некотором смысле предельные траектории. По аналогии, когда ранее мы разбирали как устроено комплексное возведение в квадрат, такие предельные точки были на единичной окружности. Всё что внутри окружности, быстро схлопывается в ноль. Всё что вне окружности, улетает в бесконечность. Интересны лишь эти предельные точки.

image


Фиг.2 построение кардиоиды. Отсюда.

Уравнение в прямоугольных координатах:
$inline$\\x=2 a \cos (φ)+a\cos (2φ)\\ y=2 a \sin (φ)+a\sin (2φ)$inline$
в нашем случае a=¼

Как и раньше, наш излюбленный тактический приём — «хватит думать, давайте просто посмотрим что там». Поэтому возьмём несколько точек с кардиоиды и посмотрим, что их объединяет.
Начнём с (0.25, i*0.5) просто потому что координаты круглые.

image


Фиг.3 Последовательность, соответствующая константе (0.25, i*0.5).

Константа соответствует углу кардиоиды φ=π/2.

Показаны первые 100 (линиями, для наглядности) и первые 10 000 (точками) переходов. Каждый переход показан в виде двух отрезков/точек — возведение в квадрат и сдвиг на константу.

Похоже, цикл стягивается в точку (0, i*0.5). Легко заметить, что (0, i*0.5) при возведении в квадрат превращается (-0.25, i*0), добавляя к которой константу снова получаем (0, i*0.5). А еще точка (0, i*0.5) лежит на окружности с радиусом 0.5 при угле π/2. И параметр кардиоиды был φ=π/2. Совпадение? Возможно.

Проверяем гипотезу, что константы с кардиоиды стягиваются в точки на окружности с радиусом 0.5. По этой окружности при построении кардиоиды перемещается центр движущейся окружности.

  1. угол φ=0, константа на кардиоиде (0.25, i*0). Стягивается к точке (0.5, i*0).
    $(0.5, i*0)^2 => (0.25, i*0) \\ (0.25, i*0) + (0.25, i*0) => (0.5, i*0)$» /><br />так и есть</li>
<li>угол <img src=, константа на кардиоиде (-0.75, i*0). Стягивается к точке (-0.5, i*0).
    Смотрим картинку.
    image

    Фиг.4 Последовательность, соответствующая константе (-0.75, i*0).

    Здесь для наглядности только точки.
    $(-0.5, i*0)^2 => (0.25, i*0)\\ (0.25, i*0) + (-0.75, i*0) => (-0.5, i*0)$» /><br /></p></li>
<li>Возьмём навскидку, <img src=
    Смотрим картинку.

    image

    Фиг.5 Последовательность, соответствующая $φ=0.88 \pi$.

    Первые 100 переходов показаны линиями, остальные обозначены только точками.
    Да, траектория стягивается к точке на окружности с радиусом ½ и углом 0.88π. Сходится, правда, не очень резво. Проверяем:

    (-0.46488824294, i* 0.18406227634) => (0.18224215685, i*-0.17113677648)
    (0.18224215685, i*-0.17113677648) => (-0.46488824294, i* 0.18406227634)
    Всё верно, эти предельные точки обозначены выше квадратиками как 'limit».


Наверняка это как-то можно получить в аналитической форме. Попробуем.

  1. Точка на предельной окружности с радиусом ½.
    x = ½ cos (φ)
    y = ½ sin (φ)
    на самом деле это комплексное число (½ cos (φ), ½ i sin (φ))
  2. Возводим комплексное число в квадрат, получаем
    (¼ cos (2φ), ¼ i sin (2φ))
  3. Константа (пусть С) для этого угла находится на кардиоиде, по формуле:
    Re© = ½ cos (φ) — ¼ cos (2φ)
    Im© = ½ sin (φ) — ¼ sin (2φ)
  4. Складываем и получаем
    (½ cos (φ), ½ i sin (φ))
  5. Что и требовалось доказать


image


Фиг.6 Соответствие кардиоиды и предельной окружности. Шаг — 1 градус.
В двух точках они пересекаются.

Хозяйке на заметку, последовательность $inline$¼ + (¼ + (¼ + (¼ + (¼ + …)^2)^2)^2)^2$inline$ сходится к ½ что на первый взгляд не так уж и тривиально.

Обобщаем


Последовательности, стартующие с кардиоиды, сходятся к точкам на окружности. А что с другими точками, куда сходятся они, нет ли более общей закономерности?

Попробуем.

  1. Исходная точка
    $Re(C) = x_0\\ Im(C) = y_0$
  2. Сходится к искомой точке
    $x = r \cos (φ)\\ y = r \sin (φ)$
  3. Возводим комплексное число в квадрат, получаем
    $(r^2\cos (2φ), r^2 i \sin (2φ))$
  4. Складываем с константой и получаем
    $inline$r^2cos (2φ) + x_0 = r\cos (φ)\\ r^2sin (2φ) + y_0 = r\sin (φ)\\$inline$
    $inline$r^2(2 \cos^2 (φ) — 1) — r\cos (φ) + x_0 = 0\\ r\sin (φ) (2 r \cos (φ) — 1) + y_0 = 0\\$inline$
    $inline$r\cos (φ) (2 r\cos (φ) — 1) — r^2+ x_0 = 0\\ r\sin (φ) (2 r\cos (φ) — 1) + y_0= 0\\$inline$
    $x (2 x - 1) - (x^2 + y^2) = -x_0\\ y (2 x - 1) = -y_0\\$
  5. Или, что то же самое
    $x^2 + y^2 - x= -x_0\\ y (2 x - 1) = -y_0$
    это обратная задача — получение констант из финальных точек
  6. Прямая задача, если нужны x, y из $x_0, y_0$
    $y = -y_0 / (2 x - 1)\\ x^2 - x + y_0^2 / (2 x - 1)^2 = -x_0$

    $x^2 - x + y_0^2 / (4 x^2 - 4 x + 1) = -x_0\\ x^2 - x => z\\ z + y_0^2 / (4 z + 1) = -x_0\\ (z + x_0)(4 z + 1) = y_0^2$» /><br />…<br /></p></li>
</ol>

<p><br />Кстати, в качестве проверки, если x и y поместить на окружность радиусом 0.5, <br /><img src= должны оказаться на кардиоиде.

    image


    Фиг.7 Аналитически полученные константы для предельных точек с разных окружностей.

    Здесь показаны результаты решения обратной задачи — по финальным окружностям с центром в начале координат и разными радиусами получены константы С множества Мандельброта.

    1. Как и ожидалось, для окружности с радиусом 0.5 константы находятся на кардиоиде.
    2. Точка (0.25, 0i) изрядно особая, все три кривые её касаются.
    3. Все три случая описываются одной кривой — это улитка Паскаля.
    4. Кардиоида — вырожденный случай улитки Паскаля.
    5. В силу п.2 в улитке синхронно меняются два параметра — радиус окружностей и смещение на радиус векторе подвижной окружности.


    Но позвольте, скажет внимательный читатель, константы для предельной окружности с радиусом 0.6 находятся за пределами множества Мандельброта, как же они могут иметь предельные точки?

    Фокус вот в чем. Если бы последовательность с такой константой смогла достичь предельной точки, то упокоилась бы в ней с миром. Но она не может в нее попасть. Если для констант внутри или на кардиоиде предельные точки являются притягивающими, то для остальных — отталкивающими.

    Разберем на примере. Сначала простой случай — движение по реальной оси, положительной её части.

    Для реальных чисел всё сводится к $Y_{i+1} = Y_i^2 +C$. Это рекуррентное уравнение можно представить следующим образом

    image


    Фиг.8 представление рекуррентной последовательности для С=0.25. Отсюда.

    Зеленым показана собственно последовательность, которая «бьётся» между 
    $Y$ и $Y^2+0.25$.
    Будь константа чуть больше (0.26), между $Y$ и $Y^2+0.26$ осталась бы щель. Последовательность проскользнула бы в эту щель и начала разгоняться.

    Если чуть меньше (0.24), $Y$ и $Y^2+0.24$ сомкнулись бы с приличным углом и последовательность сошлась бы намного быстрее.

    С комплексными константами принципиально всё то же, но не так очевидно. Для наглядности возьмём уже знакомую точку на кардиоиде с $φ=0.88\pi$ и построим траектории с небольшими отклонениями от нее.

    image


    Фиг.9 отклонение на 0.0001 вправо.

    Здесь уже знакомые нам первые 10 000 переходов с кардиоиды (угол 0.88π) под меткой »0.88pi» и 10 000 точек траектории, которая начинается на 0.0001 больше по X (т.е. внутрь кардиоиды) (»0.88pi-d»). Разница существенная, сходится гораздо быстрее. Возьмём для наглядности большее возмущение, 0.001.

    image


    Фиг.10 отклонение на 0.001 вправо.

    image


    Фиг.11 отклонение на 0.01 вправо. Отчетливо видно что предельная точка не лежит на предельной окружности.

    image


    Фиг.12 отклонение на 0.1 вправо.

    И наконец.

    image


    Фиг.13 Старт с точек внутри, на и вне кардиоиды.

    При сдвиге наружу от кардиоиды сначала последовательность стремится к предельной точке, потом протискивается в «щель», после чего начинает стремительно разгоняться наружу.

    Вообще, снаружи от кардиоиды следует быть очень осторожным, легко наступить во фрактальную «бахрому», с которой станем разбираться позже.

    И напоследок.

    image


    Фиг.14 вычисленные итерационным путём финишные точки внутри кардиоиды. Легко проверить по формулам.

    Численный эксперимент. Здесь мы стартуем с окружностей со смещенным центром (-0.25, i*0) и радиусами 0.4 и 0.5. Шаг сканирования — 1 градус. Показаны начальная и конечная точки последовательности, ограниченной 1000 итераций. Хаос, возникший при приближении окружности с радиусом 0.5 к углу π вызван тем, что в этой окрестности наша стартовая окружность смыкается с кардиоидой и сходимость последовательности замедляется. 1000 итераций просто не хватило, чтобы прийти к предельной точке.

    Вот так, с помощью Википедии и математики школьного уровня, мы более-менее выяснили что происходит внутри центральной кардиоиды.

    В следующий раз займёмся «хвостом» множества Мандельброта — отрицательной частью реальной оси константы и её окрестностями.

    © Habrahabr.ru