zabawne zadanie z grawitacją - dobre do symulacji

0

Ustawiamy n = 100, czy 1000 malutkich kuleczek, równomiernie rozłożonych na sferze.

Masa kuleczki może być dowolna, np. m = 1kg
promień sfery też dowolny: R = 1 km.

Ile czasu ta sfera potrzebuje aby się skurczyć do... połowy: R/2, albo i zupełnie - do zera?

0

A jak myślisz? Kurna....

Jak odpalę symulację na Intelu z 2000 r.
A jak odpalę na Ryzenie 5000 z 2021 r. to będzie różnica w czasie wykonania obliczeń?!

Skoro takiś mądry to powinieneś umieć oszacować czas algorytmu.

Odpowiedź pewnie w postaci: O(log(n/2)) może O(log(n^2))

0

Ale on raczej nie pyta o czas wykonania symulacji, tylko rzeczywisty czas symulowanego procesu.
Dla tak ustawionych warunków eksperymentu dałoby się to może nawet policzyć czysto matematycznie.

1

Na takie coś chyba jest gotowy wzór, no ale wypadałoby sprawdzić.

oficjalny wynik:
T = pi * sqrt[R^3/GM];

zatem biorąc M = milion kg, R = 1km, otrzymamy czas zapaści:
T = 12161560s = 140 dni, strasznie długo

2

Taki symetryczny układ najprawdopodobniej - choć należałoby to scałkować - daje się rozpatrywać jako układ z masą w środku. Masa wliczana do wyliczenia przyśpieszenia w danym punkcie to masa wszystkich kulek "poniżej" danego punktu, ale skoro interesują nas najdalsze kulki - one spadną ostatnie - to liczy się cała masa układu.
Przyśpieszenie nie będzie stałe, ale będzie się zwiększało wraz z zapadaniem się układu (bo siła zależy od kwadratu odległości), więc prędkość będzie krzywą, a całka z niej - drogą. Moment w którym droga zrówna się z umowną granicą skurczenia (R/2), to czas który nas interesuje.
A podany wzór może jest prawdziwy, może nie, to wyprowadzenie jest główną częścią zadania.

0

Z Newtona: g = r'' = -GM/r^2,

ale tak jest powyżej sfery: r > R, bo wewnątrz jest zero: r < R!

Ale dokładnie na tej sferze: r = R, no to ja nie wiem ile jest.
Może kompromis - połowa = g/2.

Dlatego należy to sprawdzić za pomocą symulacji.

Jak wygląda sfera z kulek?
bals.gif

0

Nie da się niczego sprawdzić za pomocą symulacji, bo to symulację sprawdza się z pomocą wzorów. Moje doświadczenia z symulacją - jeszcze z okresu studiów, w Matlabie - są takie, że strasznie łatwo otrzymać fałszywe wyniki mając zły krok itp.

3
kwalifika napisał(a):

Dlatego należy to sprawdzić za pomocą symulacji.

Jeśli przyjmiesz ciągły rozkład masy na sferze, to siłę działającą na każdy jej punkt da się to zapewne scałkować.

Liczenie prędkości i położenia nie jest już takie proste, bo żeby określić przyspieszenie i położenie obiektu po jednym kroku czasowym potrzebujesz znać jego... położenie na koniec tego kroku. Więc albo przyjmujesz na tle mały krok, żeby móc uznać, że siła oddziaływań przez całą jednostkę czasu się nie zmienia (tak kiedyś robiłam i nawet działało), albo (jak mniemam) robisz kilkukrotne przybliżenia, całkując przyspieszenia w przedziale, aż otrzymana przy kolejnej iteracji korekta stanie się pomijanie mała.

0

Ale gadasz... haha!
Normalnie rozwiązujesz równanie różniczkowe typu:

r'' = -Gm/r^2

tyle że w przypadku n ciał, na sferze czy dowolnie, takich równań będzie n;
zatem rozwiązujemy to, ale numerycznie - za pomocą metod do rr.

Ty używałeś metody Eulera - najprostszej z możliwych, która jest bardzo słaba, w zasadzie bezużyteczna.

Metoda Verleta jest też prosta, ale ze 100 razy lepsza:

v = v(t + h/2) = v(t) + a(r)*h/2; // wyliczamy prędkość w połowie czasu: h/2
r = r(t + h)   = r + v*h;    // teraz jedziemy z tym do przodu
v = v(t + h)   = v + a(r)*h/2; // a teraz wyliczamy nową prędkość, na końcu, po czasie h

i to zasuwa już nieźle - błędy są niewielkie, do wytrzymania.

Metoda RK4 - ta jest dobra, i najczęściej stosowana, ale obliczenia są już z 10 razy bardziej skomplikowane.

Te metody robią właśnie to co mówiłeś: całkują te przyspieszenia w przedziale [t, t+h], z pewną dokładnością, np. R4 całkuje to tak samo jak metoda Simpsona.

1 użytkowników online, w tym zalogowanych: 0, gości: 1