d = log(3)/log(2) ~ 1,5850.
Рис. 2.3.2. Построение ковра Серпинского
Очевидно, что суммарная площадь частей, выкинутых при построении, в точности равна площади исходного треугольника. На первом шаге мы выбросили ј часть площади. На следующем шаге мы выбросили три треугольника, причем площадь каждого равна ј 2 площади исходного. Рассуждая таким образом, мы убеждаемся, что полная доля выкинутой площади составила:
1/4 + 3*(1/42) + 32*(1/43) + … + 3n-1*(1/4n) + … .
Эта сумма равна 1 (доказательство в [1]). Следовательно, мы можем утверждать, что оставшееся множество S, то есть ковер, имеет площадь меры нуль. Это выделяет множество Sв разряд «совершенного», в том смысле, что оно разбивает свое дополнение на бесконечное число треугольных областей, обладая при этом нулевой толщиной.
3. L-системы.
Понятие L-систем, тесно связанное с самоподобными фракталами, появилось только в 1968 году благодаря Аристриду Линденмайеру. Изначально L-системы были введены при изучении формальных языков, а также использовались в биологических моделях селекции. С их помощью можно строить многие известные самоподобные фракталы, включая снежинку Коха и ковер Серпинского. Некоторые другие классические построения, например кривые Пеано (работы Пеано, Гильберта, Серпинского), также укладываются в эту схему. И конечно, L-системы открывают путь к бесконечному разнообразию новых фракталов, что и послужило причиной их широкого применения в компьютерной графике для построения фрактальных деревьев и растений. Рассмотренные в данной курсовой работе L-системы ограничиваются случаем детерминированных L-систем и графикой на плоскости.
Для графической реализации L-систем в качестве подсистемы вывода используется так называемая тертл-графика (turtle– черепаха). При этом точка (черепашка) движется по экрану дискретными шагами, как правило прочерчивая свой след, но при необходимости может перемещаться без рисования. В нашем распоряжении имеются три параметра (x,y,a), где (x,y) --- координаты черепашки, a --- направление, в котором она смотрит. Черепашка обучена интерпретировать и выполнять последовательность команд, задаваемых кодовым словом, буквы которого читаются слева направо. Кодовое слово представляет собой результат работы L-системы и может включать следующие буквы:
F --- переместиться вперед на один шаг, прорисовывая след.
b --- переместиться вперед на один шаг, НЕ прорисовывая след.
[ --- открыть ветвь (подробнее см. ниже)
] --- закрыть ветвь (подробнее см. ниже)
+ --- увеличить угол aна величину q
- --- уменьшить угол aна величину q
Размер шага и величина приращения по углу q задаются заранее и остаются неизменными для всех перемещений черепашки. Если начальное направление движения а (угол, отсчитываемый от положительного направления оси Х) не указано, то полагаем а равным нулю.
Несколько примеров иллюстрируют применение команд ветвления (обозначаются ],[) и вспомогательных переменных (обозначаются X, Y, и т.д.). Команды ветвления используются для построения деревьев растений, а вспомогательные переменные заметно облегчают построение некоторых L-систем.
Формально, детерминированная L-система состоит из алфавита, слова инициализации, называемого аксиомой или инициатором, и набора порождающих правил, указывающих, как следует преобразовывать слово при переходе от уровня к уровню (от итерации к итерации). К примеру, можно заменять букву Fпри помощи порождающего правила newf = F-F++F-F, что соответствует L-системе для снежинки Коха, рассматриваемой ниже. Символы +, -, ], [ не обновляются, а просто остаются на тех местах, где они встретились. Обновление букв в данном слове предполагается одновременным, то есть буквы слова одного уровня обновляются раньше любой буквы следующего уровня.
L-система, соответствующая снежинке Коха (рис. 2.2.1), задается следующим образом:
p = p/3
Аксиома: F++F++F
Порождающее правило: newf = F-F++F-F
Графическое представление аксиомы F++F++F --- равносторонний треугольник. Черепашка делает один шаг вперед, затем угол а увеличивается на 2p/3 и черепашка делает еще один шаг.
На первом шаге каждая буква Fв слове-инициаторе F++F++Fзаменяется на F-F++F-F:
(F-F++F-F)+(F-F++F-F)+(F-F++F-F)
Повторяя этот процесс, на втором шаге получим:
F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F+F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F+ F-F++F-F- F-F++F-F++F-F++F-F-F-F++F-F
и т.д. Причем, убедившись на собственном опыте программирования L-систем знаю, что для снежинки Коха на 20-й итерации порождающее правило занимает несколько мегабайт текста !
Вот еще некоторые фракталы, построенные с использованием L-системы:
Рис. 3.1. Дракон Хартера-Хатвея после 12-ти итераций
и его L-система:
p = p/4
Аксиома: FX
Порождающее правило: newf = F
newx = X+YF+
newy = -FX-Y
Рис 3.2. Дерево после 5-ти итераций
и его L-система:
p = p/7
Аксиома: F
Порождающее правило: newf = F[+F]F[-F]F
Рис. 3.3. Квадрат Госпера после 2-х итераций [2]
и его L-система:
p = p/2
Аксиома: -FX
Порождающее правило: newf = F
newx=+FYFY-FX-FX+FY+FYFX+FY-FXFX-FY-FX+FYFXFX-FY-FXFY+FY+FX-FX-FY+FY+FXFX
newy=FYFY-FX-FX+FY+FY-FX-FXFY+FX+FYFYFX-FY+FX+FYFY+FX-FYFX-FX-FY+FY+FXFX-
4. ХАОТИЧЕСКАЯ ДИНАМИКА
4.1. Аттрактор Лоренца
До настоящего момента мы изучали фракталы, которые являются статическими фигурами. Наш подход вполне приемлем до тех пор, пока не возникает необходимость рассмотрения таких природных явлений, как падающие потоки воды, турбулентные завихрения дыма, метеосистемы и потоки на выходе реактивных двигателей. В этих случаях один-единственный фрактал соответствует моментальному снимку данного феномена. Структуры, изменяющиеся во времени, мы определяем как динамические системы. Интуитивно понятно, что динамической противоположностью фрактала является хаос. Это означает, что хаос описывает состояние крайней непредсказуемости, возникающей в динамической системе, в то время как фрактальность описывает крайнюю иррегулярность или изрезанность, присущую геометрической конфигурации.
Достаточно скоро стало ясно, что многие хаотические динамические системы, описывающие феномены окружающего нас мира, устроены очень сложно и не могут быть представлены традиционными методами математического анализа. По-видимому, нет никакой возможности получить математические выражения для решений в замкнутом виде, даже если использовать бесконечные ряды или специальные функции.
Рассмотрим знаменитый пример, весьма наглядно демонстрирующий, что стоит за термином «хаотическая динамика». Эдвард Лоренц из Массачусетского технологического института в 1961 году занимался численными исследованиями метеосистем, в частности моделированием конвекционных токов в атмосфере[1]. Он написал программу для решения следующей системы дифференциальных уравнений:
dx/dt = s(-x + y),
dy/dt = rx – y – xz,
dz/dt = -bz + xy.
В дальнейших расчетах параметры s, rи bпостоянны и принимают значения s = -10, r = 28и b = 8/3.
Согласно описанию эксперимента, принадлежащему самому Лоренцу, он вычислял значения решения в течение длительного времени, а затем остановил счет. Его заинтересовала некоторая особенность решения, которая возникала где-то в середине интервала счета, и поэтому он повторил вычисления с этого момента. Результаты повторного счета, очевидно, совпали бы с результатами первоначального счета, если бы начальные значения для повторного счета в точности были равны полученным ранее значениям для этого момента времени. Лоренц слегка изменил эти значения, уменьшив число верных десятичных знаков. Ошибки, введенные таким образом, были крайне невелики. Но самое неожиданное было впереди. Вновь сосчитанное решение некоторое время хорошо согласовывалось со старым. Однако, по мере счета расхождение возрастало, и постепенно стало ясно, что новое решение вовсе не напоминает старое (рисунки приведены в [1], стр. 149).
Лоренц вновь повторял и проверял вычисления (вероятно, не доверяя компьютеру), прежде чем осознал важность эксперимента. То, что он наблюдал, теперь называется существенной зависимостью от начальных условий --- основной чертой, присущей хаотической динамике. Существенную зависимость иногда называют эффектом бабочки. Такое название относится к невозможности делать долгосрочные прогнозы погоды. Сам Лоренц разъяснил это понятие в статье «Предсказуемость: может ли взмах крылышек бабочки в Бразилии привести к образованию торнадо в Техасе?», опубликованной в 1979 году [3, стр. 322].
Несмотря на большую значимость эксперимента Лоренца, в данной курсовой работе не будут рассматриваться модели, связанные с динамическими системами, описываемыми дифференциальными уравнениями. Напротив, мы будем рассматривать наиболее простые модели хаотической динамики --- дискретные, к которым относится знаменитое и вездесущее множество Мандельброта и сопутствующие ему множества Жюлиа.
Рис. 4.1.1. Аттрактор Лоренца.
4.2. Множества Мандельброта и Жюлиа.
Вероятно, нельзя привести пример такого компьютерного эксперимента, который впечатлением от результатов превосходил бы то чувство удивления, и восхищения, которое вызывает графическое построение множеств Мандельброта и множества Жюлиа на плоскости. Эти множества относятся к хаотической динамике на комплексной плоскости.