Домой Хоум Кредит Банк Фрактальные рисунки мандельброта. Фракталы Бенуа Мандельброта

Фрактальные рисунки мандельброта. Фракталы Бенуа Мандельброта

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

природы.

В 70ых годах прошлого века нашелся математик Бенуа Мандельброт , который выявил порядок казалось бы, в хаотичных объектах, Мандельброт назвал их фракталами (лат. fractus - сломанный, разбитый). Суть фрактала в самоподобии, в бесконечном повторении собственной формы. Увеличивая масштаб вы всегда будете видеть фигуры аналогичные исходной. Еще В начале 20го века швед Хельге фон Кох построил кривую, которую теперь называют «Снежинка Коха». Он взял треугольник, разбил стороны на равные части и приложил к ним более мелкие треугольники, затем повторил процесс множество раз. На первый взгляд замкнутая кривая, но теоретически

её длина бесконечна. Зависит от размерности объекта и от количества повторений.

Во времена Коха чертили вручную, а вот Мандельброту повезло больше. Мощности ЭВМ хватило для проведения миллионов операций. Получались интересные изображения, одно из них называется: «множество Мандельброта».

Всё вокруг имеет необыкновенную структуру, жизнь выбрала эту форму как оптимальную. Органы: «легкие, почки, кровеносные сосуды, нейроны, все клетки». Также растения: «деревья, кустарники, травы, цветы и плоды, от мельчайших организмов до самых крупных». Твердые материалы, разнообразные вихревые перемещения веществ, жидкостей, газов. Горы, облака, снежинки, молнии, всевозможные явления природы…

Фракталы применяют в компьютерной графике и дизайне

Сотовые

телефоны производят с антеннами фрактального типа. Фрактальная геометрия открывает много нового в биологии, географии и т.д. В будущем практическое применение этой науки будет только расти.

Мандельброт Фрактальная геометрия природы

Существует бесконечное множество различных фракталов. Один из них носит имя Мандельброта. Фрактал Мандельброта – это множество точек на комплексной плоскости, для которых итеративная последовательность

при начальном условии
, не уходит в бесконечность.

Рис. 3.6. Фрактал Мандельброта

Впервые множество Мандельброта было описано в 1905 году Пьером Фату (Pierre Fatou ), французским математиком, работавшим в области аналитической динамики комплексных чисел. Фату изучал рекурсивные процессы вида (3.2). Начав с точки
на комплексной плоскости, можно получить новые точки, последовательно применяя к ним эту формулу. Такая последовательность точек называетсяорбитой при преобразовании (3.2).

Фату нашел, что орбита
при этом преобразовании показывает достаточно сложное и интересное поведение. Существует бесконечное множество таких преобразований – своё для каждого значенияc . В те времена компьютеров ещё не было, и Фату, конечно, не мог построить орбиты всех точек плоскости, ему приходилось всё делать вручную. Основываясь на своих расчётах, он доказал, что орбита точки, лежащей на расстоянии больше 2 от начала координат, всегда уходит в бесконечность .

Фату никогда не видел изображений, которые мы сейчас знаем как изображения множества Мандельброта, потому что необходимое количество вычислений невозможно провести вручную. Профессор Бенуа Мандельброт был первым, кто использовал для этого компьютер. Фракталы были описаны Мандельбротом в 1975 году в его книге «Les Objets Fractals: Forme, Hasard et Dimension» («Фрактальные объекты: форма, случайность и размерность»). В этой книге Мандельброт впервые использовал термин «фрактал» для обозначения математического феномена, демонстрирующего столь непредсказуемое и удивительное поведение. Эти феномены рождались при использовании рекурсивного алгоритма для получения какой-либо кривой или множества. Множество Мандельброта – один из таких феноменов, названный по имени своего исследователя.

Если использовать обозначения
и
, где
– мнимая единица, то итеративная последовательность (3.2) преобразуется в:

(3.3)

