Анализ и построение фракталов в различных программных средах. - Студенческий научный форум

XII Международная студенческая научная конференция Студенческий научный форум - 2020

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

 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

Фрактальная геометрия одна из самых молодых областей математики. С помощью фрактальных алгоритмов возможно описание различных природных процессов, обладающих самоподобием (ветка дерева подобна всему дереву, при изменении масштаба береговая линия остается похожей на себя и др.) [1].

Фрактал (лат. fractus — дроблёный, сломанный, разбитый) — объект дробной размерности, обладающий свойством фрактального самоподобия (скейлинга) (например, кривая Коха, ковер Серпинского, траектория броуновской частицы и т. д.). В простых случаях небольшая часть фрактала содержит информацию о всем фрактале. Само понятие фрактал придумал ученый-математик Бенуа Мандельброт и ввел его в использование в 1975 году [2].

Впервые фрактал был построен в 1883 году Георгом Кантором.В то время он был определен как математический монстр. Кантор взял отрезок и разделил его на три части. Среднюю часть он вырезал, после чего оставались два крайних отрезка. Теперь из каждых оставшихся отрезков он вновь вырезал среднюю часть и так до бесконечности (рис.1).

Рис.1. Канторово множество

Отцом фрактальной геометрии и создателем понятия фрактал является американский, выросший во Франции математик – Бенуа Мандельброт. В 1967 году он опубликовал свою работу «Какова длина побережья Великобритании?», и именно она считается отправной точкой в цикле его работ по теории фракталов. В 1977 годувышлакнигаМандельброта «Fractals: Form, Chance and Dimension» [3].

В нашей работе мы обратились к одному из самых известных фракталов – множеству Мандельброта [3]. Алгоритм построения такого множества основан на итеративном выражении (1):

Zn+1=Zn2+C

(1)

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

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

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

На данный момент времени существует огромное количество программ для построения фракталов и генерации сложных неевклидовых объектов, например искусственных гор, облаков и др. [4]. Благодаря несложным формулам, фракталы можно легко запрограммировать.

В данной статье для создания и качественной визуализации данных мы будем применять инженерное математическое программное обеспечение Mathcad и высокоуровневый язык программирования Python с библиотекой Matplotlib. Проведем сравнительный анализ удобства работы с фракталами в этих средах.

Для построения фрактала в среде Mathcad будем использовать формулу множества Мандельброта (1) и встроенные функции Mathcad (рис. 3). Параметры width (ширина изображения в пикселях) и height (высота изображения) выбираются по желанию пользователя. Значение параметра iterations (количество итераций) так же выставляет пользователь (в нашем случае 29), но не более 100, т.к. при увеличении количества итераций изображение не изменяется ввиду ограниченных вычислительных способностей среды Mathcad. x1, x2, y1, y2 – координаты на плоскости, внутри которых мы будем строить множество Мандельброта, Ci,j – вычисляемая матрица комплексных чисел.

Рис. 3. Рабочий лист Mathcadc выводом результата

Среда Mathcad проста в применении, не требует углубленных знаний информатики и языков программирования. Среди её минусов возможно отметить довольно запутанный и неудобный интерфейс программы.

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

Ниже приведен код программы в Python 3.7 (рис. 4) и полученный график (рис.5)

Рис. 4. Код программы в Python 3.7

Рис. 5. Результат работы в Python

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

Литература.

1. Секованов В.С. Что такое фрактальная геометрия? — Москва, 2016. Сер. 75, Выпуск 114 Синергетика: от прошлого к будущему. Шедевры научно-популярной литературы (физика)

2. В.Н. Савченко, В.П. Смагин. Начала современного естествознания. Тезаурус. — Ростов-на-Дону. 2006.

3. МандельбротБ. Fractals: Form, Chance and Dimension — United States, 1977.

4. МандельбротБ. Фракталыихаос. Множество Мандельброта и другие чудеса // Бенуа Мандельброт. — Ижевск: НИЦ «Регулярная и хаотическая динамика», 2009.

Просмотров работы: 74