Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Lekce 6 - IFS fraktály

V minulé lekci, Mandelbrotova a Juliova množina, jsme probrali Mandelbrotovu a Juliovu množinu, jejich popis a uvedli si zdrojový kód ke generování těchto známých fraktálů.

Na rozdíl fraktálů diskutovaných v předchozích dvou odděleních se nejedná o polynomické fraktály. Zatímco polynomické fraktály jsou definovány jednou rovnicí (pravidlem), IFS mohou vznikat na základě více pravidel. Přesto se jedná mnohdy o velice jednoduché útvary. Jejich konstrukce, která se provádí stochastickou cestou, se dá obecně popsat tak, že na nějaký počáteční bod aplikujeme transformační pravidla w1,w2, … wns určitou pravděpodobností. Součet pravděpodobností se rovná 1. Po jedné iteraci získáme nový počáteční bod či jejich soustavu a iterativně na nich aplikujeme onen soubor pravidel. Tento způsob se někdy nazývá chaotická hra. Pro dosažení kýženého výsledku musíme provést několik tisíc iterací, ale u některých fraktálů vidíme hrubý obrys výsledku už od prvních iterací. Příkladem může být Cantorovo mračno.

Cantorovo mračno (diskontinuum)

Jedná se patrně o nejjednodušší fraktál vůbec a asi pro vás nebude těžké uhádnout, že je to iterační funkční systém. Vychází z úsečky. Na ni iterativně aplikujeme jen jedno pravidlo - rozdělíme úsečku na tři části a vyjmeme tu prostřední.

Fraktály

Cantorovo mračno po několika iteracích

Díky Cantorovu mračnu prý B. Mandelbrot odstranil šum na telekomunikačních linkách firmy IBM. Tehdy patrně ještě netušil že DH=log(2)/log­(3)=0.6309.

Sierpinského trojúhelník

Toto je pro změnu jakýsi reprezentant všech IFS fraktálů. Výchozí bod zde představuje trojúhelník (nejlépe rovnostranný či ramenný). Může se vytvářet několika způsoby, nejnázornější je následující:

Máme tedy trojúhelník a rozdělíme jej na 4 stejné části (podle středních příček). Prostřední části vyjmeme. Toto pravidlo aplikujeme na zbylé 3 trojúhelníky, pak na zbylých 9, 27, 81 (co přijde asi pak?). Výhoda této metody je jak už jsem uvedl v názornosti (už od začátku vidíme stále se zpřesňující torzo výsledku), ale bohužel se nejedná o chaotickou hru. Jak na ní? U trojúhelníku máme pochopitelně tři vrcholy ABC a ještě potřebujeme náhodně zvolený bod Z na obvodu trojúhelníka. Od tohoto bodu vedeme pomyslnou úsečku k náhodně zvolenému vrcholu. Úsečku nezakreslujeme, ale v jejím středu zakreslíme bod Z1. Od něho znovu vedeme úsečku k náhodnému vrcholu a opět zakreslíme jen její střed. Po několika tisících iteracích se nám začne z bodů skládat výsledek:

Fraktály

Sierpinského trojúhelník

Jeden můj kamarád vlastnící programovatelnou kalkulačku úspěšně implementoval chaotickou hru. Na tom není nic divného, ale podobný výsledek dostal i tehdy, když bod vykreslil na třetině, čtvrtině, pětině... úsečky. Podobný obrázek dostal dokonce i tehdy, když vykreslil bod úplně mimo úsečku (ale podle neměnných pravidel)! Počáteční bod nemusel dokonce ležet ani na obvodu trojúhelníka, mohl se nacházet úplně mimo! Pak se prvních pár bodů sice vykreslilo jinde, ale pak systém rychle konvergoval. Podobné experimenty dokazují, že ač je tento postup hrou na chaos, je neobyčejně stabilní, i když do něj kopeme kanadama. Dále se nabízí možnost aplikovat chaotickou hru na čtverec či n-úhelníky.

Mezi Pascalovým a Sierpinského trojúhelníkem si vnímavější jedinci povšimnou až znepokojující podobnosti:

                        1                      
                      1   1                      
                    1   2   1                    
                  1   3   3   1                  
                1   4   6   4   1                
              1   5   10   10   5   1              
            1   6   15   20   15   6   1            
          1   7   21   35   35   21   7   1          
        1   8   28   56   70   56   28   8   1        
      1   9   36   84   126 126 84   36   9   1      
    1   10   45   120 210 252 210 120 45   10   1    
  1   11   55   165 330 462 462 330 165 55   11   1  
