Рекурсивный алгоритм построения фрактальных объектов



МИНОБРНАУКИ РОССИИ

Федеральное государственное бюджетное образовательное

учреждение высшего образования

«Юго-Западный государственный университет»

(ЮЗГУ)

 

Кафедра нанотехнологий и инженерной физики

 

 

УТВЕРЖДАЮ

Проректор по учебной работе

___________ О.Г. Локтионова

«_____» __________ 2015г.

 

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

 

 

Методические указания

к выполнению лабораторной работы

 по дисциплине «Компьютерные технологии

в научных исследованиях»

 

для студентов направления подготовки 222900.68

 

 

Курск 2015

 

УДК 51-72: 519.8: 530.1

 

Составители: А.М.Стороженко, И.А.Шабанова

 

Рецензент

Кандидат физико-математических наук,

доцент А. В. Кочура

 

 

Рекурсивное построение детерминистических фракталов: методические указания к выполнению лабораторной работы по дисциплине «Компьютерные технологии в научных исследованиях» / Юго-Зап. гос. ун-т; сост.: А.М.Стороженко, И.А.Шабанова. Курск, 2015. 10 с.: ил. 2. Библиогр.: с.10.

 

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

Методические указания соответствуют требованиям Федерального государственного образовательного стандарта высшего профессионального образования и учебного плана направления подготовки 222900.68 Нанотехнологии и микросистемная техника, магистерская программа "Нанотехнологии", степень (квалификация) – магистр. Предназначены для студентов всех форм обучения.

 

Текст печатается в авторской редакции

 

Подписано в печать     . Формат 60 x 84 1/16.

Усл. печ. л. 0,58. Уч.-изд. л. 0,53. Тираж 30 экз. Заказ  . Бесплатно.

Юго-Западный государственный университет.

305040 Курск, ул. 50 лет Октября, 94.

 


 

Цель работы: освоить методику моделирования процесса построения детерминистических фракталов на примере фрактала Серпинского.

 

Программное обеспечение: среда Delphi–7, C++ Builder или другой язык программирования высокого уровня.

 

Задание по работе

 

1. По заданному рекурсивному алгоритму составить программу построения самоподобного фрактала – «ковра Серпинского».

2. Реализовать в программной среде алгоритм визуализации фрактального объекта.

3. Составить отчет по работе, содержащий

- задание и цель лабораторной работы,

- описание входных и выходных данных,

- принтскрин разработанной формы,

- перечисление используемых промежуточных переменных и компонентов формы,

- описание разработанных классов и/или процедур (функций),

- блок-схемы подпрограмм,

- результаты тестирования программы,

- листинг рабочего проекта.

 

Теория

 

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

Фракталы – математические объекты дробной размерности, название которых было введено в математику Б.Мандельбортом [Mandelbort]. В настоящее время фракталы являются как предметом самостоятельного исследования математиков, так и инструментарием, используемым в целом ряде прикладных задач нелинейной динамики [Каток, Лихтенберг], теории хаоса [Шустер], обработки сигналов [Кренкель] и др. В классическом учебнике по фракталам [Кроновер] в обобщенном виде подробно описаны известные алгоритмы построения фрактальных объектов (L–системы и терл–графика, случайные системы итерированных функций и др.). В настоящей работе исследуется практическая сторона проблемы построения фрактальных объектов, в частности – алгоритмы построения классических фракталов и их программные реализации.

Фракталы Мандельброта и Жюлиа

Само слово фрактал было предложено Мандельбротом, автором книги о природе фрактальной геометрии: "Фракталом называется структура, состоящая из частей, которые в каком-то смысле подобны целому". Поэтому знакомство с фракталами начнем с так называемыми множествами Мандельброта и Жюлиа. Для начала ограничим комплексную плоскость (мнимые числа ось Y) квадратом размером 4. Затем к каждой точке (которое попадет в изображение) этого квадрата применим рекурсивную формулу: Z(n+1) =Z2(n) +C. Вычисления идут пока очередное Z(n+1) не вышло за пределы круга, например, радиуса 2, или не превышен предел итерации, который также устанавливается нами. После этого нам остается лишь отобразить этот квадрат на область изображения или экрана. Число итераций для каждой точки можно использовать в качестве индекса цвета в палитре. Различие между двумя множествами Мандельброта (рис. 1а) и Жюлиа (рис. 1б) состоит в использовании формулы. Если мы зафиксируем Z(0)=0 и будем менять C, то получим множество Мандельброта. Если же мы зафиксируем С и будем менять Z(0), то получим множество Жюлиа.

                        а                                                            б

Рис. 1

Рекурсивный алгоритм построения фрактальных объектов

Рассмотрим применение данного алгоритма на примере построения самоподобного фрактала – «ковра Серпинского». Алгоритм построения простейшего «ковра Серпинского» (рис. 2а), сводится к следующему: берётся сплошной квадрат, разрезается на 9 равных квадратов и удаляется внутренность центрального квадрата. На втором шаге удаляется 8 центральных квадратов из 8 оставшихся квадратов и т. д. После бесконечного повторения этой процедуры, от сплошного квадрата остается замкнутое подмножество – искомое изображение ковра Серпинского.

     а                                         б                               в

Рис. 2

В 1915 году польский математик Вацлав Серпинский придумал занимательный объект, известный как решето Серпинского. Этот треугольник один из самых ранних известных примеров фракталов. Существует несколько способов построения этого фрактала. Один из них представляет следующий процесс. Берется сплошной равносторонний треугольник, на первом шаге из центра удаляется перевернутый треугольник. На втором шаге удаляется три перевернутых треугольника из трех оставшихся треугольников. Продолжая этот процесс, на n-ом шаге удаляем 3n-1 перевернутых треугольников из центров 3n-1 оставшихся треугольников. По теории этот процесс бесконечен, в результате в треугольнике не остается сплошных площадей, но и на части он не распадается - получается объект, состоящий из одних только пустот. Это и есть треугольник Серпинского. Программа его построения на языке Pascal, дающая изображение (рис. 2б) приведена ниже:

 

Program FracSierp2;

Uses CRT, Graph;

Var gd, gm : Integer;

Const iter = 5;

Procedure tr(x1, y1, x2, y2, x3, y3: Real);

Begin

Line(round(x1), round(y1), round(x2), round(y2));

Line(round(x2), round(y2), round(x3), round(y3));

Line(round(x3), round(y3), round(x1), round(y1));

End;

Procedure draw(x1, y1, x2, y2, x3, y3: Real; n: Integer);

Var x1n, y1n, x2n, y2n, x3n, y3n : Real;

Begin

If n > 0 then

Begin

x1n := (x1 + x2) / 2; y1n := (y1 + y2) / 2;

x2n := (x2 + x3) / 2; y2n := (y2 + y3) / 2;

x3n := (x3 + x1) / 2; y3n := (y3 + y1) / 2;

tr(x1n, y1n, x2n, y2n, x3n, y3n);

draw(x1, y1, x1n, y1n, x3n, y3n, n - 1);

draw(x2, y2, x1n, y1n, x2n, y2n, n - 1);

draw(x3, y3, x2n, y2n, x3n, y3n, n - 1);

End;

End;

Begin

gd := Detect; InitGraph(gd,gm,''); tr(320,10,600,470,40,470);

draw(320,10,600,470,40,470,iter);

ReadKey;

CloseGraph;

End.

 


Дата добавления: 2018-10-27; просмотров: 644; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!