Материалы Международной студенческой научной конференции
Студенческий научный форум 2021

АНАЛИЗ И ПОСТРОЕНИЕ ФРАКТАЛОВ В РАЗЛИЧНЫХ ПРОГРАММНЫХ СРЕДАХ

Грищенко А.Ю. 1 Фоменко Л.Н. 1
1 ФГБОУ ВО «Донской Государственный Технический Университет»
1. Секованов В.С. Что такое фрактальная геометрия? – Москва, 2016. Сер. 75, Выпуск 114 Синергетика: от прошлого к будущему. Шедевры научно-популярной литературы (физика).
2. Савченко В.Н., Смагин В.П. Начала современного естествознания. Тезаурус. – Ростов-на-Дону. 2006.
3. Мандельброт Б. Fractals: Form, Chance and Dimension – United States, 1977.
4. Мандельброт Б. Фракталы и хаос. Множество Мандельброта и другие чудеса // Бенуа Мандельброт. – Ижевск: НИЦ «Регулярная и хаотическая динамика», 2009.

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

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

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

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

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

Z n+1 = Zn2 + C. (1)

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

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

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

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

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

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

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

grih1.tif

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

grih2.tif

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

grih3.tif

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

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

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

grih4.tif

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

grih5.tif

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


Библиографическая ссылка

Грищенко А.Ю., Фоменко Л.Н. АНАЛИЗ И ПОСТРОЕНИЕ ФРАКТАЛОВ В РАЗЛИЧНЫХ ПРОГРАММНЫХ СРЕДАХ // Материалы МСНК "Студенческий научный форум 2021". – 2020. – № 2. – С. 61-64;
URL: http://publish2020.scienceforum.ru/ru/article/view?id=89 (дата обращения: 28.01.2021).

Предлагаем вашему вниманию журналы, издающиеся в издательстве «Академия Естествознания»
(Высокий импакт-фактор РИНЦ, тематика журналов охватывает все научные направления)

«Фундаментальные исследования» список ВАК ИФ РИНЦ = 1.074