1   12   66   220 495 792 924 792 495 220 66   12   1

DH = log(3) / log(2) = 1.5850

Sierpinského kobereček

Sierpinsky se neomezil jenom na trojúhelník, ale experimentoval i s jinými útvary. V tomto případě se čtvercem. Způsob generování tohoto fraktálu je také velice jednoduchý. Jako počáteční bod si zvolíme čtverec. Na každé jeho straně vyznačíme jejich třetiny. Protilehlé body spojíme. Uprostřed původního čtverce tak vznikne nový čtverec - délka jeho strany se rovná třetině délky strany původního čtverce a nachází se uprostřed původní čtvercové plochy. Vyjmeme jej, zůstane nám tedy 8 těchto třetinových čtverců. Na ty aplikujeme stejné pravidlo.

Fraktály

Sierpinského kobereček, DH= log(8) / log(3) = 1.8928

Kapradí

IFS fraktály se neomezují jen na jednoduché geometrické útvary. IFS fraktál můžete vytvořit prakticky z čeho chcete. Například z kapradí. Konečně se dostáváme k dvěma afinním transformacím. Jsou definovány jako parametrické rovnice:

  • xi + 1 = axi + byi + e
  • yi + 1 = cxi + dyi + f

kde parametry a, b, c, d, e, f, p jsou definovány takto:

Parametr a b c d e f p
  0 0 0 0,16 0 0 328
  0,2 -0,26 0,23 0,22 0 1,6 2621
  -0,15 0,28 0,26 0,24 0 0,44 4915
  0,755 0,04 -0,04 0,85 0 1,6 32767

Parametr p určuje pravděpodobnost jednotlivých transformací.

Fraktály

Kapradí

Kochova vločka

Další dobře známý fraktál. Také vzniká pomocí velmi jednoduchých transformací. Počáteční bod tvoří rovnostranný trojúhelník. Doprostřed každé stany přidáme další rovnostranný trojúhelník a tak pořád dokola. Výsledek vidíte na obrázku:

Fraktály

Kochova vločka

Závěr

IFS fraktály jsou velice user-friendly skupinou fraktálů. Lehce se generují (samozřejmě existují i složité IFS), dobře vypadají a každý si může vymyslet ten svůj. V tomto textu jsou uvedeny čtyři druhy, ale lepší by bylo říci čtyři třídy fraktálů. Na většinu útvarů lze vymyslet nějakou tu afinní transformaci. Těžko ale vytvoříte IFS na základě kruhu. Jediná možnost je iterativně zmenšovat kruh, ale tím fraktál neuděláte. Z kruhu těžko vytvoříte kopie jeho samého. Dalším takovýmto nevděčným objektem jsou křivky (např. sinusoida). Tam ale toto tvrzení neplatí zcela a u některých křivek "bez rovných ploch" se vám může podařit vymyslet a aplikovat nějakou tu transformaci byť třeba složitou a nemusí být sama. Také většinu fraktálů, např. přírodních objektů, nepůjde použít jako výchozí bod pro IFS. I když výjimka potvrzuje pravidlo (a v matematice vyvrací). Nejjednodušší IFS vznikají z n (1nekonečno) rozměrných geometrických útvarů. Takže sedněte ke kompu, vemte nadkrychli a vytvořte IFS (nadkrychle-4D objekt s krychlovou základnou).

V další lekci, IFS fraktály, jsme si probrali teorii a vykreslili si IFS fraktály spolu s popisem algoritmu, tabulkou hodnot pro různé fraktály a zdrojovým kódem.


 

Předchozí článek
Mandelbrotova a Juliova množina
Všechny články v sekci
Fraktály
Přeskočit článek
(nedoporučujeme)
IFS fraktály
Článek pro vás napsal Tomáš Sixta
Avatar
Uživatelské hodnocení:
4 hlasů
Jméno jeho jest Tomáš Sixta. Narodil se v roce 1987 krátce po výbuchu Černobylu v Kolíně u Veltrub. Vystudoval Základní školu ve Veltrubech a nyní studuje na gymnáziu Kolín.
Aktivity