МегаПредмет

ПОЗНАВАТЕЛЬНОЕ

Сила воли ведет к действию, а позитивные действия формируют позитивное отношение


Как определить диапазон голоса - ваш вокал


Игровые автоматы с быстрым выводом


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


Целительная привычка


Как самому избавиться от обидчивости


Противоречивые взгляды на качества, присущие мужчинам


Тренинг уверенности в себе


Вкуснейший "Салат из свеклы с чесноком"


Натюрморт и его изобразительные возможности


Применение, как принимать мумие? Мумие для волос, лица, при переломах, при кровотечении и т.д.


Как научиться брать на себя ответственность


Зачем нужны границы в отношениях с детьми?


Световозвращающие элементы на детской одежде


Как победить свой возраст? Восемь уникальных способов, которые помогут достичь долголетия


Как слышать голос Бога


Классификация ожирения по ИМТ (ВОЗ)


Глава 3. Завет мужчины с женщиной


Оси и плоскости тела человека


Оси и плоскости тела человека - Тело человека состоит из определенных топографических частей и участков, в которых расположены органы, мышцы, сосуды, нервы и т.д.


Отёска стен и прирубка косяков Отёска стен и прирубка косяков - Когда на доме не достаёт окон и дверей, красивое высокое крыльцо ещё только в воображении, приходится подниматься с улицы в дом по трапу.


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

IFS- алгоритм построения фракталов





IFS (Iterated Function System – итеративные функциональные системы) фракталы несложны в реализации и позволяют получить изображения таких природных объектов как растения. Схема их генерации следующая: определим N матриц преобразований и выберем некую стартовую точку, например, с координатами (0,0). В зависимости от масштаба и точности изображения установим максимальное число итераций, например 10000. Далее, на каждой итерации случайным образом применяем к нашей точке одно из преобразований, например, с помощью матрицы афинских коэффициентов (1) и выводим ее на экран.

(1)

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

Треугольник Серпинского в виде (рис. 2б) также легко построить с помощью IFS-преобразований (1). Программа для его построения этим методом на языке Pascal имеет вид:

 

program FracSierp;

Uses CRT, Graph;

Var gd,gm : Integer;

t, x, y, p : Real;

k : LongInt;

mx, my, rad : Integer;

Procedure draw;

const iter = 50000;

Begin

mx := 320; my := 479; rad := my;

Randomize;

x := 0.0; y := 0.0;

For k := 1 To iter Do

Begin

p := Random;

t := x;

If p < = 1/3 Then

Begin

x:=0.50*x+0.0*y+0.0;

y:=0.00*t+0.50*y+0.5;

End

Else

If p < = 2/3 Then

Begin

x:= 0.5*x+0.0*y-0.25;

y:=0.0*t+0.5*y+0.0;

End

Else

Begin

x:=0.50*x+0.0*y+0.25;

y:=0.0*t+0.5*y+0.0;

End;

PutPixel(mx+Round(rad*x), my-Round(rad*y), 2);

End;

End;

Begin

gd := Detect;

InitGraph(gd,gm,'');

draw;

ReadKey;

CloseGraph;

End.

 

Еще один способ построения треугольника Серпинского:

 

Program Sierp10;

Uses CRT, Graph;

Var gd, gm: Integer;

l, x, y: Real;

Begin

gd:=Detect;

InitGraph(gd, gm, 'c:\bp\bgi');

x:=0; y:=0;

Randomize;

While not Keypressed Do

Begin

l:=2/3*pi*random(3); x:=x/2+cos(l); y:=y/2+sin(l);

PutPixel(320 + Round(x*130), 240 + Round(y*130), 14);

End;

Readkey;

CloseGraph;

End.

 

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

 

{$N+}

Program PascalMod2;

Uses Crt, Graph;

Const max=31;

Var n, i: Integer;

gd,gm: Integer;

Function Fact(m: Integer): Real; {m!}

Var j: Integer;

s: Real;

Begin

s:=1;

For j:=1 to m do s:=s+j;

Fact:=s;

End;

Function BinomCoeff(m, k: Integer): Integer;

Begin

BinomCoeff:=Round(Fact(m)/Fact(k)/Fact(m-k));

End;

Begin

gd:=Detect;

InitGraph(gd, gm, 'c:\bp\bgi');

SetColor(15);

For n:=0 to max do

For i:=0 to n do

If BinomCoeff(n,i) mod 2 = 0

Then OutTextXY(n+8, i+8,' ')

Else OutTextXY(n+8, i+8,'+');

ReadKey;

CloseGraph;

End.

ВАРИАНТЫ ЗАДАНИЯ

 

1. Ковер Серпинского – квадрат (рис. 2а).

2. Ковер Серпинского – правильный треугольник (рис. 2б).

3. Ковер Серпинского – равнобедренный прямоугольный треугольник (рис. 2в).

 

 

КОНТРОЛЬНЫЕ ВОПРОСЫ

 

1. Что вы понимаете под фрактальным кластером?

2. Каковы основные модели формирования фрактальных кластеров?

3. В чем принципиальная разница и сходство фракталов Мандельброта и Жулиа?

4. Поясните последовательность действий, реализующих треугольный ковер Серпинского.

5. Поясните последовательность действий, реализующих квадратный ковер Серпинского.

4. Какие алгоритмы называются рекурсивными?

 

 

ОСНОВНЫЕ ИСТОЧНИКИ

1. Ибрагимов И.М. Основы компьютерного моделирования наносистем. Учебное пособие / И.М. Ибрагимов, А.Н. Ковшов, Ю.Ф. Назаров. - М. : Лань, 2010. - 384 с.

2. Архангельский А.Я. Программирование в Delphi 7. М.: ООО «Бином-Пресс», 2003 г. — 1152 с.

 

 

ДОПОЛНИТЕЛЬНАЯ ЛИТЕРАТУРА

 

1. Кроновер Р.М. Фракталы и хаос в динамических системах. Основы теории. М.: Постмаркет, 2000. – 352 с.

2. Федер Е. Фракталы: Пер. с англ. – М.: Мир, 1991. – 254 с.



3. Гулд Х., Тобочник Я. Компьютерное моделирование в физике. – В 2 т.– 1992 (http://www.twirpx.com)

 

 





©2015 www.megapredmet.ru Все права принадлежат авторам размещенных материалов.