· Разделим
-мерное евклидово пространство сетью
клеток, состоящей из
-мерных кубов со стороной
Пусть
обозначает
число клеток, имеющих непустое пересечение с
. Тогда
Например, для ковра Серпинского, при имеем
при
в каждом из восьми квадратов будет
содержаться восемь квадратов, пересекающихся с ковром, значит,
При любом натуральном
и
получаем
Следовательно,
Пример 8. Кривая
Серпинского. Рассмотрим прямоугольный треугольник, длина катетов которого
равна 1. Разобъем его на 4 равных треугольника, как это показано на рис. 6 и
удалим средний треугольник.
Затем эту процедуру применим к каждому из оставшихся треугольников и т.д. В пределе получим множество, которое называется кривой Серпинского и обладает рядом замечательных свойств: его площадь равна нулю, длина периметра этого множества равна бесконечности и т.д.
Приведем текст программы, выводящий фигуру, полученную после нескольких шагов.
//Кривая Серпинского serp5k.cpp
#include <graphics.h>
#include <conio.h>
float xmin = -0.5, xmax = 1.5, ymin = -0.5, ymax = 1.5;
int ex(float x)
{ return (int)((x-xmin)/(xmax-xmin)*(getmaxx()+1));}
int ey(float y)
{ return (int)((ymax-y)/(ymax-ymin)*(getmaxy()+1));}
void triangle (float x1, float y1, float x2, float y2,
float x3, float y3, int color)
{
int z[6];
z[0]= ex(x1); z[1]= ey(y1); z[2]= ex(x2);
z[3]= ey(y2); z[4]= ex(x3); z[5]= ey(y3);
setfillstyle(SOLID_FILL, color); // setcolor(BLACK);
fillpoly(3, z);
}
void serp5k(float x1, float y1, float x2, float y2, float x3, float y3, int M, int color)
{
if (M>0)
{
serp5k(x1, y1, (x1+x2)/2, (y1+y2)/2, (x1+x3)/2,
(y1+y3)/2, M-1, color);
serp5k((x1+x2)/2, (y1+y2)/2, x2, y2, (x2+x3)/2,
(y2+y3)/2, M-1, color);
serp5k((x1+x3)/2, (y1+y3)/2, (x2+x3)/2, (y2+y3)/2,
x3, y3, M-1, color);
} else triangle (x1,y1,x2,y2,x3,y3,color);
}
main()
{
int gd=DETECT, gm;
initgraph(&gd,&gm,”C:\\PROGRAMM\\BC31\\BGI”);
setfillstyle(SOLID_FILL, WHITE);
bar(0, 0, getmaxx(), getmaxy());
setcolor(BLACK);
serp5k(0,0,1,0,0,1,4,BLACK);
getch();
closegraph();
return 0;
}
В главной программе подпрограмма, соответствующая процедуре,
описанной выше, вызывается для значения аргумента . В
результате на экран будет выведена фигура, полученная после четырех шагов (рис.
7)
Вычислим размерность кривой
Серпинского. С этой целью разделим плоскость сетью прямых
и
, где
и
пробегают
целые числа. Плоскость будет разбита на квадраты со стороной
Поскольку 3 квадрата имеют общие точки с кривой Серпинского,
то Затем разобьем плоскость сетью прямых
и
.
Получим
Повторяя разбиения для
получим
Следовательно,
Системы итерируемых функций. Пусть - полное метрическое пространство,
- конечное множество сжимающих отображений
в себя. В этом случае
называется системой итерируемых функций
или
Пусть - ограниченное
замкнутое подмножество,
- множество его
замкнутых подмножеств с метрикой Хаусдорфа. Тогда для произвольной системы итерируемых
функций
отображение
,
сопоставляющее каждому замкнутому подмножеству
множество
будет сжатием метрического пространства
относительно метрики Хаусдорфа.
Согласно принципу Банаха для сжатых
отображений, в силу полноты существует
единственное подмножество
такое, что
Это подмножество
называется
аттрактором или инвариантным множеством для
Аттрактор
для
будет, как правило, фракталом. Его можно
вычислить как предел относительно метрики Хаусдорфа
, для
произвольного подмножества
Например, рассмотренный выше ковер Серпинского является аттрактором
системы, состоящей из восьми итерируемых функций, отображающих единичный
квадрат в себя.
Кривая Серпинского также является аттрактором системы
итерируемых функций отображающих треугольник
в себя. Эти отображения для кривой
Серпинского определены следующим образом:
Вычисление коэффициентов афинных преобразований.
Системы итерируемых функций могут состоять из афинных преобразований, которые
задаются с помощью матриц. Афинному преобразованию
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.