Analiza numeryczna jest używana do obliczania przybliżeń rzeczy: wartości funkcji w pewnym punkcie, w którym znajduje się pierwiastek równania, lub rozwiązań układu równań różniczkowych. Jest to rozległy i ważny temat, ponieważ w praktyce większość rzeczywistych problemów w matematyce, nauce i technologii nie będzie miała jednoznacznego rozwiązania w formie zamkniętej (a nawet jeśli tak, obliczenie przy użyciu nieskończona precyzja - w końcu komputery reprezentują liczby ze skończoną precyzją). Ogólnie rzecz biorąc, istnieją kompromisy między dokładnością a szybkością obliczeniową.
W przypadku problemu trzech ciał mamy trzy masy punktowe w lokalizacjach początkowych $ \ mathbf {x} _i (0) $ z prędkościami $ \ mathbf {v} _i (0) $ , które chcemy obliczyć na późniejsze czasy $ t $ . Matematycznie chcemy znaleźć rozwiązanie dla systemu $$ \ mathbf {x} '_ i (t) = \ mathbf {v} _i (t), $$ $$ \ mathbf {v} '_ i (t) = \ mathbf {f} _i (t) / m_i, $$ $$ \ mathbf {f} _i (t) = Gm_i \ sum_ {j \ neq i} \ frac {m_j (\ mathbf {x} _j- \ mathbf {x} _i)} {|| \ mathbf {x} _i - \ mathbf {x} _j || ^ 3}. $$
Oczywistą metodą jest myślenie „jeśli zrobimy mały krok naprzód $ h $ w czasie, możemy przybliżyć wszystko tak, aby było liniowe”, więc tworzymy formuła, w której obliczamy stan w czasie $ t + h $ ze stanu w czasie $ t $ ( i tak dalej dla $ t + 2h $ i dalej): $$ \ mathbf {x} _i (t + h) = \ mathbf {x} _i (t) + h \ mathbf {v} _i (t), $$ $$ \ mathbf {v} _i (t + h ) = \ mathbf {v} _i (t) + h \ mathbf {f} _i (t). $$ To się nazywa metoda Eulera. Jest prosty, ale bywa niedokładny; błąd na krok to $ \ approx O (h ^ 2) $ i mają tendencję do narastania. Jeśli spróbujesz rozwiązać problem z dwoma ciałami, okrążające masy będą wykonywać precesyjną orbitę rozety z powodu nagromadzenia się błędów, zwłaszcza gdy zbliżają się do siebie.
Istnieje menażeria metod numerycznego rozwiązywania równań różniczkowych. Można użyć metod wyższego rzędu, które próbkują funkcje w większej liczbie punktów, a tym samym lepiej je aproksymują. Istnieją metody niejawne, które zamiast próbować znaleźć stan w późniejszym czasie tylko w oparciu o stan bieżący, szukają samoistnego stanu późnego i pośredniego. Najpoważniejsze metody rozwiązywania problemów z ODE zmniejszają także wielkość kroku $ h $ , gdy siły rosną podczas bliskich starć, aby zapewnić akceptowalną dokładność. Jak powiedziałem, to duży temat.
Jednak w przypadku symulacji mechanicznych możesz w szczególności przyjrzeć się metodom zaprojektowanym w celu zachowania energii i innych zachowanych ilości ( metody symplektyczne - są to metody używane przez profesjonalistów do długoterminowych obliczeń orbity) . Być może najprostsza jest częściowo ukryta metoda Eulera. Istnieje również metoda Verleta i skokowa integracja. Podoba mi się półjawna metoda Eulera, ponieważ jest super prosta (ale będąc metodą pierwszego rzędu, nadal nie jest zbyt dokładna): $$ \ mathbf {v} _i (t + h) = \ mathbf {v} _i (t) + h \ mathbf {f} _i (t), $$ $$ \ mathbf {x} _i ( t + h) = \ mathbf {x} _i (t) + h \ mathbf {v} _i (t + h). $$ Czy widzisz różnicę? Najpierw obliczasz zaktualizowaną prędkość, a następnie używasz jej do aktualizacji pozycji - drobna sztuczka, ale nagle orbity 2-ciałowe zachowują się dobrze.
Problem trzech ciał jest chaotyczny w prawdziwym matematycznym sensie. Wiemy, że istnieją sytuacje, w których drobne różnice w warunkach początkowych są skalowane w górę do dowolnie dużych różnic w późniejszych pozycjach (nawet jeśli wykluczymy bardzo bliskie podania między masami). Tak więc nawet przy arbitralnie dużej precyzji liczbowej nastąpi moment, w którym nasze obliczone orbity będą całkowicie błędne. Ogólny „styl” trajektorii może nadal być poprawny, dlatego też można bawić się częściowo ukrytym Eulerem, o ile nie planuje się żadnej misji kosmicznej na podstawie wyników.