На рис 3.6.показан графический образ фрактала Мандельброта (на комплексной плоскости). Как обычно, действительная ось расположена горизонтально, а мнимая – вертикально. Закрашенная черным область – это и есть множество Мандельброта. Оттенки белого и голубого соответствуют его дополнению к множеству комплексных чисел. Белым цветом обозначены точки с координатами p и q , которые достаточно «медленно» уходят в бесконечность, синим цветом – точки, которые «быстро» уходят в бесконечность.

Визуально, внутри множества Мандельброта можно выделить бесконечное количество элементарных фигур, причём, самая большая в центре представляет собой кардиоиду . Также есть набор овалов, касающихся кардиоиды, размер которых постепенно уменьшается, стремясь к нулю. Каждый из этих овалов имеет свой набор меньших овалов, диаметр которых также стремится к нулю и т. д. Этот процесс продолжается бесконечно, образуя фрактал. Также важно, что эти процессы ветвления фигур не исчерпывают полностью множество Мандельброта: если рассмотреть с увеличением дополнительные «ветки», то в них можно увидеть свои кардиоиды и круги, не связанные с главной фигурой.

Чтобы построить изображение фрактала Мандельброта, подобное тому, что показано на рис. 3.6, необходимо использовать алгоритм (3.3) и теорему Фату. Сравнение
с числом 2 (в англоязычной литературе его называют «bail-out ») позволяет выделять точки, не попадающие внутрь множества. Для точек, лежащих внутри множества, последовательность не будет иметь тенденции к бесконечности и никогда не достигнет этого числа, поэтому после определённого числа итераций расчёт необходимо принудительно завершить. Максимальное число итераций, после которых число считается попавшим внутрь множества, задается в программе.

Изображение, полученное таким способом, является лишь приближением к реальному множеству Мандельброта. Более качественные результаты можно получать, увеличивая максимальное количество итераций, однако при этом пропорционально возрастает и время расчётов.

Строго математически, изображение множества Мандельброта должно быть чёрно-белым. Точка либо попадает внутрь множества, либо нет. Несмотря на это, с помощью компьютера мы можем построить и цветные изображения. Самым распространённым способом является раскрашивание точек снаружи множества в цвет, равный количеству итераций, за которое точка уходит в «бесконечность» или, с точки зрения программы, на определённое расстояние от нуля.

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

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

Бенуа Мандельброт и его фракталы

Обладая уникальным пространственным мышлением Б. Мандельброт даже не получив среднее образование сумел поступить в политехническую школу и затем сумел получить высшее образование (ему дали докторскую степень). Во время работы в IBM он изучал разнообразные прикладные задачи математики, в том числе, в области экономики. Именно тогда он увидел, что любые ценовые колебания можно описать определенным математическим методом, который не соответствовал стандартным геометрическим кривым.

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

Для объяснения такого нового свойства ценовой динамики Мандельброт применил рекурсивный метод. В упрощенном виде, этот метод описывается формулой, в которой каждый последующий член рассчитывается как сумма квадрата предыдущего члена и постоянной величины. В качестве термина для таких множеств ввел понятие «фрактал».

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

Как описывается рынок фракталами Мандельброта

Для задания любого фрактала требуется два элемента – инициатор и генератор. В отношении графиков котировок инициатором может служить отрезок (рис. 1), соединяющий два разных соседних экстремума (минимум и максимум). Этот отрезок может быть направлен слева направо вверх (в этом случае на рынке рост – зеленый отрезок на рис. 1) или вниз (в этом случае на рынке падение – красный отрезок на рис. 1).

В качестве генератора может использоваться простейшая комбинация из трех последовательных отрезков (т. е. конец предыдущего отрезка является началом следующего отрезка), называющаяся «импульс-откат-импульс» (рис. 2):

  • если ценовой импульс направлен вверх, то в этом генераторе последующие максимум и минимум лежат выше предыдущих максимума и минимума, в результате чего образуется восходящий тренд (выделен желтым прямоугольником на рис. 2);
  • если ценовой импульс направлен вниз, то в этом генераторе последующие максимум и минимум лежат ниже предыдущих максимума и минимума, в результате чего образуется нисходящий тренд (выделен синим прямоугольником на рис. 2).

