22.11.2014 Views

Symulacje komputerowe zjawisk fizycznych z zakresu mechaniki

Symulacje komputerowe zjawisk fizycznych z zakresu mechaniki

Symulacje komputerowe zjawisk fizycznych z zakresu mechaniki

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!