Понятие размерности и ее расчет

В своей повседневной жизни мы постоянно встречаемся с размерностями. Мы прикидываем длину дороги, узнаем площадь квартиры и т.д. Это понятие вполне интуитивно ясно и, казалось бы, не требует разъяснения. Линия имеет размерность 1. Это означает, что, выбрав точку отсчета, мы можем любую точку на этой линии определить с помощью 1 числа – положительного или отрицательного. Причем это касается всех линий – окружность, квадрат, парабола и т.д.

Размерность 2 означает, что любую точку мы можем однозначно определить двумя числами. Не надо думать, что двумерный – значит плоский. Поверхность сферы тоже двумерна (ее можно определить с помощью двух значений – углов наподобие ширины и долготы).

Если смотреть с математической точки зрения, то размерность определяется следующим образом: для одномерных объектов – увеличение в два раза их линейного размера приводит к увеличению размеров (в данном случае длинны) в два раза (2^1).

Для двумерных объектов увеличение в два раза линейных размеров приводит к увеличению размера (например, площадь прямоугольника) в четыре раза (2^2).

Для 3–х мерных объектов увеличение линейных размеров в два раза приводи к увеличению объема в восемь раз (2^3) и так далее.

Таким образом, размерность D можно рассчитать исходя из зависимости увеличения «размера» объекта S от увеличения линейных размеров L. D=log(S)/log(L). Для линии D=log(2)/log(2)=1. Для плоскости D=log(4)/log(2)=2. Для объема D=log(8)/log(2)=3.

Рассчитаем размерность для кривой Пеано. Исходная линия, состоящая из трех отрезков длинны Х, заменяется на 9 отрезков втрое меньшей длинны. Таким образом, при увеличении минимального отрезка в 3 раза длина всей линии увеличивается в 9 раз и D=log(9)/log(3)=2 – двумерный объект.

Когда размерность фигуры получаемой из каких–то простейших объектов (отрезков) больше размерности этих объектов – мы имеем дело с фракталом.

Геометрические фракталы

Именно с них и начиналась история фракталов. Этот тип фракталов получается путем простых геометрических построений. Обычно при построении этих фракталов поступают так: берется «затравка» – аксиома – набор отрезков, на основании которых будет строиться фрактал. Далее к этой «затравке» применяют набор правил, который преобразует ее в какую–либо геометрическую фигуру. Далее к каждой части этой фигуры применяют опять тот же набор правил. С каждым шагом фигура будет становиться все сложнее и сложнее, и если мы проведем бесконечное количество преобразований – получим геометрический фрактал.

Рассмотренная ранее кривая Пеано является геометрическим фракталом. На рис. ниже приведены другие примеры геометрических фракталов (слева направо Снежинка Коха, Лист, Треугольник Серпинского).


Рис. Снежинка Коха


Рис. Лист


Рис. Треугольник Серпинского

Из этих геометрических фракталов очень интересным и довольно знаменитым является – снежинка Коха. Строится она на основе равностороннего треугольника. Каждая линия которого заменяется на 4 линии каждая длинной в 1/3 исходной. Таким образом, с каждой итерацией длинна кривой увеличивается на треть. И если мы сделаем бесконечное число итераций – получим фрактал – снежинку Коха бесконечной длинны. Получается, что наша бесконечная кривая покрывает ограниченную площадь.

Размерность снежинки Коха (при увеличении снежинки в 3 раза ее длина возрастает в 4 раза) D=log(4)/log(3)=1.2619...

Для построения геометрических фракталов хорошо приспособлены так называемые L–Systems. Суть этих систем состоит в том, что имеется определенных набор символов системы, каждый из которых обозначает определенное действие и набор правил преобразования символов.

Алгебраические фракталы

Вторая большая группа фракталов – алгебраические. Свое название они получили за то, что их строят, на основе алгебраических формул иногда весьма простых. Методов получения алгебраических фракталов несколько. Один из методов представляет собой многократный (итерационный) расчет функции Zn+1=f(Zn), где Z – комплексное число, а f некая функция. Расчет данной функции продолжается до выполнения определенного условия. И когда это условие выполнится – на экран выводится точка. При этом значения функции для разных точек комплексной плоскости может иметь разное поведение:

− с течением времени стремится к бесконечности.

− стремится к 0

− принимает несколько фиксированных значений и не выходит за их пределы.

− поведение хаотично, без каких либо тенденций.

Чтобы проиллюстрировать алгебраические фракталы обратимся к классике – множеству Мандельброта.

Рис. Множество Мандельброта

Для его построения нам необходимы комплексные числа. Комплексное число – это число, состоящее из двух частей – действительной и мнимой, и обозначается оно a+bi. Действительная часть a это обычное число в нашем представлении, а bi – мнимая часть. i – называют мнимой единицей, потому, что если мы возведем i в квадрат, то получим –1.

Комплексные числа можно складывать, вычитать, умножать, делить, возводить в степень и извлекать корень, нельзя только их сравнивать. Комплексное число можно изобразить как точку на плоскости, у которой координата Х это действительная часть a, а Y это коэффициент при мнимой части b.

