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)$
    так и есть
  2. угол $?=\pi$, константа на кардиоиде (-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)$
  3. Возьмём навскидку, $?=0.88 \pi$
    Смотрим картинку.

    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$


Кстати, в качестве проверки, если x и y поместить на окружность радиусом 0.5,
$(x_0, y_0)$ должны оказаться на кардиоиде.

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 итераций просто не хватило, чтобы прийти к предельной точке.

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

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