Devlog #77 – Fala 57: Lot Lévy'ego, fraktal DLA & równania płytkiej wody

Fala 57 przecina trzy dyscypliny — teorię prawdopodobieństwa, sztukę generatywną i obliczeniową mechanikę płynów — z eksploratorem anomalnej dyfuzji lotu Lévy'ego, generatorem fraktala DLA w czasie rzeczywistym śledzącym wymiar fraktalny na żywo oraz jednowymiarowym solverem równań płytkiej wody dla scenariuszy pękania tamy, chlupotania i fali pływowej. Biblioteka liczy teraz 547 symulacji.

Fala 57 — dodano 3 symulacje
547
Symulacji łącznie
3
Nowych w tej fali
57
Numer fali
77
Numer devlogu

Nowe symulacje

🦅

Lot Lévy'ego — anomalna dyfuzja

Wykładnik stabilności α kontroluje ciężkość ogona; α=2 to ruch browna, α→1 daje rzadkie długie skoki. Algorytm Mantegny. Rozkład kroków w skali log-log, do 8 wędrowców.

🌿

Dyfuzyjnie ograniczona agregacja — fraktal DLA

Algorytm Wittena–Sandera z 1981 roku. Cząstki błądzą losowo aż do kontaktu i przyklejenia; żywe śledzenie wymiaru fraktalnego D_f ≈ 1.71 poprzez N ∝ R^D_f. Cztery tryby kolorystyczne, trzy kształty zarodka.

🌊

Równania płytkiej wody — jednowymiarowy solver SWE

Równania Saint-Venanta; schemat Laxa-Friedrichsa. Pękanie tamy, chlupotanie, fala pływowa, skok hydrauliczny. Liczba Froude'a, prędkość fali, zachowanie masy, tarcie Manninga.

🦅 Lot Lévy'ego — anomalna dyfuzja

Czym jest anomalna dyfuzja?

Standardowy ruch Browna ma średniokwadratowe przemieszczenie, które skaluje się liniowo z czasem: MSD ∝ t. Loty Lévy'ego uogólniają to, losując długości kroków z rozkładu stabilnego o ciężkim ogonie, gdzie P(l) ~ l−(1+α) przy α ∈ (0, 2). Ponieważ rozkład nie ma skończonej wariancji dla α < 2, pojedynczy wędrowiec może wykonywać rzadkie, ale dowolnie długie skoki, dając superdyfuzję: MSD ∝ tγ przy γ > 1.

Loty Lévy'ego pojawiają się w całej przyrodzie: wzorce żerowania albatrosów, rozgałęzianie się piorunów, sekwencje przemieszczeń podczas trzęsień ziemi, a nawet wzorce mobilności ludzi w danych z telefonów komórkowych — wszystkie wykazują rozkłady kroków o ciężkim ogonie zgodne ze statystyką Lévy'ego.

Algorytm Mantegny

Bezpośrednie próbkowanie odwrotne z rozkładu stabilnego wymaga kwadratury numerycznej. Algorytm Mantegny (1994) dostarcza efektywnego przybliżenia. Dla symetrycznej zmiennej losowej α-stabilnej:

σ = [Γ(1+α)·sin(πα/2) / (Γ((1+α)/2)·α·2^((α−1)/2))]^(1/α)
u ~ N(0, σ²),  v ~ N(0, 1)
l = u / |v|^(1/α)

Przy α = 2 sprowadza się to do rozkładu Gaussa (standardowego ruchu Browna). Symulacja wykorzystuje 6-wyrazowe przybliżenie Lanczosa dla Γ(z), aby uniknąć zewnętrznych bibliotek matematycznych.

Odczytywanie wykresu log-log

Dolny panel pokazuje histogram zakumulowanych długości kroków w skali log-log. Dla prawdziwego rozkładu potęgowego histogram opada jako linia prosta o nachyleniu −(1 + α). Przy α = 2 (rozkład Gaussa) ogon opada szybciej niż jakikolwiek rozkład potęgowy, a prawy koniec histogramu zakrzywia się w dół. Przy α = 1.2 histogram pozostaje niemal liniowy na wielu rzędach wielkości kroku — charakterystyczna sygnatura stabilnego rozkładu Lévy'ego.

🌿 Dyfuzyjnie ograniczona agregacja (DLA)

Model Wittena–Sandera

Wprowadzony przez Wittena i Sandera w 1981 roku, DLA jest jednym z najprostszych algorytmów generujących geometrię fraktalną. Reguły są minimalne: umieść cząstkę-zarodek w początku układu współrzędnych; wypuść nową cząstkę z okręgu, którego promień nieznacznie przekracza obecny klaster; pozwól jej błądzić losowo, aż znajdzie się przy klastrze, po czym przykleja się na stałe. Powtórz.