Функционально множество Мандельброта определяется как Zn+1=Zn*Zn+C. Для построения множества Мандельброта воспользуемся алгоритмом на Бейсике.

For a=–2 to 2 ' для всех действительных а от –2 до 2For b=–2 to 2 ' для всех мнимых b от –2 до 2С=a+biZ0=0+0i'Принадлежит множеству МандельбротаLake=True 'Повторяем 255 раз (для режима 256 цветов)For iteration=1 to 255Zn=Z0*Z0+C'Проверили – не принадлежитIf abs(Zn)>2 then Lake=False: Exit For Z0=ZnNext'Нарисовали черную точку,принадлежащую "озеру" Мандельброта.If Lake=True Then PutPixel(a,b,BLACK) ' Нарисовали точку не принадлежащую множеству или лежащую на границе.Else PutPixel(a, b, iteration) NextNext

А теперь опишу программку словами. Для всех точек на комплексной плоскости в интервале от –2+2i до 2+2i выполняем некоторое достаточно большое количество раз Zn=Z0*Z0+C, каждый раз проверяя абсолютное значение Zn. Если это значение больше 2, что рисуем точку с цветом равным номеру итерации на котором абсолютное значение превысило 2, иначе рисуем точку черного цвета. Все множество Мандельброта в полной красе у нас перед глазами.

Черный цвет в середине показывает, что в этих точках функция стремится к нулю – это и есть множество Мандельброта. За пределами этого множества функция стремится к бесконечности. А самое интересное это границы множества. Они то и являются фрактальными. На границах этого множества функция ведет себя непредсказуемо – хаотично.

Меняя функцию, условия выхода из цикла можно получать другие фракталы. Например, взяв вместо выражения С=a+bi выражение Z0=a+bi, а С присваивать произвольные значения мы получим множество Жюлиа, тоже красивый фрактал.

Для множества Мандельброта тоже проявляется самоподобие.

 

Стохастические фракталы

Типичный представитель данного класса фракталов «Плазма».

Рис. Плазма

Для ее построения возьмем прямоугольник и для каждого его угла определим цвет. Далее находим центральную точку прямоугольника и раскрашиваем ее в цвет равный среднему арифметическому цветов по углам прямоугольника плюс некоторое случайное число. Чем больше случайное число – тем более «рваным» будет рисунок. Если, например, сказать, что цвет точки это высота над уровнем моря, то получим вместо плазмы – горный массив. Именно на этом принципе моделируются горы в большинстве программ. С помощью алгоритма, похожего на плазму строится карта высот, к ней применяются различные фильтры, накладываем текстуру.

Системы итерируемых функций (IFS – Iterated Function Systems)

Эта группа фракталов получила широкое распространение благодаря работам Майкла Барнсли из технологического института штата Джорджия. Он пытался кодировать изображения с помощью фракталов. Запатентовав несколько идей по кодированию изображений с помощью фракталов, он основал фирму «Iterated Systems», которая через некоторое время выпустила первый продукт «Images Incorporated», в котором можно было изображения переводить из растровой формы во фрактальную FIF.

Это позволяло добиться высоких степеней сжатия. При низких степенях сжатия качество рисунков уступало качеству формата JPEG, но при высоких картинки получались более качественными. В любом случае этот формат не прижился, но работы по его усовершенствованию ведутся до сих пор. Ведь этот формат не зависит от разрешения изображения. Так как изображение закодировано с помощью формул, то его можно увеличить до любых размеров и при этом будут появляться новые детали, а не просто увеличится размер пикселей.

Если в L–systems (алгебраических фракталах) речь шла о замене прямой линии неким полигоном, то в IFS мы в ходе каждой итерации заменяем некий полигон (квадрат, треугольник, круг) на набор полигонов, каждый их которых подвергнут аффинным преобразованиям. При аффинных преобразованиях исходное изображение меняет масштаб, параллельно переносится вдоль каждой из осей и вращается на некоторый угол.

 

Фракталы и хаос

Понятие фрактал неразрывно связано с понятием хаос. Хаос – это отсутствие предсказуемости. Хаос возникает в динамических системах, когда для двух очень близких начальных значений система ведет себя совершенно по–разному. Пример хаотичной динамической системы – погода (метеорологи шутят: «Взмах крыла бабочки в Техасе приводит к урагану во Флориде»).

Хорошо проиллюстрировать хаотичное поведение можно с помощью так называемого logistic equation x=c*x(1–x). Пришло это выражение из биологии, т.к. это грубая модель популяции животных. Так вот при исследовании поведения этой функции выяснилась интересная ее особенность. Если с – фактор роста популяции находится в пределах от 1 до 3, то через некоторое количество итераций популяция стабилизируется.

При с=3 наша функция раздваивается – через определенное число итераций приходим к ситуации, когда высокая популяция в один год сменяется низкой в следующий и значение выражения как бы скачет между двумя значениями.

При с=3.45 она раздваивается снова и у нас уже имеется четырехлетний цикл.

Далее при росте с функция раздваивается все быстрее и быстрее: при с=3.54, с=3.564, с=3.569 ...

И в точке 3.57 начинается хаос. Значения выражения не имеют какой либо периодичности или структуры. На рисунке изображена зависимость поведения функции от величины с.



>