Фрактальный папоротник и аффинные преобразования

Построения отпечатка истинного фрактала с помощью итерируемых функций или IFS-метода. Построение алгоритма в виде циклически повторяющейся конструкции Case. Реализация программного кода для треугольника Серпинского. Рекурсивные замены для предфракталов.

Рубрика Программирование, компьютеры и кибернетика
Вид доклад
Язык русский
Дата добавления 28.08.2013
Размер файла 14,1 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Фрактальный папоротник и аффинные преобразования

Около четырехсот миллионов лет назад из теплого девонского моря, населенного диковинными рыбами, на еще безжизненную сушу начали наползать первые растения. Позднее на первобытной Земле многие миллионы лет шумели карбонские леса, состоящие преимущественно из гигантских древовидных папоротников. Живописные видения того далекого времени в стиле палео-арт можно отыскать в закоулках интернета. Благодаря своему невероятно древнему происхождению папоротники представляют собой живую иллюстрацию самых фундаментальных природных формообразовательных алгоритмов. Вместе с тем это и классический пример фрактальной геометрической структуры. В одной из моих прошлых статей я рассказывал об L-формализме, который позволяет строить подобные фигуры. Однако, используя рекурсивные замены, мы всегда строим лишь предфрактал какого-либо заданного порядка. Для построения отпечатка истинного фрактала используется другой подход, называемый методом итерируемых функций или IFS-методом (аббревиатура IFS происходит от английских слов iterated function system). IFS-метод основан на аффинных (от лат. affinis - родственный) преобразованиях координат точек по формулам:

фрактал треугольник серписнкий

X=ax+by+e

Y=cx+dy+f,

где a, b, c, d, e, f - заданные коэффициенты, x и y - текущие координаты, а X и Y - вновь вычисленные значения координат. В начале процесса задается исходная позиция. Каждая последующая точка рассчитывается на основе предыдущей по указанным выше формулам. Для построения изображения листа папоротника одновременно используются четыре различных набора коэффициентов, каждый из которых выбирается на очередном шаге с определенной вероятностью при помощи генератора случайных чисел. Описанный алгоритм можно реализовать в виде циклически повторяющейся конструкции Case.

Private Sub Form_Click()

Randomize Timer

x = 0

y = 0

For i = 1 To 70000

r = Rnd

Select Case r

Case 0 To 0.01

a = 0: b = 0: c = 0: d = 0.16: e = 0: f = 0

Case 0.01 To 0.8

a = 0.85: b = 0.04: c = -0.04: d = 0.85: e = 0: f = 1.6

Case 0.8 To 0.9

a = 0.2: b = -0.26: c = 0.23: d = 0.22: e = 0: f = 1.6

Case 0.9 To 1

a = -0.15: b = 0.28: c = 0.26: d = 0.24: e = 0: f = 0.44

End Select

X1 = (a * x) + (b * y) + e

Y1 = (c * x) + (d * y) + f

x = X1

y = Y1

PSet (x + 10, 11 - y), RGB(0, 100, 0)

Next i

End Sub

Метод IFS представляет собой хорошую иллюстрацию принципа системности. Изменение одного из коэффициентов влияет, так или иначе, на всю структуру в целом. В этом смысле влияние коэффициентов в аффинных преобразованиях на форму итогового листа можно сравнить с влиянием генов на фенотипические структуры организма. Все влияет на все. Например, если приравнять к нулю коэффициент d в первом преобразовании, то во всей итоговой структуре исчезнут стебельки. Если начать изменять симметричные значения коэффициентов b и c во втором преобразовании, то все элементы структуры листа в ответ будут скручиваться либо распрямляться (в зависимости от того, будем ли мы увеличивать или уменьшать их абсолютные величины).

При помощи метода IFS можно, разумеется, строить не только изображение листа папоротника, но и другие фрактальные структуры, такие, например, как треугольник Серпинского или снежинка фон Кох. Нужно лишь подобрать соответствующие коэффициенты. Например, треугольник Серпинского появится на экране в результате реализации следующего программного кода:

Private Sub Form_Click()

x = 0

y = 0

For i = 1 To 40000

r = Rnd

Select Case r

Case Is < (1 / 3)

x = 0.5 * x

y = 0.5 * y

Case (1 / 3) To (2 / 3)

x = 0.5 * x

y = 0.5 * y + 3000

Case Is > (2 / 3)

x = 0.5 * x + 1500

y = 0.5 * y + 1500

End Select

PSet (y + 1000, 5000 - x), RGB(0, 0, 0)

Next i

End Sub