Существует множество иных генераторов фракталов, которые в общем случае, могут состоять из любого количества инициаторов.

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

Фракталы Мандельброта в МТ4

В торговом терминале MetaTrader инструмент фрактального анализа называется Fractals и расположен он в меню «Вставка-Индикаторы-Билла Вильямса». Объясняется это тем, что именно Б. Вильямс разработал наиболее полную теорию фрактального анализа.

Работа этого инструмента технического анализа заключается в поиске таких последовательностей из пяти идущих подряд свечей, у которых:

  • максимум средней свечи выше максимумов остальных свечей (бычий фрактал – выделен голубым прямоугольником на рис. 3);
  • минимум средней свечи ниже минимумов остальных свечей (медвежий фрактал – выделен желтым прямоугольником на рис. 3).

Одно из основных применений фракталов Мандельброта заключается в расстановке уровней поддержки и сопротивления. Также они могут применяться для идентификации текущей тенденции:

  • если уровни бычьих фракталов последовательно повышаются, то на рынке восходящий тренд;
  • если уровни медвежьих фракталов последовательно понижаются, то на рынке нисходящий тренд.

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

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

Фракталы были описаны Мандельбротом в 1975 году в его книге «Les Objets Fractals: Forme, Hasard et Dimension» («Фрактальные объекты: форма, случайность и размерность»). В этой книге Мандельброт впервые использовал термин «фрактал» для обозначения математического феномена, демонстрирующего столь непредсказуемое и удивительное поведение. Эти феномены рождались при использовании рекурсивного алгоритма для получения какой-либо кривой или множества. Множество Мандельброта - один из таких феноменов, названный по имени своего исследователя.

Построение множества

Несложно доказать, что как только модуль z n окажется больше 2 (или, в терминах действительной и мнимой частей, x n 2 +y n 2 >4), последовательность станет стремиться к бесконечности. В случае |c |≤2 это можно доказать с помощью метода математической индукции . При |c |>2 точка c заведомо не принадлежит множеству Мандельброта, что также можно вывести методом индукции, используя равенство z 0 =0. (Хотя в этом случае может существовать другое z 0 , для которого соответствующая последовательность ограничена по модулю, но для некоторого n выполняется неравенство |z n |>2.)

Сравнение |z n | с этим числом (в англоязычной литературе его называют «bail-out») позволяет выделять точки, не попадающие внутрь множества. Для точек, лежащих внутри множества, последовательность не будет иметь тенденции к бесконечности и никогда не достигнет этого числа, поэтому после определённого числа итераций расчёт необходимо принудительно завершить. Максимальное число итераций, после которых число считается попавшим внутрь множества, задается в программе.

Изображение, полученное таким способом, является лишь приближением к реальному множеству Мандельброта. Более качественные результаты можно получать, увеличивая максимальное количество итераций, однако при этом пропорционально вырастает и время расчётов.

Пример программы построения множества (на языке программирования PHP):

