Руководитель

г. Саратов, МОУ «Лицей прикладных наук»

Фракталы

Математические формы, известные как фракталы, описал в своих работах о «фрактальной геометрии» или «геометрии природы» Бенуа Мандельброт в 1977 и 1982 годах, он опубликовал научные труды, посвященные изучению самоподобных математических форм.

Что такое фрактал?

Фрактал (от латинского «fractus» - разбитый, дробленый, сломанный) представляет собой сложную геометрическую фигуру, которая составлена из нескольких бесконечной последовательности частей, каждая из которых подобна всей фигуре целиком, и повторяется при уменьшении масштаба.

Обычно так называют геометрическую фигуру, которая удовлетворяет одному или нескольким из следующих свойств:

• обладает сложной структурой при любом увеличении;

• является (приближенно) самоподобной;

• обладает дробной фрактальной размерностью;

• может быть построена рекурсивными процедурами.

Фракталы делятся на 3 типа

• Геометрические

• Динамические

• Фракталы в природе.

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

Снежинка Коха

Треугольник Серпинского

Программа 1

uses GraphABC;

var n: integer;

procedure proc1(x, y, l, u: Real; t : Integer);

procedure proc2(Var x, y: Real; l, u : Real; t : Integer);

begin

proc1(x, y, l, u, t);

x := x + l*cos(u); y := y - l*sin(u);

end;

begin

if t > 0 then

begin

l := l/3;

proc2(x, y, l, u, t-1);

proc2(x, y, l, u+pi/3, t-1);

proc2(x, y, l, u-pi/3, t-1);

proc2(x, y, l, u, t-1);

end

else

Line(Round(x),Round(y), Round(x+cos(u)*l),Round(y-sin(u)*l))

end;

begin

write('n=');readln(n);

SetWindowSize(425,500);

proc1(10, 354, 400, pi/3, n);

proc1(410, 354, 400, pi, n);

proc1(210, 8, 400, - pi/3, n);

end.

Программа 2

uses GraphABC;

var c, xa, xb, xc, ya, yb, yc, n,e:integer;

procedure triangle(xa, ya, xb, yb, xc, yc, n:integer);

var xp, xq, xr, yp, yq, yr:integer;

begin

if n>0 then begin

e:= RGB(255,255,255);

xp:=(xb+xc)div 2; yp:=(yb+yc)div 2;

xq:=(xa+xc)div 2; yq:=(ya+yc)div 2;

xr:=(xb+xa)div 2; yr:=(yb+ya)div 2;

SetPenColor(e);

line(xp, yp, xq, yq); line(xq, yq, xr, yr); line(xp, yp, xr, yr);

triangle(xa, ya, xr, yr, xq, yq, n-1);

FloodFill(round((xp+xq)/2-0.5),round((yp+yr)/2),e);

triangle(xb, yb, xp, yp, xr, yr, n-1);

FloodFill(round((xp+xr)/2),round((yp+yq)/2),e);

triangle(xc, yc, xq, yq, xp, yp, n-1);

FloodFill(round((xq+xr)/2-0.5),round((yp+yq)/2),e);

end; end;

begin

xa:=0; ya:=400;

xb:=600; yb:=400;

xc:=300; yc:=1;

writeln('n=?');readln(n);

line(xa, ya, xb, yb); line(xb, yb, xc, yc); line(xa, ya, xc+1,yc);

c:=RGB(0,0,255);

FloodFill(xc, yc+2,c);

triangle(xa, ya, xb, yb, xc, yc, n);

end.

Дерево Пифагора 3

Кривая Леви 4

Программа «Дерево Пифагора»

program tree;

uses GraphABC;

var s:integer;

procedure p1(x, y,l, a:real);

procedure p2(x1,y1,l:integer; a1:real);

begin

MoveTo(x1,y1);

LineTo(x1+round(l*cos(a1)),y1-round(l*sin(a1))); LineTo(x1+round(l*sqrt(2)*cos(a1+pi/4)), y1-round(l*sqrt(2)*sin(a1+pi/4))); LineTo(x1+round(l*cos(a1+pi/2)),y1-round(l*sin(a1+pi/2)));

LineTo(x1,y1);

end;

begin

if l>4 then

begin

p2(round(x), round(y), round(l),a);

p1(x-l*sin(a),y-l*cos(a), l/sqrt(2), a+pi/4);

p1(x-l*sin(a)+l/sqrt(2) *cos(a+pi/4), y-l*cos(a)-l/sqrt(2)*sin(a+pi/4), l/sqrt(2), a-pi/4 );

end;

end;

begin

p1(280,460,100,0);

end.

Программа «Кривая Леви»

program krivaya;

uses GraphABC;

const p = 12;

var i, j, n, m, k: Integer;

x, y, l, a: Real;

begin

SetWindowSize(800,500);

x := 300; y := 240; l := 3;

MoveTo(Round(x), Round(y));

for i:=0 to Round(exp(p*ln(2))) -1 do

begin

a := 0;

n := i;

m := 0;

k := 0;

repeat

m := n mod 2;

n := n div 2;

case m of

0: a := a + pi/4;

1: a := a-pi/4

end;

inc(k);

until k>=p;

x := x + l*cos(a);

y := y + l*sin(a);

LineTo(Round(x), Round(y));

end;

end.

C:\Users\student.LPN\Desktop\Безымянный1.png Звезда Коха

C:\Users\student.LPN\Desktop\Безымянный1.png

Треугольник Серпинского

C:\Users\student.LPN\Desktop\Безымянный1.png

Кривая Леви

C:\Users\student.LPN\Desktop\Безымянный1.png

Дерево Пифагора

Динамические фракталы

НЕ нашли? Не то? Что вы ищете?

Фракталы этого типа возникают при исследовании нелинейных динамических систем (отсюда и название). Поведение такой системы можно описать комплексной нелинейной функцией (многочленом) f(z). Возьмем какую-нибудь начальную точку z0 на комплексной плоскости. Теперь рассмотрим бесконечную последовательность чисел на комплексной плоскости, каждое следующее из которых получается из предыдущего: z0, z1 = f(z0),z2 = f(z1), ... zn+1 = f(zn). В зависимости от начальной точки z0 такая последовательность может вести себя по-разному: стремиться к бесконечности при n → ∞; сходиться к какой-то конечной точке; циклически принимать ряд фиксированных значений; возможны и более сложные варианты.

Фракталы в природе.

Во всем, если приглядеться, можно увидеть примеры фрактальных изображений. На стволе дерева, как и от его ветор, отходят отростки поменьше, от них — еще меньшие, и т. д., то есть ветка подобна всему дереву. Похожим образом устроена и кровеносная система: от артерий отходят артериолы, а от них — мельчайшие капилляры, по которым кислород поступает в органы и ткани. Посмотрим на космические снимки морского побережья: мы увидим заливы и полуострова; взглянем на него же, но с высоты птичьего полета: нам будут видны бухты и мысы и т. д.

Вывод

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