Symulacja grawitacji N-ciał: jak tańczą planety

Grawitacja to najprostsza siła we wszechświecie — jedno równanie, dwie masy, jedna odległość. A mimo to grawitacyjny taniec trzech lub więcej ciał produkuje ruch tak złożony, że nigdy nie da się go rozwiązać analitycznie. Oto jak symulujemy go numerycznie, wydajnie i dokładnie.

Prawo powszechnego ciążenia Newtona

Każda masa we wszechświecie przyciąga każdą inną masę siłą daną prawem Newtona:

F = G × m₁ × m₂ / r²

Gdzie G to stała grawitacyjna (6,674 × 10−11 N m² kg−2), m₁ i m₂ to masy dwóch ciał, a r to odległość między ich środkami. Siła jest przyciągająca i działa wzdłuż linii łączącej oba ciała.

Dla dwóch ciał daje to system w pełni rozwiązywalny. Ciała orbitują wokół wspólnego środka masy po elipsach — prawa Keplera wynikają bezpośrednio. Dodaj trzecie ciało i wszystko się zmienia.

Dlaczego N ciał jest trudne: problem trzech ciał

W 1887 roku Henri Poincaré udowodnił, że grawitacyjny problem trzech ciał nie ma ogólnego rozwiązania w postaci zamkniętej. Nie da się zapisać równania dającego pozycję trzech grawitujących mas w czasie t na podstawie ich warunków początkowych. System jest z reguły chaotyczny — małe różnice w warunkach początkowych prowadzą do zupełnie różnych długoterminowych trajektorii.

To nie jest porażka matematyki. To fundamentalna właściwość równań. Trzy ciała oddziałujące grawitacyjnie mogą wykazywać każdy rodzaj zachowania: stabilne orbity, ruch quasi-okresowy, rezonanse, chaotyczne błądzenie i wyrzucenie jednego ciała w nieskończoność.

Jedynym praktycznym sposobem przewidywania ewolucji N ciał jest całkowanie numeryczne: wykonuj małe kroki czasowe, oblicz siły, zaktualizuj prędkości i pozycje, powtarzaj. To właśnie robi symulacja — i to, co robi każdy kod astrofizyczny, od modeli układu słonecznego po symulacje galaktyk.

Naiwny algorytm: złożoność O(n²)

Prostym podejściem do obliczania sił grawitacyjnych jest sprawdzenie każdej pary ciał:

dla każdego ciała i:
    siła[i] = (0, 0, 0)
    dla każdego ciała j ≠ i:
        r = pozycja[j] - pozycja[i]
        odl = długość(r)
        siła[i] += G * masa[i] * masa[j] / odl² * normalizuj(r)

To wymaga n × (n−1) obliczeń siły na krok czasowy — złożoność O(n²). Dla 100 ciał: 9900 obliczeń. Dla 1000 ciał: 999 000 obliczeń. Dla 10 000 ciał: prawie 100 milionów obliczeń. Dla prawdziwej galaktyki ze 100 miliardami gwiazd naiwny algorytm jest całkowicie niewykonalny.

Softening zapobiegające osobliwościom

W równaniu siły czai się problem numeryczny: gdy dwa ciała zbliżają się bardzo blisko, r dąży do zera, a siła dąży do nieskończoności. W rzeczywistości gwiazdy nie są masami punktowymi — bliskie spotkania wiążą się ze złożoną fizyką. W symulacji dodajemy długość softeningu ε:

F = G × m₁ × m₂ / (r² + ε²)

To ogranicza maksymalną siłę i zapobiega numerycznym eksplozjom podczas bliskich spotkań. Długość softeningu jest parametrem symulacji — zbyt duża i fizyka staje się nierealistyczna; zbyt mała i bliskie spotkania destabilizują całkowanie.

Barnes-Hut: redukcja do O(n log n)

W 1986 roku Josh Barnes i Piet Hut opublikowali algorytm, który redukuje złożoność N-ciał z O(n²) do O(n log n) — transformacyjną poprawę. Kluczowy wgląd: odległy klaster wielu ciał można przybliżyć jako pojedyncze ciało w środku masy klastra. Błąd grawitacyjny wynikający z tego przybliżenia jest mały, gdy klaster jest daleko.

Algorytm Barnesa-Huta buduje oktadrzewo (drzewo, które rekurencyjnie dzieli przestrzeń 3D na osiem oktantów w każdym węźle). Każdy węzeł wewnętrzny przechowuje całkowitą masę i środek masy wszystkich ciał w swoim poddrzewie.

