FRAKTALE(2) - UKŁADY ITEROWANYCH ODWZOROWAŃ ZWĘŻAJACYCH

Od dawna była znana w matematyce metoda rozwiązywania równania x=f(x), polegająca na tworzeniu ciągu kolejnych przybliżeń rozwiązania:
x0, x1, x2, ... , xn, ...
gdzie x0 jest dowolne, a xn+1 = f(xn).

Twierdzenie Banacha o odwzorowaniach zwężajacych (podstawowe twierdzenie analizy funkcjonalnej) podaje ogólne założenia, przy których ten ciąg jest zbieżny do rozwiazania równania.

Rozpatrzmy teraz nie jedno, ale układ dwóch równań dla dwóch zmiennych: x=f(x,y) i y=g(x,y). Dla funkcji liniowych mamy:

x' = a*x + b*y + c
y' = d*x + e*y + f

Można uważać, ze punktowi (x,y) na płaszczyźnie przyporządkowaliśmy nowy punkt (x',y').

Jeśli każdy odcinek przekształcony w ten sposób ma długość mniejszą od pierwotnego,
to odwzorowanie jest ZWĘŻAJĄCE, zbieżne do pewnej granicy.

Do konstruowania fraktali wykorzystuje się kilka, powiedzmy k takich układów równań. Losujemy jeden z numerów: 1,2, ...k, przekształcamy współrzędne (x,y) punktu według wybranego układu równań i rysujemy na ekranie nowy punkt. Każdy następny punkt jest obrazem poprzedniego punktu, przekształconego przez jedno z wylosowanych odwzorowań.

Kolejne położenia punktu nie są zbieżne do żadnego granicznego punktu, lecz błądzą "w sposób chaotyczny" po pewnym zbiorze punktów zwanym atraktorem tego układu przekształceń. Ten atraktor wykazuje cechy samopodobieństwa.

    PRZYKŁADY:

Równoboczny trójkątny dywan Sierpińskiego powstaje w wyniku wielokrotnych przekształceń punktu przez losowo wybrane jedno z trzech odwzorowań,
dla l=0.5

Krzywa von Kocha powstaje w wyniku dwóch układów przekształceń:

Aby uzyskać płatek, trzeba dodatkowo wyświetlać punkty obrócone o 120o
względem środka figury:
drugie ramię płatka:    x"= 0.5*x' - 0.87*y';            y"= -0.87*x'- 0.5*y'
trzecie ramię płatka:   x'''= długość linii boku - x";   y''' = y"                   

Choinka - atraktor układu aż czterech odwzorowań:

Nakrapiane jajo - atraktor układu dwóch odwzorowań:
Jeśli wziąć kilka takich jaj, obrócić je lekko i umieścić na gałązkach,
które także są zrobione z przepisu na jajo, tylko nieco wydłużone i skrzywione,
to otrzymamy gustowny bukiecik bazi.
Smok - atraktor układu dwóch odwzorowań:

Oto program w Delphi, który wyświetli takiego smoka (podaję tylko deklaracje zmiennych i część implementation). Na formularzu jest umieszczony przycisk Button1, którego kliknięcie kończy pracę programu.

var Form1: TForm1;
       x0, y0, skala: Integer;
       koniec: Boolean;

implementation
{$R *.DFM}

procedure TForm1.FormClick(Sender: TObject);
var x,y,x1:Real;
       i:Integer;       {i - numer odwzorowania: 0 lub 1}
begin
   x:=0; y:=0;                 {początkowe wartości x i y}
   while not koniec do
   begin
     i:=Random(2);                 {losuję odwzorowanie}
     case i of
     0 : begin
             x1:=-0.4*x-1;
             y:=-0.4*y+0.1;
             x:=x1;
           end;
     1 : begin
             x1:=0.76*x-0.4*y;
             y:=0.4*x+0.76*y;
             x:=x1;
           end;
     end;
     Canvas.Pixels[x0+Round(skala*x),
                             y0-Round(skala*y)]:=clWhite;
     Application.ProcessMessages;        {sprawdzam czy}
   end;         {są jakieś zdarzenia systemowe, konkretnie}
end;               {czy naciśnięto Button z napisem KONIEC}

procedure TForm1.FormCreate(Sender: TObject);
begin
   Randomize;
   x0:=Round(0.65*ClientWidth); {środek figury}
   y0:=Round(0.4*ClientHeight);
   skala:=300;                         {wielkość figury}
   koniec:=False;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   koniec:=True;
   Close;
end;

end.

Można sprawdzić, które z punktów obrazu powstały w wyniku odwzorowania numer 0, a które z odwzorowania numer 1 ( na przykład przyporządkować tym odwzorowaniom różne kolory pixeli).

Spróbuj narysować jeden z powyższych obiektów, lub ich kombinację, lub wymyśl swój własny układ odwzorowań tworzących fraktal.

Jeśli będziesz samodzielnie konstruować układy równań, to pamiętaj że w uładzie równań:

x' = a*x + b*y + c
y' = d*x + e*y + f

  • współczynniki a, b, d, e powinny być <1 ( w sensie wartości bezwzględnej ), aby odwzorowanie bylo zwężające;
  • współczynniki b, e wiążą się z obrotem punktu względem środka układu współrzędnych ;
  • współczynniki c, f wiążą się z przesunięciem punktu w układzie współrzędnych.

powrót