Fraktálok. Szemcsenövekedés 5. előadás
Fraktáldimenzió az 1970-es években Mandelbrot és társai fejlesztették ki a fraktálgeometriát az elágazó testek jellemzőinek a leírására az egyik bevezetett jellemző mennyiség a fraktáldimenzió összefüggés a tömör testek sugara és tömege között ha a tárgy dimenziója (D) megegyezik az euklideszi tér dimenziójával (d) ha egy testre definiálható a dimenziója, de az kisebb, mint d d – fraktáldimenzió a valóságban a skálázási egyenlet nem érvényes a teljes tartományra, van egy alsó és egy felső levágási határ mikrostruktúra <-> végesméret fraktálok másik jellemzője az önhasonlóság a különböző skálákon
Perkoláló klaszter fraktáldimenziója Algoritmus: definiáljuk a rácsot (NxN) és a p = 0.5927 aktiválási valószínűséget végigjárjuk a rácsot és mindenpontját p valószínűséggel aktiváljuk megszerkesztjük a klasztereketés mindegyiket egyedi számmal látjuk el megvizsgáljuk, létezik-e perkolálóklaszter ha igen, akkor csak ezt hagyjuk a rácson meghatározzuk a „tömeg” – sugár összefüggést, ennek átlagértékéből fraktáldimenziót számolunk void clusterDetect(){ clusterNr = 1; for(int lx=1; lx<N; lx++) for(int ly=1; ly<N; ly++){ if(lattice[lx][ly] == 1){ clusterNr++; lattice[lx][ly] = clusterNr; rec(lx, ly); } void rec(int i, int j){ if(lattice[i+1][j]==1){ lattice[i+1][j] = clusterNr; rec(i+1, j); } if(lattice[i][j+1]==1){ lattice[i][j+1] = clusterNr; rec(i, j+1); if(lattice[i-1][j]==1){ lattice[i-1][j] = clusterNr; rec(i-1, j); if(lattice[i][j-1]==1){ lattice[i][j-1] = clusterNr; rec(i, j-1); Klaszterdetektálás Megj. mindkét metódus (függvény) ismeri a lattice és a clusterNr változókat ebben a példában a rácsot szegélyeztük 0 értékű cellákkal
Tökéletes matematikai fraktálok – Koch görbe public void iterate(double x1, double y1, double x2, double y2, int n) { if (n > 0) { double dx = (x2−x1)/3; double dy = (y2−y1)/3; double xOneThird = x1 + dx; // új végpont a szakasz 1/3 pontjánál double yOneThird = y1 + dy; double xTwoThird = x1 + 2∗dx; // új végpont a szakasz 1/3 pontjánál double yTwoThird = y1 + 2∗dy; // a (dx, dy) szakasz elforgatasa 60 fokkal // és ennek hozzáadása a (xOneThird,yOneThird)-hez double xMidPoint = (0.5∗dx − 0.866∗dy + xOneThird); double yMidPoint = (0.5∗dy + 0.866∗dx + yOneThird); // minden szegmens 4 újabbat generál iterate (x1,y1,xOneThird,yOneThird,n−1); iterate (xOneThird,yOneThird,xMidPoint,yMidPoint,n−1); iterate (xMidPoint,yMidPoint,xTwoThird,yTwoThird,n−1); iterate (xTwoThird,yTwoThird,x2,y2,n−1); } else { int ix1 = myWorld.xToPix(x1); int iy1 = myWorld.yToPix(y1); int ix2 = myWorld.xToPix(x2); int iy2 = myWorld.yToPix(y2); drawSegment(ix1,iy1,ix2,iy2 );
Koch-görbe fraktáldimenziója a Koch-görbe generálásánál minden lépésben a szakaszok hossza az eredeti 1/3-a lesz a szakaszok száma az négyszereződik
Más matematikai fraktálok négyzetes Koch-görbe Sierpinski háromszögek Sierpinski szőnyeg
Fraktálnövesztéses folyamatok - járványterjedés Rácsmodell: tekintünk egy négyzetrácsot egy elfoglalt rácspont egy fertőzött személyt jelent kezdetben egy fertőzött pontot teszünk a rács közepébe meglátogatjuk a négy legközelebbi szomszédját és mindeniket p valószínűséggel megfertőzzük, (1-p) valószínűséggel immunissá tesszük az újonan megfertőződött emberekre megismételjük a fertőzés terjedését (de csak a nem immunis szomszédokra) ! vizsgáljuk meg a kapott klaszter alakját a p függvényében és határozzuk meg a fraktáldimenzióját
Szemcsenövekedés – DLA (Diffusion Limited Aggregation) hópelyhek villámlás baktérium kolóniák DLA modell: tekintünk egy négyzetrácsot, a közepén elhelyezünk egy részecskét a centrumtól számított R sugarú kör valamely pontjáról elindítunk egy részecskét, ami véletlen bolyongást végez ha a bolyongás során hozzáér a már kialakult klaszterhez, hozzáragasztjuk új részecskét indítunk stb... Készítsük el a modell alapján a számítógépes szimulációt és határozzuk meg a kapott alakzat fraktáldimenzióját.