В детстве мне крупно повезло. Когда я учился в восьмом классе, в нашем доме появился всамделишный компьютер ZX Spectrum 128, который подключался к нашему домашнему телевизору и позволял почувствовать себя программистом. После школы, кое-как разобравшись с уроками, я крепко залипал перед экраном и старался успеть до прихода родителей с работы (телевизор-то на всех один), сотворить что-нибудь сногсшибательное. Творил я тогда на неотъемлемом от компьютера, и даже от его клавиатуры, языке BASIC, а источником вдохновения служили журналы «Наука и жизнь», «Техника молодёжи» и «В мире науки» (перевод «Scientific American»), в которых к концу 80-х начали появляться регулярные рубрики для любителей ЭВМ. В результате многочасового сидения перед телевизором я ожидаемо приобрёл близорукость, однако вместе с очками пришла убеждённость в том, что математика, даже школьная, может быть безумно красивой и интересной!
В ноябрьском номере журнала «В мире науки» за 1986 год появилась статья, в которой рассказывалось, как с помощью очень простых вычислений можно генерировать на экране необычные, сложные и на удивление красивые картины. Речь в ней идёт о функциях на модулярных арифметиках, о динамических системах и клеточных автоматах. Среди прочих приводилась очень простая итерационная схема некоего Барри Мартина, опубликованная им ранее в статье «Graphic Potential of Recursive Functions»:
При многократном применении (итерациях) это преобразование из точки на плоскости порождает множество, обладающее причудливой и гармоничной структурой. Разнообразные картины можно получать, изменяя три параметра ,
и
, начальную точку и масштаб изображения. Цвет точек определяется шагом итерации. Алгоритм предельно прост:
x = 0, y = 0
a = 1, b = 3, c = 0
col = 0
while true
(x, y) = (y - sign(x)*sqrt(abs(b*x + c)), a - x)
col = col + 1
if col > 10000
поменять цвет точки
col = 0
end
нарисовать точку с координатами (x, y)
end
![Тот самый номер журнала до сих пор хранится в домашней библиотеке. В детстве мне крупно повезло.-2](https://www.pvsm.ru/images/2024/05/30/slojnaya-krasota-v-prostoi-formule-5.jpg)
![Сложная красота в простой формуле - 6 В детстве мне крупно повезло.-2-2](https://www.pvsm.ru/images/2024/05/30/slojnaya-krasota-v-prostoi-formule-6.jpg)
![Сложная красота в простой формуле - 7 В детстве мне крупно повезло.-2-3](https://www.pvsm.ru/images/2024/05/30/slojnaya-krasota-v-prostoi-formule-7.jpg)
![Сложная красота в простой формуле - 8 Сложная красота в простой формуле - 8](https://www.pvsm.ru/images/2024/05/30/slojnaya-krasota-v-prostoi-formule-8.jpg)
![Сложная красота в простой формуле - 9 Сложная красота в простой формуле - 9](https://www.pvsm.ru/images/2024/05/30/slojnaya-krasota-v-prostoi-formule-9.jpg)
![Сложная красота в простой формуле - 10 Сложная красота в простой формуле - 10](https://www.pvsm.ru/images/2024/05/30/slojnaya-krasota-v-prostoi-formule-10.png)
Этот способ генерации сложных картин настолько прост, что я смог реализовать его даже на мучительно медленном Спектруме, получая обалденные изображения, которые называл «салфетками». Ну, а сейчас я за часик набросал для вас интерактивный рисователь «салфеток Мартина», с которым вы можете поиграть сами. А вот тут реализован эффектный «полёт» сквозь это множество.
Я очень рекомендую этот способ генерации изображений тем, кто хочет заинтересовать детей программированием и математикой. Он очень легко кодируется на чём угодно и производит впечатление на зрителей.
Круто, а почему так?
Но что же такого таится в мартиновской формуле, что способно порождать эту красоту? Можно ли как-то объяснить все эти пузыри, ритмичные мотивы, перетекающие друг в друга симметрии? Как вообще анализируют подобные системы?
Занимается этим раздел математики, который называется теорией динамических систем, граничащий с теорией хаоса. Я не буду здесь глубоко влезать в теорию, сосредоточившись на объяснении основных структур, а больше даже — на красивых картинках.
Изобилие параметров в формуле Мартина излишне. Чтобы проявить все существенные свойства этого отображения, достаточно коэффициента , при фиксированных значениях
и
. Таким образом, мы рассмотрим упрощённое преобразование, которое обозначим как
:
Его, в свою очередь, можно представить композицией двух простых преобразований — нелинейного искажения , которое, не меняя координат
, сдвигает точки вдоль
, как показано на картинке ниже, и поворота на 90° против часовой стрелки
:
![Нелинейная трансформация и поворот, образующие преобразование . Нелинейная трансформация и поворот, образующие преобразование M.](https://www.pvsm.ru/images/2024/05/30/slojnaya-krasota-v-prostoi-formule-21.gif)
Коэффициент приобретает теперь вполне определённый смысл: он отвечает за масштаб нелинейного сдвига. Важной особенностью обоих этих преобразований является то, что они сохраняют площади, а значит и преобразование
, искажая пространство, не сжимает или растягивает его, а только сдвигает и поворачивает. Таким образом, при многократном применении преобразования, точки пространства перемешиваются, не стягиваясь в точку и не разбегаясь на бесконечность.
Перемешивание качественно объясняет появление хаотичных областей, в которых не угадывается какой-либо структуры. Однако куда больше хаоса наш глаз привлекают организованные структуры. Обратите внимание на то, как при перемешивании постепенно выявляются три каплеобразные области, которые переходят друг в друга не сильно изменяясь. Они называются резонансами и соответствуют точкам, которые циклично переходят друг в друга под действием нашего преобразования. Вокруг резонансных точек вместо перемешивания происходит только вращение пространства.
Резонансы возникают между поворотом , который имеет период 4 (через четыре поворота на 90 ° всё точки возвращаются на место) и смещениями нелинейного преобразования
. Из-за этого точки в разной степени недоворачиваются на положенные 90°, а поскольку смещение гладко и неравномерно, то большая часть точек никогда не вернётся на место, сколько их ни крути. Однако, каким-то точкам, всё-таки повезёт, и смещение с последующим поворотом сможет вернуть их через 2, 3, 5, 7 и более итераций. Это явление порождает точки, неподвижные для многократно применяемых преобразований, таких как
и так далее.
Теперь мы можем детально разобрать происхождение основных элементов «салфетки Мартина», рождающихся из различных начальных точек.
![Семейство траекторий для . Семейство траекторий для b=1.](https://www.pvsm.ru/images/2024/05/30/slojnaya-krasota-v-prostoi-formule-30.png)
Хаотические облака происходят в результате перемешивания пространства, а внутри них располагаются «пузыри», окружающие резонансы различного порядка. Эти пустоты на самом деле не пусты, они заполнены кольцевыми орбитами, демонстрирующими не перемешивание, а вращение пространства. Поскольку смещение гладко, то соседи резонансных точек немного недоворачиваются на каждом цикле, и по мере накопления, результаты итераций заполняют замкнутую орбиту. Это недоворачивание окрестностей резонанса тоже может оказаться в резонансе с периодом преобразования
. В таком случае мы увидим, как овальная орбита сама распадается на цепочку полюсов более высокого порядка. Так на предыдущей картинке образовались симпатичные оранжевые колечки, четвёрками окружающие синие точки резонанса с периодом 17.
Между резонансами и хаотическими областями есть тесная связь. Резонансы порождаются так называемыми эллиптическими неподвижными точками преобразования , или полюсами, именно они окружены овальными траекториями. Но полюсы не могут появляться сами по себе: окружающие их овальные орбиты неизбежно пересекутся, образуя неподвижные точки другого типа — седловые точки. Эти точки неустойчивы, и соседние с ними точки под действием отображения
экспоненциально разбегаются от седловых точек в разные стороны. Именно это разбегание и порождает хаотические области, которые заполняют пространство между упорядоченными областями, окружающими полюсы. Дело в том, что постоянно разбегаясь от седловых точек, их окресности обречены всё время оказываться замкнутыми в пределах одной сложной структуры: странного аттрактора. Подробнее об этом я рассказывал в серии статей, посвящённых динамическому хаосу.
Седловые точки соединяются особыми орбитами — инвариантными гетероклиническими многообразиями. Звучит, может быть, непонятно, но, согласитесь, красиво. А выглядят эти многообразия ещё красивее!
При любом значении параметра преобразование
оставляет на месте линию
. Именно она и является инвариантным многообразием этого преобразования. После поворота, она превращается в линию
, и её отображение преобразованием
выявляет множество всех седловых точек и гетероклинических орбит, которые их соединяют. Смотрите, как красиво они выявляют тонкие структуры хаотических областей для различных значений параметра
:
![Сложная красота в простой формуле - 42 В детстве мне крупно повезло.-8](https://www.pvsm.ru/images/2024/05/30/slojnaya-krasota-v-prostoi-formule-42.png)
![Сложная красота в простой формуле - 43 В детстве мне крупно повезло.-8-2](https://www.pvsm.ru/images/2024/05/30/slojnaya-krasota-v-prostoi-formule-43.png)
![Сложная красота в простой формуле - 44 В детстве мне крупно повезло.-8-3](https://www.pvsm.ru/images/2024/05/30/slojnaya-krasota-v-prostoi-formule-44.png)
![Сложная красота в простой формуле - 45 Сложная красота в простой формуле - 45](https://www.pvsm.ru/images/2024/05/30/slojnaya-krasota-v-prostoi-formule-45.png)
![Сложная красота в простой формуле - 46 Сложная красота в простой формуле - 46](https://www.pvsm.ru/images/2024/05/30/slojnaya-krasota-v-prostoi-formule-46.png)
Наконец, к картине инвариантных многообразий можно добавить красок. Для этого наложим их на карту скоростей с которой каждая точка пространства удаляется от своих соседей под действием преобразования :
![Сложная красота в простой формуле - 48 Сложная красота в простой формуле - 48](https://www.pvsm.ru/images/2024/05/30/slojnaya-krasota-v-prostoi-formule-48.png)
![Сложная красота в простой формуле - 49 Сложная красота в простой формуле - 49](https://www.pvsm.ru/images/2024/05/30/slojnaya-krasota-v-prostoi-formule-49.png)
![Сложная красота в простой формуле - 50 Сложная красота в простой формуле - 50](https://www.pvsm.ru/images/2024/05/30/slojnaya-krasota-v-prostoi-formule-50.png)
![Сложная красота в простой формуле - 51 Сложная красота в простой формуле - 51](https://www.pvsm.ru/images/2024/05/30/slojnaya-krasota-v-prostoi-formule-51.png)
![Сложная красота в простой формуле - 52 Сложная красота в простой формуле - 52](https://www.pvsm.ru/images/2024/05/30/slojnaya-krasota-v-prostoi-formule-52.png)
![Сложная красота в простой формуле - 53 Сложная красота в простой формуле - 53](https://www.pvsm.ru/images/2024/05/30/slojnaya-krasota-v-prostoi-formule-53.png)
![Сложная красота в простой формуле - 54 Сложная красота в простой формуле - 54](https://www.pvsm.ru/images/2024/05/30/slojnaya-krasota-v-prostoi-formule-54.png)
Для полноты картины здесь можно полюбоваться тем, что происходит с этой красотой при плавном изменении параметра (осторожно, тяжёлый GIF).
Ещё со времени моих экспериментов на Спектруме меня не переставало удивлять, как сухая математика позволяет получать элегантные и гармоничные картины, сравнимые по «креативности» с человеческой фантазией или творениями живой природы. Благодаря этому удивлению я и стал профессионально заниматься теорией динамического хаоса, которая помогает наслаждаться красотой не только внешней, но и внутренней — в логике и неожиданных взаимосвязях между разными объектами и концепциями.
Автор: Сергей Самойленко