Фракталы вокруг нас
Математика, если на нее правильнопосмотреть, отражает не только истину,но и несравненную красоту.Бертранд Рассел.
Нравится ли вам смотреть на ночные молнии или представлять синии всполохи ветвящихся разрядов электрического оружия наноробота, разглядывать морозные узоры на окне или, может, вы любите ловить так непохожие друг на друга снежинки и рассматривать их неповторимую форму? Если да, то вам, несомненно, понравятся и фрактальные структуры! Фракталами называют бесконечно самоподобные фигуры, каждый фрагмент которых повторяется при уменьшении масштаба. Разветвления трубочек трахей, нейроны, сосудистая система человека, извилины берегов морей и озер, контуры деревьев — это все фракталы. Фракталы находят в местах таких малых, как клеточная мембрана, и таких огромных, как звездные галактики. Можно сказать, что фракталы – это уникальные объекты, порожденные непредсказуемыми движениями хаотического мира!
История фракталов началась с геометрических фракталов, которые исследовались математиками в XIX веке. Фракталы этого класса – самые наглядные, потому что в них сразу видно самоподобие. Примерами таких фракталов служат: кривые Коха, Леви, Минковского, треугольник Серпиньского, губка Менгера, дерево Пифагора и др. С математической точки зрения, фрактал - это, прежде всего, множество с дробной (промежуточной, «не целой») размерностью. В то время как гладкая евклидова линия заполняет в точности одномерное пространство, фрактальная кривая выходит за пределы одномерного пространства, вторгается за границы в двумерное пространство. Таким образом, фрактальная размерность кривой Коха будет находиться между 1 и 2. Это, прежде всего, означает, что у фрактального объекта невозможно точно измерить его длину! ( пример: губка Менгера)
Вплоть до 20 века шло накопление данных о таких странных объектах, без какой либо попытки их систематизировать. Так было, пока за них не взялся Бенуа Мандельброт - отец современной фрактальной геометрии и слова фрактал. Работая в IBM математическим аналитиком, он изучал шумы в электронных схемах, которые невозможно было описать с помощью статистики. Постепенно сопоставив факты, он пришел к открытию нового направления в математике - фрактальной геометрии. Что же такое фрактал. Сам Мандельброт вывел слово fractal от латинского слова fractus, что означает разбитый (поделенный на части). И одно из определений фрактала - это геометрическая фигура, состоящая из частей и которая может быть поделена на части, каждая из которых будет представлять уменьшенную копию целого (по крайней мере, приблизительно). Чтобы представить себе фрактал понаглядней рассмотрим пример, приведенный в книге Б.Мандельброта "The Fractal Geometry of Nature" ("Фрактальная геометрия природы") ставший классическим - "Какова длина берега Британии?". Ответ на этот вопрос не так прост, как кажется. Все зависит от длины инструмента, которым мы будем пользоваться. Померив берег с помощью километровой линейки мы получим какую-то длину. Однако мы пропустим много небольших заливчиков и полуостровков, которые по размеру намного меньше нашей линейки. Уменьшив размер линейки до, скажем, 1 метра - мы учтем эти детали ландшафта, и, соответственно длина берега станет больше. Пойдем дальше и измерим длину берега с помощью миллиметровой линейки, мы тут учтем детали, которые больше миллиметра, длина будет еще больше. В итоге ответ на такой, казалось бы, простой вопрос может поставить в тупик кого угодно - длина берега Британии бесконечна.
В своей повседневной жизни мы постоянно встречаемся с размерностями. Мы прикидываем длину дороги (250 м), узнаем площадь квартиры (78 м2) и ищем на наклейке объем бутылки пива (0.33 дм3). Это понятие вполне интуитивно ясно и, казалось бы, не требует разъяснения. Линия имеет размерность 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 исходной _/\_. Таким образом, с каждой итерацией длинна кривой увеличивается на треть. И если мы сделаем бесконечное число итераций - получим фрактал - снежинку Коха бесконечной длинны. Получается, что наша бесконечная кривая покрывает ограниченную площадь. Попробуйте сделать то же самое методами и фигурами из евклидовой геометрии.
Вторая большая группа фракталов - алгебраические. Свое название они получили за то, что их строят, на основе алгебраических формул иногда весьма простых. Методов получения алгебраических фракталов несколько. Один из методов представляет собой многократный (итерационный) расчет функции Zn+1=f(Zn), где Z - комплексное число, а f некая функция. Расчет данной функции продолжается до выполнения определенного условия. И когда это условие выполнится - на экран выводится точка. При этом значения функции для разных точек комплексной плоскости может иметь разное поведение: С течением времени стремится к бесконечности.Стремится к 0Принимает несколько фиксированных значений и не выходит за их пределы.Поведение хаотично, без каких либо тенденций.Чтобы проиллюстрировать алгебраические фракталы обратимся к классике - множеству Мандельброта. Для его построения нам необходимы комплексные числа. Любой уважающий себя язык программирования включает в себя инструментарий для работы с комплексными числами, а даже если и нет, то их несложно запрограммировать и самим, и на крайний случай (а таких, я думаю, будет большинство :)) у нас есть Fractint которая все посчитает и нарисует за нас.
На всякий случай напомню, что такое комплексные числа. Комплексное число - это число, состоящее из двух частей - действительной и мнимой, и обозначается оно 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+0iLake=True 'Принадлежит множеству МандельбротаFor iteration=1 to 255'Повторяем 255 раз (для режима 256 цветов)Zn=Z0*Z0+CIf abs(Zn)>2 then Lake=False: Exit For 'Проверили - не принадлежитZ0=ZnNextIf 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, а С присваивать произвольные значения мы получим множество Жюлиа, тоже красивый фрактал. На рисунке, изображающем множество Мандельброта я взял небольшой участок и увеличил его до размеров всего экрана (как в микроскоп). Что же мы видим? Проявление самоподобности. Не точной самоподобности, но близкой и с ней мы будем сталкиваться постоянно, увеличивая части нашего фрактала больше и больше. До каких же пор мы можем увеличивать наше множество? Так вот если мы увеличим его до предела вычислительной мощности компьютеров, то покроем площадь равную площади солнечной системы вплоть до Сатурна.
Типичный представитель данного класса фракталов "Плазма". Для ее построения возьмем прямоугольник и для каждого его угла определим цвет. Далеенаходим центральную точку прямоугольника и раскрашиваем ее в цвет равный среднему арифметическому цветов по углам прямоугольника плюс некоторое случайное число. Чем больше случайное число - тем более "рваным" будет рисунок. Если мы теперь скажем, что цвет точки это высота над уровнем моря - получим вместо плазмы - горный массив. Именно на этом принципе моделируются горы в большинстве программ. С помощью алгоритма, похожего на плазму строится карта высот, к ней применяются различные фильтры, накладываем текстуру и пожалуйста фотореалистичные горы готовы. Эта группа фракталов получила широкое распространение благодаря работам Майкла Барнсли из технологического института штата Джорджия. Он пытался кодировать изображения с помощью фракталов. Запатентовав несколько идей по кодированию изображений с помощью фракталов, он основал фирму "Iterated Systems", которая через некоторое время выпустила первый продукт "Images Incorporated", в котором можно было изображения переводить из растровой формы во фрактальную FIF. Это позволяло добиться высоких степеней сжатия. При низких степенях сжатия качество рисунков уступало качеству формата JPEG, но при высоких картинки получались более качественными. В любом случае этот формат не прижился, но работы по его усовершенствованию ведутся до сих пор. Ведь этот формат не зависит от разрешения изображения. Так как изображение закодировано с помощью формул, то его можно увеличить до любых размеров и при этом будут появляться новые детали, а не просто увеличится размер пикселей. Хуже это или лучше - решать надо в каждом отдельном случае.
Если в L-systems (алгебраических фракталах) речь шла о замене прямой линии неким полигоном, то в IFS мы в ходе каждой итерации заменяем некий полигон (квадрат, треугольник, круг) на набор полигонов, каждый их которых подвергнут аффинным преобразованиям. При аффинных преобразованиях исходное изображение меняет масштаб, параллельно переносится вдоль каждой из осей и вращается на некоторый угол. В результате можно получить потрясающие коэффициенты сжатия. Например рисунок папоротника кодируется с помощью 28!!! цифр и один и тот же рисунок получается в не зависимости от того что взяли за основу - прямоугольник, круг, треугольник или что-либо еще. Но к сожалению процесс создания набора коэффициентов для произвольного изображения очень трудоемок и занимает очень много времени.
Понятие фрактал неразрывно связано с понятием хаос. Хаос - это отсутствие предсказуемости. Хаос возникает в динамических системах, когда для двух очень близких начальных значений система ведет себя совершенно по-разному. Пример хаотичной динамической системы - погода. Метеорологи шутят: "Взмах крыла бабочки в Техасе приводит к урагану во Флориде". Поэтому, когда будете слушать следующий прогноз погоды перед полетом на самолете вспомните эту статью :)
Вот и подошла к концу наша экскурсия в мир фракталов. Она только немного приоткрыла нам завесу в мир фракталов. Надеюсь она Вам понравилась. И на последок хочу поделится с Вами своей коллекцией фракталов.
Коллекция фракталов:
Коллекция фракталов:
Коллекция фракталов:
Коллекция фракталов:
Коллекция фракталов:
Коллекция фракталов:
Коллекция фракталов:
Коллекция фракталов:
Коллекция фракталов:
Коллекция фракталов:
Коллекция фракталов:
Коллекция фракталов:
«Под микроскопом он открыл, что на блохе Живет блоху кусающая блошка; На блошке той блошинка-крошка, В блошинку же вонзает зуб сердито Блошиночка, и так ad infinitum» Д.Свифт.