/* Множество Мандельброта. */ /* Время создания */ set_time_limit (120 ) ; function re_microtime() { list ($usec , $sec ) = explode (" " , microtime () ) ; return ((float) $usec + (float) $sec ) ; } /* Засекаем */ $time_start = re_microtime() ; /* Размер картинки */ $img_w = 900 ; $img_h = 600 ; /* Начало и конец чертежа */ $x_min = - 2 ; $x_max = 1 ; $y_min = - 1 ; $y_max = 1 ; /* Подсчёт шага */ if ($x_min >= 0 && $x_max >= 0 ) { $step = ($x_min + $x_max ) / $img_w ; } elseif ($x_min < 0 && $x_max >= 0 ) { $step = ($x_max - $x_min ) / $img_w ; } else { $step = (- $x_min + $x_max ) / $img_w ; } $img = imagecreatetruecolor ($img_w , $img_h ) ; $c = array () ; $yy = 0 ; for ($y = $y_min ; $y < $y_max ; $y = $y + $step ) { $xx = 0 ; for ($x = $x_min ; $x < $x_max ; $x = $x + $step ) { $c [ "x" ] = $x ; $c [ "y" ] = $y ; $X = $x ; $Y = $y ; $ix = 0 ; $iy = 0 ; $n = 0 ; while (($ix * $ix + $iy * $iy < 5 ) and ($n < 64 ) ) { $ix = $X * $X - $Y * $Y + $c [ "x" ] ; $iy = 2 * $X * $Y + $c [ "y" ] ; $X = $ix ; $Y = $iy ; $n ++; } $col = imagecolorallocate ($img , 255 - $n * 5 , 0 , 0 ) ; imagesetpixel ($img , $xx , $yy , $col ) ; $xx ++; } $yy ++; } $time_end = re_microtime() ; header ("Content-type: image/png" ) ; /* выводим в заголовках время создания */ header ("X-Exec-Time: " . ($time_end - $time_start ) ) ; imagepng ($img ) ; imagedestroy ($img ) ; ?>

Пример программы построения множества (на языке программирования ):

Using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; namespace Mnoj { class Program { static void Main(string args) { double realCoord, imagCoord; double realTemp, imagTemp, realTemp2, arg; int iterations; for (imagCoord = 1.2 ; imagCoord >= - 1.2 ; imagCoord -= 0.05 ) { for (realCoord = - 0.6 ; realCoord <= 1.77 ; realCoord += 0.03 ) { iterations = 0 ; realTemp = realCoord; imagTemp = imagCoord; arg = (realCoord * realCoord) + (imagCoord * imagCoord) ; while ((arg < 4 ) && (iterations < 40 ) ) { realTemp2 = (realTemp * realTemp) - (imagTemp * imagTemp) - realCoord; imagTemp = (2 * realTemp * imagTemp) - imagCoord; realTemp = realTemp2; arg = (realTemp * realTemp) + (imagTemp * imagTemp) ; iterations += 1 ; } switch (iterations % 4 ) { case 0 : Console. Write ("." ) ; break ; case 1 : Console. Write ("o" ) ; break ; case 2 : Console. Write ("0" ) ; break ; case 3 : Console. Write ("@" ) ; break ; } } Console. Write ("\n " ) ; } Console. ReadKey () ; } } }

Добавление цвета

Фрагмент границы множества Мандельброта в цветном варианте

Строго математически, изображения множеств Мандельброта и Жюлиа должны быть чёрно-белыми. Точка либо попадает внутрь множества, либо нет. Несмотря на это, с помощью компьютера мы можем построить и цветные изображения. Самым распространённым способом является раскрашивание точек снаружи множества в цвет, равный количеству итераций, за которое точка уходит в «бесконечность» или, с точки зрения программы, на определённое расстояние от нуля.

Порядок определения, попадает ли точка z 0 внутрь множества (традиционно закрашиваемого чёрным цветом) или нет (закрашивается цветом, зависящим от скорости движения к бесконечности) следующий: на каждой итерации для z n =x n +y n ·i вычисляется значение модуля , которое затем сравнивается с «границей бесконечности» (обычно берётся значение, равное 2). Здесь важно обратить внимание, что уже на данном этапе можно ввести определённую оптимизацию вычислений, если проверять не , а , что значительно снизит время расчётов.

Таким образом, если |z n | 2 ≤ 4 при любом числе итераций (на практике - при всех вычисленных итерациях), то цвет точки чёрный, в противном случае он зависит от последнего значения n , при котором |z n | 2 ≤ 4. Значение n , фактически, обозначает скорость движения z n в бесконечность, и может быть просто индексом в таблице цветов, или использоваться как параметр в более сложном алгоритме.

