Symulacje komputerowe zjawisk fizycznych z zakresu mechaniki
Symulacje komputerowe zjawisk fizycznych z zakresu mechaniki
Symulacje komputerowe zjawisk fizycznych z zakresu mechaniki
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Rysunek 39: Symulacja trajektorii ruchu dla układu planet podwójnych. Środek masy znajduje się w spoczynku (z<br />
lewej) oraz środek masy porusza sie ruchem jednostajnym (z prawej).<br />
Ruch wielu planet z uwzględnianiem wzajemnego oddziaływania<br />
grawitacyjnego między sobą.<br />
Nieco trudniejszym zagadnieniem jest rozpatrywanie ruchów planet wchodzących w skład<br />
niewielkiego układu planetarnego na przykład złożonego z trzech lub więcej ciał<br />
o porównywalnych masach [7]. W każdym kroku czasowym będzie do wykonania większa ilość<br />
obliczeń, dlatego korzystanie z tradycyjnych metod może okazać się nieefektywne. Aby<br />
przyspieszyć nieco obliczenia do przechowywania danych wykorzystane zostaną tablice. Zobaczmy<br />
jak wygląda główna struktura algorytmu ruchu.<br />
Rozpoczynamy od określenia liczby ciał wchodzących w skład układu planetarnego oraz określenia<br />
ich położeń, mas i prędkości początkowych. Oprócz tego opcjonalnie możemy nadawać inne<br />
atrybuty na przykład nazwy poszczególnych ciał, określić kolory etc.<br />
#liczba cial bioracych udzial w symulacji<br />
n_of_bodies = 3<br />
# nadanie polozen poczatkowych<br />
pos=array([[-2.5,0.0,0.0],[-1.136366, -0.00017964, 0.],[2.5,0.0,0.0]])<br />
# nadanie mas<br />
lista_mas=[30.0, 0.01, 25.0]<br />
m = array(lista_mas)<br />
#nadanie predkosci poczatkowych<br />
vel=array([[0.0,-1.8,0.0],[0.0,-5.4,3.5],[0.,2.16,0.0]])<br />
Należy pamiętać, że listy zawierające parametry początkowe muszą ściśle odpowiadać liczbie ciał<br />
biorących udział w symulacji i tak zmieniając liczbę ciał do 4 musimy zmodyfikować listę położeń<br />
na przykład do postaci:<br />
pos=array([[-2.5,0.0,0.0],[-1.136366,0.00017964,0.], [2.5,0.0,0.0],<br />
[3.5,0.0,1.0]])<br />
W analogiczny sposób postępujemy z pozostałymi listami zawierającymi parametry początkowe.<br />
Przyjrzyjmy się nieco bliżej funkcji big_movable() odpowiedzialnej za wyznaczanie przyspieszenia<br />
prędkości i położenia w każdym kroku czasowym symulacji. Dla naszego układu planetarnego<br />
49