Mimo prostoty, powstały klaster jest fraktalem o wymiarze D_f ≈ 1.71 w 2D (w porównaniu do 2.0 dla wypełnionego dysku i 1.0 dla linii). Rozgałęzianie się zachodzi, ponieważ końcówki klastra przechwytują dyfundujące cząstki preferencyjnie z powodu większego przekroju wychwytu — zjawisko znane jako niestabilność rozszczepiania się wierzchołków.

Szczegóły implementacji

Symulacja wykorzystuje płaską tablicę zajętości Uint8Array dla sprawdzania sąsiadów w czasie O(1). Cząstki są tworzone na okręgu o promieniu 1.2 × cluster_radius + 30 px i usuwane, jeśli oddalą się poza 1.5 × tego promienia, co zapobiega nieskończonemu błądzeniu. Każda klatka animacji uruchamia partię do 10 cząstek, utrzymując płynną liczbę klatek nawet przy celach na poziomie 5000 cząstek.

Suwak prawdopodobieństwa przyklejenia (domyślnie 1.0) wprowadza wariant DLA o zredukowanym szumie: przy niższych wartościach cząstki częściowo chybiają przy pierwszym kontakcie, dając gęstsze, mniej rozgałęzione klastry, bardziej przypominające wzory lepkiego palczastego wypierania.

Szacowanie wymiaru fraktalnego

Żywe oszacowanie D_f wykorzystuje najprostszy proxy zliczania pudełek: jeśli N cząstek zajmuje klaster o promieniu R, to D_f ≈ log(N)/log(R). Zwykle zbiega to do wartości między 1.65 a 1.75, gdy klaster przekroczy kilkaset cząstek. Prawdziwy wymiar fraktalny DLA został precyzyjnie obliczony jako D_f = 1.713 ± 0.003 przez Meakina i współpracowników za pomocą symulacji na dużą skalę.

🌊 Równania płytkiej wody (jednowymiarowe SWE)

Równania Saint-Venanta

Jednowymiarowe równania Saint-Venanta (płytkiej wody) opisują uśredniony po głębokości przepływ w kanale, gdzie pozioma skala długości znacznie przewyższa głębokość wody. Tworzą one hiperboliczny układ praw zachowania:

∂h/∂t + ∂(hu)/∂x = 0           (zachowanie masy)
∂(hu)/∂t + ∂(hu² + ½gh²)/∂x = S  (pęd)

gdzie h to głębokość wody, u to uśredniona po głębokości prędkość, g = 9.81 m/s² to przyspieszenie ziemskie, a S to człon źródłowy tarcia Manninga: S = −g·n²·u·|u|·h−1/3.

Schemat Laxa-Friedrichsa

Symulacja wykorzystuje jawną metodę różnic skończonych Laxa-Friedrichsa, która jest dokładna pierwszego rzędu w przestrzeni i czasie, ale bezwarunkowo stabilna zgodnie z warunkiem CFL. Krok czasowy jest obliczany adaptacyjnie w każdej klatce:

dt = CFL · dx / max(|u| + c)    gdzie  c = √(gh)

Suwak CFL (0.1–0.48) pozwala obserwować efekty dyfuzji numerycznej: niższe wartości dają gładsze, ale wolniejsze wyniki; wartości zbliżające się do 0.5 wyostrzają fronty fal, ale mogą powodować niewielkie oscylacje w pobliżu skoków.

Scenariusze

Liczba Froude'a

Liczba Froude'a Fr = |u|/c jest odpowiednikiem liczby Macha dla płytkiej wody. Dla Fr < 1 (przepływ podkrytyczny) informacja może rozprzestrzeniać się zarówno w górę, jak i w dół nurtu. Dla Fr > 1 (przepływ nadkrytyczny) zaburzenia mogą podróżować tylko w dół nurtu. Przejście Fr = 1 odpowiada skokowi hydraulicznemu w stanie ustalonym i jest oznaczone przerywaną pomarańczową linią na wykresie prędkości.

Co dalej

Fala 58 prawdopodobnie zbada więcej teorii prawdopodobieństwa, złożone wzory sztuki generatywnej lub symulacje fizyczne oparte na równaniach różniczkowych zwyczajnych/cząstkowych. Kolejka obejmuje cell-growth-morphogenesis (reakcja-dyfuzja + komórki sterowane siłami), origami-fold (przeglądarka wzorów zagięć) oraz 3d-generative-art (powierzchnie giroidalne w Three.js).

← Devlog #76 — Fala 56 Wszystkie wpisy →