Данный алгоритм определяет, что если точка удаляется больше чем на 2 от начала координат, то она лежит снаружи множества Мандельброта. Для того, чтобы определить, что точка лежит внутри множества есть много способов. Самое простое решение - ограничить количество итераций неким максимумом. Если точка не вышла за указанную границу, можно считать, что она находится внутри множества.

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

Пример добавления цвета (на PHP):

// Default: http:///

/.php?iter1=64&width=600&height=400&coef=32 function BN($n , $l , $r ) { return $n > $l && $n <= $r ; } function SQR($a ) { return $a * $a ; } define ("COEF" , $_GET [ "coef" ] ) ; $iter1 = $_GET [ "iter1" ] ; $width = $_GET [ "width" ] ; $height = $_GET [ "height" ] ; header ("Content-type: image/png" ) ; $img = imagecreatetruecolor ($width , $height ) ; $iter2 = 0.01 / ($width / 300 ) ; $yy = - 1 ; for ($y = - 1 ; $y < 1 ; $y = $y + $iter2 ) { $yy ++; $xx =- 1 ; for ($x = - 2 ; $x < 1 ; $x = $x + $iter2 ) { $xx ++; $Cx = $x ; $Cy = $y ; $X = $x ; $Y = $y ; $ix = 0 ; $iy = 0 ; $n = 0 ; while ((SQR($ix ) + SQR($iy ) < 4 ) and ($n < $iter1 ) ) { $ix = SQR($X ) - SQR($Y ) + $Cx ; $iy = 2 * $X * $Y + $Cy ; $X = $ix ; $Y = $iy ; $n ++; } if (BN($n , 0 , 7 ) ) $col = imagecolorallocate ($img , COEF* $n , 0 , 0 ) ; elseif (BN($n , 7 , 14 ) ) $col = imagecolorallocate ($img , COEF* $n , COEF* $n , 0 ) ; elseif (BN($n , 14 , 21 ) ) $col = imagecolorallocate ($img , COEF* $n , 0 , COEF* $n ) ; elseif (BN($n , 21 , 28 ) ) $col = imagecolorallocate ($img , 0 , COEF* $n , 0 ) ; elseif (BN($n , 28 , 35 ) ) $col = imagecolorallocate ($img , COEF* $n , COEF* $n , 0 ) ; elseif (BN($n , 35 , 42 ) ) $col = imagecolorallocate ($img , 0 , COEF* $n , COEF* $n ) ; elseif (BN($n , 42 , 49 ) ) $col = imagecolorallocate ($img , 0 , 0 , COEF* $n ) ; elseif (BN($n , 49 , 56 ) ) $col = imagecolorallocate ($img , COEF* $n , 0 , COEF* $n ) ; elseif (BN($n , 56 , 64 ) ) $col = imagecolorallocate ($img , 0 , COEF* $n , COEF* $n ) ; imagesetpixel ($img , $xx , $yy , $col ) ; } } imagepng ($img ) ; imagedestroy ($img ) ; ?>

Оптимизация

Одним из способов уменьшения объёма вычислений при вычислении общей картины множества может служить проверка, попадает ли точка в область главной кардиоиды . Формула кардиоиды в полярных координатах выглядит следующим образом:

Таким образом, для точки необходимо вычислить

, , .

Если то точка попадает внутрь множества и закрашивается чёрным цветом, а итеративные вычисления можно пропустить.

На практике наибольшее уменьшение объёма вычислений даёт трассировка границы: если есть некоторая замкнутая кривая, не пересекающая ось абсцисс, каждая точка которой уходит за предел bail-out за одинаковое число итераций или наоборот принадлежит множеству Мандельброта, то любая точка внутри этой кривой будет обладать тем же свойством, и следовательно вся область внутри границы закрашивается одинаковым цветом.

Новое на сайте

>

Самое популярное