Вместо того чтобы записывать все члены последовательности, я мог бы определить ее как итерацию x → 2x, в которой первый член равен 1:
1 → 2
2 → 4
4 → 8
И так далее.
Итеративность этого процесса обусловлена тем, что результаты каждого действия (в данном случае удвоения) используются в качестве исходных данных для следующего действия. Итерация — это система с обратной связью: число, полученное на выходе, снова подается на вход, обеспечивая получение нового числа, и т. д.
А теперь давайте рассмотрим простую итерацию x → x2.
Если мы начнем с 1, то получим следующие значения:
1 → 12 = 1
1 → 1
1 → 1
Другими словами, эта последовательность состоит из бесконечного количества единиц.
Если начнем с 2, последовательность будет такой:
2 → 22 = 4
4 → 16
16 → 256
256 → 65536 → …
Эта последовательность стремится к бесконечности.
Если же последовательность начинается со значения 0,1, тогда мы получим:
0,1 → (0,1)2 = 0,01
0,01 → 0,0001
0,0001 → 0,00000001 → …
Эта последовательность стремится к нулю.
Мы можем обобщить поведение всех чисел, принимающих участие в этой итерации. Если положительное число n больше 1, его квадрат n2 больше n, а значит, числа, полученные посредством итерации, становятся все больше. Если положительное число n меньше 1, тогда n2 составляет долю от n, то есть числа, полученные посредством итерации, все время уменьшаются и стремятся к нулю. Поскольку квадрат отрицательного числа — это положительное число, все числа меньше −1 стремятся к бесконечности, а все отрицательные числа от −1 до 0 — к нулю.
Назовем числа, которые стремятся к бесконечности, словом «беглецы», а числа, которые не делают этого, — словом «узники». В случае итерации x → x2 мы видели, что число 2 — это беглец, а числа 1 и 0,1 — узники. В оставшейся части главы мы будем искать узников любой итерации, которых обозначим как «множество узников». В итерации x → x2 множество узников — это числа от −1 до 1; на представленном ниже рисунке они отмечены жирной линией.
Множество узников итерации x → x2
Рассмотрим новую итерацию x → x2 + c, где c — исходное значение итерации. Другими словами, наша система с обратной связью поглощает немного больше информации, чем обычно. Она начинает с числа c, возводит его в квадрат и прибавляет c, возводит результат в квадрат и прибавляет c, возводит результат в квадрат и прибавляет c и т. д. Это небольшое изменение правил влечет за собой серьезные последствия в плане определения того, какие исходные значения относятся к узникам, а какие — к беглецам.
Начнем с числа 1, которое, как мы выдели выше, является узником в итерации x → x2. В случае итерации x → x2 + c оно становится беглецом (обратите внимание, что мы начинаем с 1, а значит, c = 1):
1 → 12 + 1 = 2
2 → 22 + 1 = 5
5 → 26
26 → 677 → 458330 → …
А теперь давайте посмотрим, что произойдет с числом −2, которое является беглецом в итерации x → x2. В случае итерации x → x2 + c оно превращается в узника (обратите внимание, что мы начинаем с −2, значит, c = −2):
–2 → –22 – 2 = 2
2 → 22 –2 = 2
2 →2
2 →2
…
Оказывается, в итерации x → x2 + c множество узников содержат числа от −2 до 0,25, как показано на рисунке ниже.
Множество узников итерации x → x2 + с
Теперь поиграем в игру «узники против беглецов» на комплексной плоскости — системе координат, в которой каждая точка определяется комплексным числом. Для начала давайте вспомним, как на комплексной плоскости выполняется операция умножения: умножение на число i эквивалентно повороту против часовой стрелки на 90 градусов. В более общем виде, когда два комплексных числа умножаются друг на друга, углы, которые образуют соответствующие точки с горизонтальной осью, необходимо сложить, а расстояния от начала координат — умножить. (Обозначим комплексные числа символом z, а не a + bi.) На представленном ниже рисунке комплексное число z1 находится под углом θ градусов к горизонтали, на расстоянии r, а число z2 — под углом ϕ градусов к горизонтали, на расстоянии R. Таким образом, комплексное число z1 × z2 расположено под углом θ + ϕ градусов по отношению к горизонтальной оси, на расстоянии r × R. Теперь становится понятно, почему умножение на i — это четверть оборота. Число i — это точка на комплексной плоскости с координатами (0, 1), одна единица вверх по мнимой оси, под прямым углом к горизонтали. Следовательно, умножение комплексного числа, представленного соответствующей точкой на комплексной плоскости, на число i, сводится к повороту на 90 градусов против часовой стрелки и умножению расстояния этой точки от начала координат на 1, значит, расстояние остается прежним — это и есть математическое описание четверти оборота.
Умножение на комплексной плоскости
Что происходит с комплексными числами в итерации z → z2?
Начнем с мнимого числа i:
i → i2 = –1
–1 → 1
1 → 1
Следовательно, i принадлежит множеству узников.
Существует более быстрый способ обнаружить множество узников на комплексной плоскости с использованием информации об умножении комплексных чисел. При умножении двух комплексных чисел мы суммируем углы и умножаем расстояния. Следовательно, для возведения комплексного числа в квадрат необходимо удвоить его угол и возвести в квадрат расстояние. Рассмотрим единичную окружность — с радиусом 1 и центром в начале координат. Все точки такой окружности находятся на расстоянии 1 от начала координат, а это значит, что квадрат любой из этих точек расположен на расстоянии 12 = 1 от начала координат. Другими словами, квадрат числа, соответствующего точке на единичной окружности, остается на единичной окружности. Тогда в случае итерации z → z2 все точки на окружности должны принадлежать к множеству узников. Аналогичным образом, если расстояние от точки до начала координат меньше 1, квадрат числа, соответствующего этой точке, находится ближе к началу координат и в процессе итерации будет приближаться к нему все больше. Следовательно, все точки, которые расположены внутри единичной окружности, тоже принадлежат к множеству узников. С другой стороны, если расстояние от точки до начала координат больше 1, квадрат числа, соответствующего этой точке, находится дальше от начала координат и в процессе итерации будет отдаляться от него все больше и больше. Таким образом, в случае итерации z → z2 множество узников представляет собой единичный круг, показанный на рисунке ниже.
Множество узников в итерации z → z2
Теперь приготовьтесь к самому интересному. Нам необходимо определить множество узников в итерации z → z2 + c, где c — начальное значение итерации. Давайте подумаем, что означает эта итерация на комплексной плоскости. Мы берем точку c, затем возводим ее в квадрат, что поворачивает ее вокруг начала координат и возводит в квадрат ее расстояние от начала координат. Затем мы прибавляем c, что смещает эту точку на комплексной плоскости на расстояние c. После этого новая точка поворачивается, а ее расстояние от начала координат возводится в квадрат, прежде чем она будет снова смещена на расстояние c. Таким образом, данная итерация представляет собой бесконечное чередование таких операций, как вращение, смещение и перенос в каждой точке на комплексной плоскости. Посредством логических умозаключений невозможно определить, как будет выглядеть множество узников в данном случае. Единственный способ — выполнить итерации для огромного количества точек, что до появления компьютеров было неосуществимо.
В 1979 году работавший в компании IBM французский математик Бенуа Мандельброт заинтересовался итерацией z → z2 + c. Его первые распечатки показали множество узников в форме капли с крохотными разводами, напоминающими маленькие брызги, отделившиеся от основной капли. Мандельброт оставил своим ассистентам записку, в которой предупреждал, что эти дефекты появились не из-за ошибки компьютера, и просил не удалять их с распечаток. Увеличив степень детализации этих участков, Мандельброт увидел, что они состоят из удивительных узоров, соединенных с множеством узников крохотными ответвлениями. Постепенно сформировалась полная картина множества узников. Она напоминала жука-долгоносика с игольчатым панцирем и не походила ни на одну известную геометрическую фигуру.