При использовании формул IFS мы получаем отпечаток истинного фрактала, ограниченного лишь разрешающей способностью устройства отображения. В приведенных выше программных фрагментах используется генератор случайных чисел. Каждый из возможных наборов коэффициентов выбирается случайно с какой-то заданной вероятностью. При этом создается впечатление, что точки одна за другой налипают на висящий в пространстве призрачный фрактальный аттрактор, постепенно делая его видимым. Возможно использование и детерминированных алгоритмов построения фрактальных объектов методом IFS. Заинтересованный читатель найдет исчерпывающую информацию на этот счет в добротном учебнике: Р.М. Кроновер "Фракталы и хаос в динамических системах. Основы теории". Москва: Постмаркет, 2000. - 352 с. Появление учебников по фрактальной геометрии - знаковое событие. Недалеко то время, когда основы фрактальной геометрии войдут обязательной составной частью даже в школьную программу. Это не просто новый модный раздел геометрии. Фрактальная геометрия знаменует собой качественно новый этап ее развития.

В заключении процитирую мысль одного неизвестного сетевого автора, подписавшегося как Hard Wisdom. Сам он отнесся к своей идее как к малозначительному курьезу или приколу, но мне думается, что это нечто большее. Hard Wisdom между прочим высказал сколь элементарную, столь и глубокую мысль о том, что числа - это также не что иное, как фракталы. Он пишет: "Давайте взглянем на обычные целые числа, записанные в позиционной системе счисления. Очевидно, что любая часть такого числа - тоже число! Доказательство данного факта вряд ли необходимо.;-) Давайте отобразим графически число, взятое в двоичной системе счисления (исключительно ради наглядности, для произвольной системы счисления надо лишь использовать большее количество цветов, чем 2:-). Цифру 1 будем изображать закрашенной точкой, а цифру 0 - пробелом.

Итак: на шкале N отложены числа, на шкале R - цифры в позиции числа. Мы можем заметить интересную симметрию (связанную с основанием системы счисления, в частности, причем симметрию рекурсивную)" www.pilabs.org.ua/wisdom/articles/fractals_rus.html. В какие философские глубины может завести это простое, на первый взгляд, сравнение, предлагаю изучить читателям самостоятельно.

Размещено на Allbest.ru


Подобные документы

  • Сведения о фракталах, способы их построения. Неизменность геометрических особенностей фрактала при изменении масштаба. Алгоритм построения фрактала и его реализация в программе. Длина береговой линии и понятие фрактала. Салфетка и ковер Серпинского.

    курсовая работа [579,4 K], добавлен 12.01.2012

  • Рассмотрение алгоритма, основанного на использовании рекурсивной функции. Пример построения простого самоподобного фрактала - ковра Серпинского, снежинки Коха, кривых Пеано и Гильберта. Понятие L-система и терл-графика. Составление программы "Koch.m".

    курсовая работа [3,6 M], добавлен 14.12.2012

  • Классификация и стек рекурсивных функций. Методика распознавания формулы, записанной в строке. Реализация салфетки Серпинского и задачи о Ханойских башнях. Алгоритм быстрой сортировки. Создание функции, сортирующей массив с использованием рекурсии.

    лабораторная работа [160,8 K], добавлен 06.07.2009

  • Описание и особенности некоторых алгоритмов архивации. Построение кода Хаффмана. Динамический алгоритм построения кода Хаффмана. Обратное восстановление текста. Способы двухступенчатого кодирования информации. Практическая реализация алгоритма LZ77.

    курсовая работа [51,7 K], добавлен 24.12.2012

  • Примеры построения тестов и технологии исследования алгоритмов на их основе. Построение тестов на основе метода покрытия решений и проведение исследования соответствующего исходного алгоритма и алгоритма с ошибками в операторах проверки условий.

    контрольная работа [224,8 K], добавлен 24.05.2016

  • Определение уравнения одной и двух прямых на плоскости. Составление рекурсивного алгоритма построения всевозможных простых замкнутых ломаных через n произвольных точек методом треугольника и его реализация с помощью языка программирования Turbo Pascal.

    курсовая работа [475,9 K], добавлен 25.02.2010

  • Особенности метода неопределенных множителей Лагранжа, градиентного метода и метода перебора и динамического программирования. Конструирование алгоритма решения задачи. Структурная схема алгоритма сценария диалога и описание его программной реализации.

    курсовая работа [1010,4 K], добавлен 10.08.2014

  • Краткая история становления языка программирования Pascal и основные понятия графики. Основные функции и процедуры работы с графикой в PascalABC. Создание графического проекта: понятие "фрактал" и реализация треугольника. Построения фрактала "Дерево".

    курсовая работа [1,4 M], добавлен 26.10.2014

  • Освоение метода аналитической иерархии на примере задачи о выборе автомобиля. Вычисление коэффициентов важности. Определение наилучшей альтернативы. Реализация задачи в виде программного продукта в Microsoft.NET Framework на языке C#, описание интерфейса.

    курсовая работа [2,4 M], добавлен 13.02.2016

  • Синтез автомата для преобразования двоично-десятичного кода. Кодировка алфавитов и состояний. Построение булевых функций, минимизация. Разметка вход-выходных слов для автомата Мили и автомата Мура. Реализация на элементах малой степени интеграции.

    контрольная работа [141,5 K], добавлен 14.10.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.