Przy obliczaniu siły na ciało i drzewo jest przeszukiwane. W każdym węźle podejmowana jest decyzja na podstawie stosunku s/d — gdzie s to rozmiar przestrzenny węzła, a d to odległość od ciała i do środka masy węzła. Jeśli s/d < θ (próg kąta otwarcia, zwykle 0,5 do 1,0), węzeł jest traktowany jako pojedyncza masa punktowa. W przeciwnym razie dzieci węzła są otwierane i oceniane indywidualnie.

function oblicz_siłę(ciało i, węzeł):
    jeśli węzeł jest liściem:
        dodaj bezpośrednią siłę od ciała węzła
    inaczej:
        s = rozmiar węzła
        d = odległość od i do środka masy węzła
        jeśli s/d < θ:
            dodaj przybliżoną siłę od masy węzła
        inaczej:
            dla każdego dziecka węzła:
                oblicz_siłę(ciało i, dziecko)

Przy θ ≈ 0,5 błąd w oszacowaniach siły jest poniżej 1%, podczas gdy obliczenia spadają z godzin do sekund przy tej samej liczbie cząstek. Nowoczesne symulacje kosmologiczne używają wariantów Barnesa-Huta do symulowania miliardów cząstek ciemnej materii.

Całkowanie leapfrog: stabilność ponad dokładność

Znajomość sił to tylko połowa problemu. Trzeba też scałkować równania ruchu — zaktualizować pozycje i prędkości — w sposób, który pozostaje stabilny przez wiele tysięcy kroków czasowych.

Proste całkowanie Eulera (x += v*dt; v += a*dt) wydaje się naturalne, ale ma fatalną wadę dla mechaniki orbitalnej: nie zachowuje energii. Całkowita energia systemu dryfuje w górę z czasem, a orbity powoli rozszerzają się spiralnie. Przy długich symulacjach planety uciekają swoim gwiazdom.

Całkowatr leapfrog rozwiązuje ten problem, przesuwając aktualizacje pozycji i prędkości o pół kroku czasowego:

// forma kick-drift-kick (KDK):
v_pół = v + a * (dt/2)      // prędkość w pół kroku
x = x + v_pół * dt           // pozycja w pełnym kroku
a = oblicz_siły(x)           // siły w nowej pozycji
v = v_pół + a * (dt/2)       // druga połowa kroku prędkości

Leapfrog jest symplektyczny — dokładnie zachowuje zmodyfikowany hamiltonian bliski prawdziwemu. W praktyce oznacza to, że energia oscyluje wokół poprawnej wartości, zamiast dryfować, pozwalając symulacjom działać przez miliardy kroków czasowych bez akumulacji błędu.

Całkowatory wyższego rzędu (Runge-Kutta 4, Yoshida 6. rzędu) są dokładniejsze na krok, ale wymagają więcej obliczeń siły. Dla grawitacyjnego N-ciał leapfrog z małym krokiem czasowym jest zwykle najlepszym kompromisem.

Prawdziwe zastosowania astrofizyczne

Symulacja N-ciał to podstawowe narzędzie współczesnej astrofizyki:

Odkryj dynamikę grawitacyjną w swojej przeglądarce pod adresem /nbody/. Spróbuj ustawić stabilne orbity trzech ciał w kształcie ósemki albo zobacz, co się dzieje, gdy dodasz masywnego intruza do systemu planetarnego.

Stabilność naszego układu słonecznego

Czy nasz własny układ słoneczny jest stabilny? Okazuje się, że jest to zaskakująco trudne pytanie. Całkowania numeryczne uruchamiane na miliardy symulowanych lat pokazują, że wewnętrzne planety (od Merkurego do Marsa) mają niewielkie, ale niezerowe prawdopodobieństwo wejścia w chaotyczne orbity. Orbita Merkurego mogłaby stać się niestabilna w skalach czasowych kilku miliardów lat, potencjalnie zderzając się z Wenus lub zostając wyrzuconą.

Planety zewnętrzne są bardziej stabilne, ale nie idealnie. Czterociałowy rezonans między Jowiszem, Saturnem, Uranem i Neptunem oznacza, że małe perturbacje mogą się kumulować. Układ słoneczny, jaki znamy, może być jedną z wielu możliwych konfiguracji, które akurat przetrwały wystarczająco długo, by ewoluowało złożone życie.

Najczęściej zadawane pytania

Czym jest problem N ciał?

Problem N ciał pyta, jak N punktowych mas porusza się pod wpływem wzajemnego przyciągania grawitacyjnego. Dla N=2 istnieje dokładne rozwiązanie analityczne (orbity Keplera). Dla N≥3 nie istnieje ogólne rozwiązanie w postaci zamkniętej i system musi być rozwiązany numerycznie, całkując prawo grawitacji Newtona dla wszystkich interakcji parami w czasie.

