≡ Передовица » Макулатура » ИиО » Фрактальные кластеры
Фрактальные кластеры (N5/1989)
Речь идет об одноименной программе автора.
А.Шипилевский. Группа сайта просит вас связаться с нами! (ЗАЧЕМ ЭТО?) Моделирование береговой линии «Вначале сотворил Бог небо и землю. Земля же была безвидна и пуста, и тьма над бездною, и Дух Божий носился над водою». Эта живописная картина, нарисованная в первых стихах книги Бытия, послужит отправной точкой исследовательской экспедиции, которую мы предпринимаем ныне на ковчеге «Берег». Судно бросило якорь невдалеке от первозданного и пока ещё идеально ровного берега, отделяющего землю от воды. Господь, только что закончивший свои труды, не озаботился созданием иссечённой береговой линии в её современном варианте - с песчаными плёсами, скалистыми островами и потайными бухтами. Он, видимо, полагал себя творцом не форм, а законов и, не стремясь к разнообразию, прочертил по линейке прямую, положив по одну сторону от неё сушу, а по другую оставив воду. Находящиеся на ковчеге исследователи присутствуют при историческом моменте. На линии горизонта показались первые волны. За дальностью расстояния точечно видно только их гребни. Гонимые безжалостным ветром, меняющимся ежеминутно, волны мечутся из стороны в сторону, но неуклонно приближаются к берегу. Наблюдатели на судне отмечают, что каждая волна на каждом шаге движения практически случайно выбирает одно из трёх возможных направлений к берегу. Этот характер движения волн сохраняется до момента их столкновения с берегом. Волна, накатывающаяся на элемент берега, либо уничтожает его, если её сила достаточна для разрушения данной береговой породы, либо, отразившись, продолжает движение по тому же закону. В программе «БЕРЕГ», моделирующей этот процесс, для каждого элемента берега выбирается случайное целое число, лежащее в некотором наперёд заданном интервале. Оно является критерием твёрдости и задаёт количество волн, необходимых для разрушения данного берегового элемента. Границы всего интервала, таким образом, определяют общий разброс по условной твёрдости береговых пород. При каждом ударе волны о берег из критерия твёрдости берегового элемента вычитается единица. Если после этого критерий становится нулевым, волна смывает участок берега, с которым вошла в контакт, и, выполнив свою миссию, исчезает. Вместо «отработавшей» волны на линии горизонта тут же появляется новая. Если критерий не равен нулю после вычитания, волна вновь выбирает одно из трёх случайных направлений движения. Для улучшения динамики работы модель линия горизонта вплотную приближена к линии первоначального берега, и волны, появляющиеся в случайных местах линии горизонта, «обслуживаются» поодиночно, так что в каждый момент времени существует лишь одна из них. Главной частью алгоритма модели, приведённого ниже, является бесконечный цикл, выпускающий всё новые и новые волны. нач Рисовать первоначальный берег. Выбрать для каждого элемента берега критерий его твёрдости. нц Выбрать случайные координаты волны на линии горизонта в качестве текущих координат. Смыва берега нет. нц пока смыва берега нет Рисовать волну по текущим координатам. Выбрать одно из трёх случайных направлений и вычислить новые координаты волны. если по новым координатам есть берег то Уменьшить критерий твёрдости берега на 1. если критерий твёрдости берега равен О то Стереть волну по текущим координатам. Стереть берег по новым координатам. Смыв берега есть. все иначе Стереть волну по текущим координатам. Сделать новые координаты текущими. все кц кц кон Стирание волны и берега производится цветом, выбранным для изображения водной глади. Любители оптимизировать свои программы могут подумать над тем, как обойтись без большого массива, сохраняющего для каждого берегового элемента его текущий критерий твёрдости. Наша программа «ФРАКТАЛЬНЫЕ КЛАСТЕРЫ», моделирующая описанный процесс в несколько более сложной интерпретации, позволяет выпускать до 256 волн одновременно. На рис. 1 приведена характерная береговая линия. Здесь отдельные точки представляют собой движущиеся по направлению к берегу волны. Варьируя твёрдость береговых пород, можно получать многие разновидности берегов - от песчаных плёсов до скалистых фиордов. Берега, представленные на картинках, имеют «модную» фрактальную структуру, по своим статистическим характеристикам симметричную относительно растяжения и сжатия (желающих ближе познакомиться с фракталами отсылаем к источникам [1, 2]), а описанная модель, с помощью которой они получаются, есть модель агрегации, ограниченной диффузией [3]. Её суть заключается в том, что модельная частица, проникшая (диффундировавшая) в анализируемую среду, блуждает в ней согласно определённым законам до тех пор, пока не столкнётся с имеющимся там первоначальным телом (агрегатом). Как только это произошло, частица присоединяется к агрегату, дополняя его. В результате растёт новообразование - кластер, структура которого и является обсуждаемым предметом в рамках данной модели. В данном случае, правда, использована агрегация «с точностью до наоборот», т. е. блуждающая частица, сталкиваясь с агрегатом, не присоединяется к нему, а, напротив, выбивает элемент агрегата. Удивительно и любопытно, что при помощи простой и даже примитивной модели агрегации, ограниченной диффузией, удаётся получить наглядное и правдоподобное представление о механизме весьма сложных естественных процессов, не вполне исследованных в современной науке. Моделирование электролиза Сделав несколько маленьких изменений в предыдущем алгоритме, можно превратить его в программу «ЭЛЕКТРОЛИЗ», демонстрирующую процесс электролитического восстановления металла. Во время работы программы в верхней части экрана появляются точки, поведение которых аналогично поведению волн в программе «БЕРЕГ». Они так же опадают книзу, испытывая при этом случайные горизонтальные отклонения. Однако это уже не первобытные волны, а ионы металла, «с боем» продвигающиеся к катоду в электролитической ванне. Катод в виде тонкой линии находится в самом низу. Как только очередной ион достигает либо катода, либо поверхности металла, уже осевшего на него, он, восстанавливаясь, прилипает, а вместо него в верхней части экрана появляется новый, диффундировавший в ванну. При этом на каждом шаге передвижения иона следует проверять наличие соседних частиц в непосредственной близости от него. Если их нет, ион продолжает движение, если же сосед обнаружен - прилипает к нему. Те, кто захочет поэкспериментировать с этой моделью, могут ввести в свою программу параметры, задающие некоторый интервал горизонтальных координат, внутри которого вылетающие на экран ионы получают свои начальные значения. Тогда можно будет наблюдать кластеры, получающиеся при потоках диффундирующих частиц различной ширины, а также повозиться с катодами различной конфигурации. На рис. 2 представлен электролитический кластер, получающийся при катоде, сжатом до совсем небольшого отрезка. Отчаянным головам (не боящимся не столько грозящего усложнения программы, сколько падения быстродействия) можно рекомендовать ввести в качестве параметра радиус взаимодействия, увеличивая который исследователь мог бы повышать напряжение на катоде от эксперимента к эксперименту. Программа «ФРАКТАЛЬНЫЕ КЛАСТЕРЫ», реализующая эти и другие возможности моделирования процесса электролиза, позволяет получить весьма любопытные результаты. Вот только два характерных кластера: для нулевого радиуса взаимодействия - рис. 3; для радиуса взаимодействия в 10 ед. - рис. 4. Здесь наблюдается всё та же фрактальная структура, плотность которой резко падает с ростом радиуса взаимодействия. С физической точки зрения это понятно: ион, попавший между двумя случайно образовавшимися бугорками, тем с меньшей вероятностью достигает дна ямки, чем больше радиус взаимодействия частиц, так как, скорее всего, он притянется вершиной одного из бугорков. Таким образом, каждый добавляющийся элемент кластера подавляет возможности параллельного роста в зоне радиуса взаимодействия вокруг себя. Если приложить к кластеру линейку, разместив её параллельно катоду, и считать количество частиц, пересекаемых ею, то станет ясно, что среднее расстояние между частицами примерно равно двум радиусам взаимодействия. К сожалению, фрактальная модель не даёт возможности увидеть симметризованные, дендритные образования, которые должны были бы появляться при достаточно высоких напряжениях на катоде, когда скорость процесса увеличивается настолько, что анизотропные характеристики металла начинают играть решающую роль в формировании кластера. Если же анизотропия отсутствует, модель агрегации, ограниченной диффузией, работает вполне удовлетворительно. Наблюдатели, обладающие воображением, возможно, захотят подумать и об иной интерпретации наших картинок. Изображение на рис. 4 кажется вполне «биологическим». В самом деле, если спускающиеся сверху частицы рассматривать как кванты солнечной энергии, доставляющей участкам деревьев возможность расти, то картина эволюции леса, борьбы деревьев друг с другом, стремления их в высоту становится как нельзя более наглядной. Модель дымохода Заменив катод на две вертикальные (или лучше чуть наклонные) стенки, запуская частицы снизу вверх и переименовав их из ионов в крупицы сажи, мы получим уникальную возможность увидеть происходящее в обыкновенной печной трубе. Изображение на рис. 5 (одна из стенок дымохода) способно, кажется, убедить кого угодно в необходимости своевременной чистки труб. В действительности фрактальная структура сажи в дымоходе представляется весьма вероятной; упоминание об этом можно найти, например, в [3]. Однако желающим добиться здесь большего соответствия реальности придётся повозиться с агрегацией «кластер-кластер», так как летящие частицы сажи слипаются вначале между собой в небольшие подвижные кластеры, а уже последние прилипают к трубе или неподвижному кластеру на ней. По сложности реализации программирование этого механизма достойно любознательных честолюбцев. Моделирование электролиза в поле точечного катода Чрезвычайно интересно смоделировать электролиз в ванне, где точечный катод расположен в центре окружности, играющей роль анода. Каждый ион в этом случае блуждает по ванне во всех направлениях, пока не агрегирует, коснувшись катода. Допущение о случайном блуждании катода в ванне достаточно реалистично при малых электрических полях. В самом деле, силовое действие катодного потенциала должно ограничиваться некоторым радиусом, далее которого катод оказывается экранированным ионами, уже подошедшими ближе этого радиуса. С уменьшением выбранного потенциала катода величина этого радиуса взаимодействия может становиться весьма малой. Лобовое решение задачи может оказаться абсолютно безнадёжным из-за ничтожной вероятности агрегации для частицы, находящейся на сколько-нибудь значительном удалении от катода и перемещающейся в случайных направлениях. Это принципиальное затруднение можно преодолеть, использовав маленькую хитрость. Пусть в начальный момент времени наблюдаемая электролитическая ванна находится на таком удалении от экспериментатора, что кажется очень маленькой и содержит лишь небольшое число различимых и практически точечных областей. За каждый такт времени ион, двигающийся в ванне, проходит расстояние от одной видимой области до другой, выбранное в случайном направлении. Поскольку видимых областей немного, вероятность агрегации велика и вскоре восстановленный ион присоединяется к кластеру. По мере того как кластер растёт, мы приближаемся к ванне и увеличиваем масштаб её представления так, чтобы всегда оставалось не слишком много свободных периферийных элементов, в которых может блуждать ещё не агрегировавший ион. В практической реализации это означает, что вокруг начального кластера или катода выбирается прямоугольное окно, верхняя сторона которого несколько выше самого верхнего элемента кластера, нижняя сторона - ниже самого нижнего элемента, левая сторона - левее самого левого элемента, а правая - правее самого правого. В случайных точках периметра этого окна появляются диффундировавшие ионы, двигающиеся затем в случайных направлениях и отражающиеся от невидимых стенок окна. Если присоединившийся ион оказывается выступающим выше прежней самой верхней точки кластера, верхняя сторона окна отодвигается на шаг вверх. Остальные три стороны ведут себя аналогично. Опишем алгоритм более формально. нач Рисовать катод. Выбрать первоначальное окно. нц Выбрать текущие координаты на периметре окна. Соседей нет. нц пока соседей нет Выбрать случайное направление из восьми. Считать новые координаты, отражая ион от окна. Стереть точку по текущим координатам. Рисовать точку по новым координатам. Сделать новые координаты текущими. Проверить наличие соседей около текущей точки. кц если новая точка самая высокая то Верхнюю сторону окна на линию выше. все если новая точка самая низкая то Нижнюю сторону окна на линию ниже все если новая точка самая левая то Левую сторону окна на линию левее. все если новая точка самая правая то Правую сторону окна на линию правее. все кц кон Программа «СНЕЖИНКА», выполненная по этому алгоритму, наградит зрителя удивительными фрактальными снежинками (рис. 6), структура которых определённо наводит на философские размышления. Наиболее основательные экспериментаторы могут и здесь ввести изменяемый радиус междучастичного взаимодействия, наподобие рекомендованного в программе «ЭЛЕКТРОЛИЗ», или поколдовать над хитростями агрегации «кластер-кластер». Между тем в [3] приводится фотография реального цинкового кластера, появившегося в результате электролиза. Читатели могут сами сделать сравнение действительности с её моделью. Прочие модели Описанный механизм агрегации, ограниченной диффузией, является, по-видимому, неплохим представлением многих естественных процессов, и значение его в естествознании ещё должно уточняться. Укажем на возможность моделирования в рамках данного подхода различных электрических разрядов, образования речного русла, формирования облаков, эволюции некоторых биологических объектов (ветвей деревьев, кораллов и др.). Читатели могут самостоятельно провести исследования границ применимости метода агрегации и его потенциальных приложений. Можно попробовать свои силы, моделируя стекание дождевых капель по оконному стеклу, отражая в своей модели физику процесса; а кого-то, возможно, соблазнит сложная физика молнии в её, конечно, упрощённом описании методом агрегации. При этом трудно ожидать, что в каждом случае наша модель даст безукоризненные результаты. Нет никаких сомнений, что и образование береговой линии, и процесс электролиза, и другие естественные события, которые предлагается описывать с помощью данного механизма, в действительности протекают гораздо сложнее. Однако во всех этих случаях агрегация, ограниченная диффузией, позволяет обнаружить и проследить их философскую общность и в то же время получить результаты, вполне удовлетворительно согласующиеся с действительностью. Программа «ФРАКТАЛЬНЫЕ КЛАСТЕРЫ», моделирующая все описанные процессы, написана на ассемблере ПЭВМ «Агат» и тиражируется нами. Адрес для справок: 428017, Чебоксары, ул. М. Павлова, школа N 27, Шипилевскому А. С.; тел. 24-16-22. Литература 1. В мире науки. 1987. N 2, с. 104-109. 2. В мире науки. 1988. N 1, с. 88-93. 3. В мире науки. 1987. N 3, с. 62-67. Кластером (от англ, cluster - гроздь, пучок, группа) в математике называется множество элементов, сгруппированных по какому-либо признаку в одну группу. В данной статье кластер - односвязное множество точек. * * ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |