Руководитель
г. Саратов, МОУ «Лицей прикладных наук»
Фракталы
Математические формы, известные как фракталы, описал в своих работах о «фрактальной геометрии» или «геометрии природы» Бенуа Мандельброт в 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. | ||
|
Треугольник Серпинского |
Кривая Леви |
Дерево Пифагора |
Динамические фракталы
Фракталы этого типа возникают при исследовании нелинейных динамических систем (отсюда и название). Поведение такой системы можно описать комплексной нелинейной функцией (многочленом) f(z). Возьмем какую-нибудь начальную точку z0 на комплексной плоскости. Теперь рассмотрим бесконечную последовательность чисел на комплексной плоскости, каждое следующее из которых получается из предыдущего: z0, z1 = f(z0),z2 = f(z1), ... zn+1 = f(zn). В зависимости от начальной точки z0 такая последовательность может вести себя по-разному: стремиться к бесконечности при n → ∞; сходиться к какой-то конечной точке; циклически принимать ряд фиксированных значений; возможны и более сложные варианты.
Фракталы в природе.
Во всем, если приглядеться, можно увидеть примеры фрактальных изображений. На стволе дерева, как и от его ветор, отходят отростки поменьше, от них — еще меньшие, и т. д., то есть ветка подобна всему дереву. Похожим образом устроена и кровеносная система: от артерий отходят артериолы, а от них — мельчайшие капилляры, по которым кислород поступает в органы и ткани. Посмотрим на космические снимки морского побережья: мы увидим заливы и полуострова; взглянем на него же, но с высоты птичьего полета: нам будут видны бухты и мысы и т. д.
Вывод
В наши дни теория фракталов находит широкое применение в различных областях человеческой деятельности. Помимо фрактальной живописи фракталы используются в теории информации для сжатия графических данных и построении технических устройств.


Звезда Коха