Jak siła grawitacyjna skaluje się z odległością?

Siła grawitacyjna podąża za prawem odwrotnych kwadratów: F = G·m₁·m₂/r². Podwojenie odległości zmniejsza siłę do jednej czwartej; potrojenie zmniejsza siłę do jednej dziewiątej. Oznacza to, że odległe ciała mają znikomy wpływ, podczas gdy bliskie spotkania produkują dramatyczne odchylenia — źródło bogatej dynamiki w symulacjach N-ciał.

Jakie metody całkowania numerycznego są używane do symulacji N-ciał?

Popularne metody obejmują całkowanie Eulera (proste, ale niedokładne), całkowanie Leapfrog/Verlet (dobre zachowanie energii, szeroko stosowane), Runge-Kutta 4 (dokładne, ale kosztowne obliczeniowo) oraz całkowatory symplektyczne (zachowują objętość przestrzeni fazowej, idealne do długoterminowych symulacji orbitalnych). Leapfrog jest standardowym wyborem dla kodów grawitacyjnych N-ciał.

Czym jest algorytm Barnesa-Huta?

Barnes-Hut to algorytm przybliżający, który redukuje obliczenia N-ciał z O(N²) do O(N log N), grupując odległe ciała w większe agregaty za pomocą oktadrzewa (3D) lub quadtree (2D). Jeśli klaster ciał jest wystarczająco daleko względem swojego rozmiaru (kryterium kąta otwarcia), jest traktowany jako pojedyncze ciało w swoim środku masy.

Czym jest softening grawitacyjny?

Softening grawitacyjny zastępuje prawo siły 1/r² wyrażeniem 1/(r²+ε²) w pobliżu r=0, gdzie ε to długość softeningu. Zapobiega to nieskończonym siłom podczas bliskich spotkań, które powodowałyby niestabilności kroku czasowego. Softening skutecznie traktuje cząstki jako rozciągłe rozkłady masy, a nie masy punktowe przy bardzo małych odległościach.

Co powoduje chaotyczne zachowanie w systemach N-ciał?

Systemy N-ciał wykazują chaos, ponieważ bliskie spotkania grawitacyjne są niezwykle wrażliwe na warunki początkowe. Małe zmiany w pozycji lub prędkości cząstki mogą zostać wzmocnione przez hiperboliczne bliskie spotkania, prowadząc do zupełnie różnych długoterminowych trajektorii. Sam Układ Słoneczny jest chaotyczny w skalach czasowych ~5 milionów lat.

Czym są punkty Lagrange'a?

Punkty Lagrange'a to pięć specjalnych pozycji w dwuciałowym systemie grawitacyjnym (jak Ziemia-Słońce), gdzie małe trzecie ciało może pozostać w stabilnej lub niestabilnej równowadze. L1, L2, L3 to niestabilne punkty siodłowe, podczas gdy L4 i L5 (60° przed i za na orbicie) są stabilne dla stosunków mas poniżej ~1:25. Kosmiczny Teleskop Jamesa Webba orbituje wokół punktu L2 Słońce-Ziemia.

Jak ciemna materia wpływa na kosmologiczne symulacje N-ciał?

W kosmologicznych symulacjach N-ciał cząstki ciemnej materii dominują w budżecie masy (~85% całej materii). Bez ciemnej materii symulowane galaktyki obracają się zbyt wolno, a struktury nie formują się wystarczająco szybko, by pasować do obserwacji. Uwzględnienie ciemnej materii produkuje krzywe rotacji, struktury halo i wielkoskalowe sieci włókien pasujące do obserwowanych przeglądów galaktyk.

Czym jest rezonans orbitalny?

Rezonans orbitalny występuje, gdy dwa ciała mają okresy orbitalne w prostym stosunku całkowitym (jak 1:2, 2:3). Powtarzające się kopnięcia grawitacyjne w tych samych fazach orbity wzmacniają perturbacje. Rezonanse mogą destabilizować orbity (luki Kirkwooda w pasie asteroid) lub je stabilizować (rezonans 2:3 Pluton-Neptun utrzymuje je od zderzenia).

Czy symulacje N-ciał mogą modelować łączenie się czarnych dziur?

Standardowe newtonowskie kody N-ciał nie mogą modelować łączenia się czarnych dziur, ponieważ efekty ogólnej teorii względności dominują przy małych odległościach. Wyspecjalizowane kody używają przybliżeń post-newtonowskich, by dodać poprawki relatywistyczne, lub pełnej numerycznej relatywistyki (rozwiązywanie równań pola Einsteina na siatce). Fale grawitacyjne wykryte przez LIGO zostały przewidziane za pomocą takich symulacji numerycznej relatywistyki.