Predstavme si mriežku štvorčekov. Každý štvorček môže byť obsadený s pravdepodobnosťou \(p\) alebo byť prázdny s pravdepodobnosťou \(1-p\). Obsadenosť každého štvorčeka je náhodná.
Ak je \(p\) malé, môžeme vidieť niekoľko malých ostrovčekov obsadených štvorčekov v prázdnom „oceáne“ neobsadenenej mriežky. Ako postupne zvyšujeme \(p\), malé ostrovčeky (clustre) sa zväčšujú, až nastane situácia, kedy existuje spojitý prechod z ľavej strany mriežky na pravú stranu mriežky (tzv. perkolácia).
Táto jednoduchá myšlienka je základom teórie perkolácie. Vyzerá jednoducho, ale má bohaté aplikácie v problémoch reálneho života, ako sú napríklad lesné požiare alebo tok kvapalín cez pórovitú štruktúru (viď Introduction to percolation theory od Stauffer a Aharony).
V tejto úlohe budeme študovať štvorcové mriežky a budeme hľadať medznú hodnotu \(p_c\), pri ktorej sa objaví perkolujúci stav.
Perkolácia v 1D
Uvažujme jednorozmernú mriežku (pásik) veľkosti \(N\), kde každý bod mriežky je obsadený s pravdepodobnosťou \(p\). Spočítajte počte clusterov, t.j. počet obsadených súvislých polí pri danej pravdepodobnosti \(p\). Nájdite medznú hodnotu \(p\) (fázový prechod) \(p_c\), pri ktorej bude najväčší cluster makroskopicky veľký. Ak označíme \(N_{lc}\) veľkosť najväčšieho clustra a \(N_o\) počet obsadených bodov na pásiku, tak veľkosť perkolujúceho clustra je \(P = N_{\mathrm{lc}} / N\).
Opakujte merania pre rozličné hodnoty \(N\) a na ich základe dajte predpoveď \(N \rightarrow \infty\).
Perkolácia v 2D
Druhý rozmer prináša nový stupeň voľnosti, v ktorom môže cluster rásť, preto by mala byť medzná hodnota \(p_c\) iná.
Uvažujme dvojrozmernú štvorcovú mriežku rozmeru \(N \times N\). Ako v predcházajúcom prípade, nájdite medznú hodnotu \(p_c\), kedy veľkosť najväčšieho clustra začína rapídne rásť.
Ak zvolíme \(p>p_c\) \(P\) je úmerné \((p - p_c)^\alpha\), kde \(\alpha\) je tzv. kritický exponent. Nájdite numerickú hodnotu tohto exponentu.
(Bonus) Perkolácia v 3D
Nájdite medznú hodnotu a kritický exponent aj pre tento prípad.
Ako na to?
- Počet clustrov a ich veľkosť môžete spočítať napríklad aj pomocou flood fill algoritmu. Avšak s naivnou implementáciou si nevystačíte, keďže sa dopracujete k problému stack overflow, teda pretečeniu zásobníka s inštrukciami.
- V simulácii použite periodické okrajové podmienky.
- Pre každú hodnotu \(p\) a \(N\) vykonajte niekoľko simulácie a následne zoberte priemerné hodnoty.
Odovzdávanie
Na odovzdávanie sa musíš prihlásiť
Otázky a diskusia
Po skončení kola budete mať príležitosť na diskutovanie o riešeniach v diskusii pod vzorovým riešením.