home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Amiga Shareware Floppies / ma35.dms / ma35.adf / Grawitacja / Grawitacja.doc < prev    next >
Encoding:
Text File  |  1995-03-14  |  15.4 KB  |  445 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.                               Grawitacja V1.1
  8.                              Kielce 1993-09-05
  9.  
  10.  
  11.  
  12.                                   Autor :
  13.                   Grzegorz Malewicz - Thanatos/InvestatioN
  14.  
  15.  
  16.  
  17.                             Podziëkowania dla :
  18.                      Nico François, Jan van den Baard,
  19.                     dr Zbigniewa Bema, Wojciecha Wronki
  20.  
  21.                                  Mój adres:
  22.                       ul. Alabastrowa 56  25705 POLAND
  23.  
  24.             Jeôli chcesz wykorzystaê którâô z procedur programu,
  25.                           lub dokonaê zmian w nim
  26.                        MUSISZ uzyskaê zgodë autora!!!
  27.  
  28.  
  29.  
  30.  
  31.  
  32. SPIS TREÔCI:
  33.  
  34.                                   Linie
  35. 1. Wstëp                        47  -  70
  36. 2. Czëôê teoretyczna            70  - 289
  37. 3. Opis programu                290 - 352
  38. 4. Tabela danych o planetach
  39.    ukîadu sîonecznego           353 - 429
  40. 5. Uwagi koïcowe                430 - 445
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48. 1. WSTËP
  49.  
  50.  
  51.  
  52.  
  53.         Program   Grawitacja   sîuûy   do   symulowania  ruchu  ukîadu  ciaî
  54. niebieskich  o zadanych masach i promieniach oraz poîoûeniach i prëdkoôciach
  55. poczâtkowych.   Pomysî  jego  napisania  zrodziî  sië  pod koniec 1991 roku.
  56. Pierwsza  jego  wersja  powstaîa na poczâtku 1992 roku.  Byîa ona napisana w
  57. Kick  Pascalu  na  Amigë  i wspólnie z opisem strony matematycznej stanowiîa
  58. pracë  Grzegorza  Malewicza  i Wojciecha Wronki na I Miëdzyszkolne Warsztaty
  59. Matematyczne  województwa  kieleckiego  w  kwietniu 1992 roku.  Dostrzegajâc
  60. wiele braków w pierwszej wersji programu Grzegorz Malewicz rozpoczâî pisanie
  61. nowej  wersji  zawierajâcej bardziej rozbudowany i przyjemniejszy w obsîudze
  62. interfejs uûytkownika.  Owocem tej pracy jest niniejszy program.
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71. 2. CZËÔÊ TEORETYCZNA
  72.  
  73.  
  74.  
  75.  
  76.         Jednym  z  wielu  zastosowaï komputerów w nauce sâ symulacje ukîadów
  77. fizycznych.   Takim  ukîadem  fizycznym  sâ  ciaîa  niebieskie.   Ukîad ciaî
  78. niebieskich  bëdzie  ewoluowaî  pod  wpîywem siî grawitacyjnych dziaîajâcych
  79. miëdzy  nimi.   Powstaje  pytanie,  jak bëdzie wyglâdaî ukîad ciaî po pewnym
  80. czasie?   Odpowiedú  na  nie  nie  jest prosta.  Ruch n ciaî opisuje ukîad n
  81. równaï  róûniczkowych  drugiego  stopnia.   Wspóîczesna  matematyka  nie zna
  82. ogólnego  rozwiâzania  dla  takiego ukîadu.  Moûliwe jest jednak rozwiâzanie
  83. ukîadu  metodami  przybliûonymi.  Jedna z nich nosi nazwë rozwiâzania równaï
  84. róûniczkowych metodâ skoïczonego elementu.
  85.  
  86.         Jeôli  znamy wartoôê funkcji f, jej pierwszej oraz drugiej pochodnej
  87. dla  pewnego  argumentu  x,  to metoda skoïczonego elementu pozwala w sposób
  88. przybliûony przewidzieê, jaka bëdzie wartoôê funkcji f(x+dx) i jej pochodnej
  89. f'(x+dx).   Wartoôê  przewidziana  bëdzie  tym  dokîadniejsza,  im dx bëdzie
  90. mniejsze.
  91.  
  92.         f(x+dx) = f(x) + f'(x)*dx
  93.  
  94.         f'(x+dx) = f'(x)  + f''(x)*dx
  95.  
  96.         Dziëki tej metodzie nie moûna okreôliê funkcji f(x) w sposób ciâgîy,
  97. a  jedynie  obliczyê jej wartoôci dla pewnych argumentów, np.:  x+dx, x+2dx,
  98. x+3dx,  ...   .  Istnieje bardzej dokîadna metoda, korzystajâca we wzorze na
  99. f(x+dx) z drugiej pochodnej.
  100.  
  101.         f(x+dx) = f(x) + f'(x)*dx + f''(x)*dx²/2
  102.  
  103.         f'(x+dx) = f'(x) + f''(x)*dx
  104.  
  105. Zmusza  ona  wprawdzie  do wykonania dodatkowo kilku dziaîaï, ale daje wynik
  106. bardziej dokîadny.
  107.  
  108.         Warto  zauwaûyê,  ûe  jeôli  znamy  jedynie  f(x) i f'(x), to metoda
  109. skoïczonego elementu pozwala przewi dzieê wartoôci funkcji f i jej pochodnej
  110. f'  dla  kolejnych  argumentów  (  np.   x+dx,  x+2dx,  x+3dx,  ...   ).  Do
  111. obliczenia  kolejnych  wartoôci  f  i  f'  wszystkich  wartoôci f'' od razu.
  112. Wartoôê  drugiej  pochodnej  f''(x+ndx)  wystarczy  znaê dopiero, gdy chcemy
  113. wyznaczyê f(x+(n+1)dx) i f'(x+(n+1)dx).  Spostrzeûenie bëdzie bardzo pomocne
  114. przy symulowaniu ruchu ciaî niebieskich.
  115.  
  116.         Symulowanie ruchu ciaî niebieskich polega na znajdowaniu ich poîoûeï
  117. w  nastëpujâcych  po  sobie chwilach i obrazowaniu kolejnych stanów ukîadu w
  118. formie graficznej na ekranie komputera.
  119.  
  120.         Przypomnijmy sobie pewne fakty znane z nauki w szkole ôredniej:
  121.  
  122. - prëdkoôê to pierwsza pochodna poîoûenia wzglëdem czasu,
  123. - przyspieszenie  to druga  pochodna  poîoûenia wzglëdem czasu,
  124. - jeôli  ciaîo  o masie m porusza sië z pewnym przyspieszeniem, to dziaîa na
  125.   nie wypadkowa siîa równa iloczynowi masy i przyspieszenia.
  126.  
  127. Te trzy sformuîowania moûna w postaci wektorowej zapisaê nastëpujâco:
  128.  
  129.         ->      ->
  130.         P'(t) = V(t)
  131.  
  132.         ->       ->
  133.         P''(t) = a(t)
  134.  
  135.         ->     ->
  136.         F(t) = a(t)*m
  137.  
  138. lub  zgodnie  z  fizycznâ  zasadâ  niezaleûnoôci  ruchów wzdîuû trzech osi w
  139. przestrzeni:
  140.  
  141.         Px'(t) = Vx(t)
  142.         Py'(t) = Vy(t)
  143.         Pz'(t) = Vz(t) 
  144.  
  145.         Px''(t) = ax(t)
  146.         Py''(t) = ay(t)
  147.         Pz''(t) = az(t)
  148.  
  149.         Fx(t) = ax(t)*m
  150.         Fy(t) = ay(t)*m
  151.         Fz(t) = az(t)*m
  152.  
  153. Widaê,  ûe  jeôli  znalibyômy  poczâtkowe  poîoûenia  i  prëdkoôci ciaî oraz
  154. umielibyômy  wyznaczyê wypadkowe siîy dziaîajâce na kaûde z nich w chwili t,
  155. to  moglibyômy  opierajâc  sië  na  zasadzie skoïczonego elementu, wyznaczyê
  156. poîoûenia i prëdkoôci ciaî w chwili t+dt.
  157.  
  158.         Zastanówmy  sië,  jak  wyznaczyê wypadkowe siîy dziaîajâce na ciaîa.
  159. Wiemy,  ûe  kaûde  dwa  ciaîa obdarzone masâ oddziaîywujâ miëdzy sobâ siîami
  160. grawitacyjnymi.   Dlatego  aby  wyznaczyê  wypadkowâ siîë dziaîajâcâ na dane
  161. ciaîo, naleûy zsumowaê siîy pochodzâce od wszystkich pozostaîych ciaî.
  162.  
  163.         Z  lekcji  fizyki  wiemy,  ûe  wartoôê siîy grawitacyjnej wywieranej
  164. przez  ciaîo  b  (bëdâce  w  punkcie B) na ciaîo a (bëdâce w punkcie A) jest
  165. równa:
  166.  
  167.                  Ma * Mb
  168.         F = G * ---------
  169.                   |AB|²
  170.  
  171. lub w postaci wektorowej zawierajâcej takûe kierunek i zwrot tej siîy:
  172.  
  173.                            ->
  174.         ->       Ma * Mb * AB
  175.         F = G * --------------
  176.                      |AB|³
  177.  
  178.  
  179. gdzie G jest  staîâ grawitacji równâ:
  180.  
  181.                       m³
  182. G = 6,672 * 10-¹¹ --------
  183.                    kg * s²
  184.  
  185. Ma i Mb to masy ciaî.
  186.  
  187.            ->
  188. Rozbijajâc F na skîadowe otrzymujemy:
  189.  
  190.                   Ma * Mb * ABx
  191.         Fx = G * --------------
  192.                       |ABx|³
  193.  
  194.                   Ma * Mb * ABy
  195.         Fy = G * --------------
  196.                       |ABy|³
  197.  
  198.                   Ma * Mb * ABz
  199.         Fz = G * --------------
  200.                       |ABz|³
  201.  
  202. W  ten sposób naleûy obliczyê siîy jakie dziaîajâ na dane ciaîo od kaûdego z
  203. pozostaîych  ciaî,  a  nastëpnie  zsumowaê  te siîy wektorowo.  W ten sposób
  204. otrzymujemy  siîë  wypadkowâ dziaîajâcâ na dane ciaîo.  Naleûy przeprowadziê
  205. obliczenia  wedîug  powyûszego  schematu  dla kaûdego ciaîa, by w ten sposób
  206. wyznaczyê  wypadkowe  siîy  dla  kaûdego  ciaîa.   Naleûy  zauwaûyê,  ûe aby
  207. wyznaczyê  siîy  wypadkowe w pewnej chwili, trzeba znaê poîoûenia ciaî w tej
  208. wîaônie chwili.
  209.  
  210.         Zaîóûmy,   ûe   rozpoczynamy  symulacjë  w  chwili  t0  majâc  ukîad
  211. skîadajâcy  sië  z  k  ciaî  o  masach m1..mk.  Potrzebna jest nam znajomoôê
  212. poîoûeï  ciaî  w  chwilach t1=t0+dt, t2=t0+2dt, t3=t0+3dt, ...  , tn=t0+ndt.
  213. Znamy  poîoûenia  P1...Pk  i  prëdkoôci  V1...Vk  k  ciaî  w  chwili t0.  Na
  214. podstawie  znajomoôci poîoûeï P1...Pk moûemy obliczyê siîy wypadkowe F1...Fk
  215. dziaîajâce na ciaîa w chwili t0.  Korzystjâc z wczeôniej omówionych zwiâzków
  216. moûna obliczyê skîadowe poîoûeï i prëdkoôci w chwili t1 dla ciaî niebieskich
  217. naleûâcych ukîadu.
  218.  
  219.                                                   dt²
  220.     P1x(t1) = P1x(t0) + V1x(t0)*dt + F1x(t0)*----
  221.                                                   2m
  222.  
  223.                                                   dt²
  224.     P1y(t1) = P1y(t0) + V1y(t0)*dt + F1y(t0)*----
  225.                                                   2m
  226.  
  227.                                                   dt²
  228.     P1z(t1) = P1z(t0) + V1z(t0)*dt + F1z(t0)*----
  229.                                                   2m
  230.  
  231.  
  232.                                      dt
  233.     V1x(t1) = V1x(t0) + F1x(t0)*----
  234.                                      m
  235.  
  236.                                      dt
  237.     V1y(t1) = V1y(t0) + F1y(t0)*----
  238.                                      m
  239.  
  240.                                      dt
  241.     V1z(t1) = V1z(t0) + F1z(t0)*----
  242.                                      m
  243.  
  244.     .
  245.     .
  246.     .
  247.  
  248.  
  249.                                                   dt²
  250.     Pkx(t1) = Pkx(t0) + Vkx(t0)*dt + Fkx(t0)*----
  251.                                                   2m
  252.  
  253.                                                   dt²
  254.     Pky(t1) = Pky(t0) + Vky(t0)*dt + Fky(t0)*----
  255.                                                   2m
  256.  
  257.                                                   dt²
  258.     Pkz(t1) = Pkz(t0) + Vkz(t0)*dt + Fkz(t0)*----
  259.                                                   2m
  260.  
  261.  
  262.                                      dt
  263.     Vkx(t1) = Vkx(t0) + Fkx(t0)*----
  264.                                      m
  265.  
  266.                                      dt
  267.     Vky(t1) = Vky(t0) + Fky(t0)*----
  268.                                      m
  269.  
  270.                                      dt
  271.     Vkz(t1) = Vkz(t0) + Fkz(t0)*----
  272.                                      m
  273.  
  274.  
  275.         W  powyûszy sposób otrzymujemy, na mocy metody skoïczonego elementu,
  276. poîoûenia  P1...Pk  i  prëdkoôci  V1...Vk  dla  chwili t1.  Teraz wyznaczamy
  277. wypadkowe siîy grawitacyjne F1...Fk dziaîajâce na ciaîa na podstawie poîoûeï
  278. w  chwili t1 i powtarzamy powyûszâ operacjë otrzymujâc P1...Pk i V1...Vk dla
  279. chwili  t2.   Postëpujemy  tak  aû  do osiâgniëcia chwili tn.  Co kaûdy krok
  280. naleûy  tylko  zobrazowaê  stan  uîadu  na  ekranie komputera.  W ten sposób
  281. otrzymujemy symulacjë ruchu ciaî niebieskich.
  282.  
  283.  
  284.  
  285.  
  286.  
  287.  
  288.  
  289.  
  290. 3. OPIS PROGRAMU
  291.  
  292.         Na podstawie teorii zawartej w punkcie 2 zostaî napisany przeze mnie
  293. program  w  jëzyku  SAS/C  6.00  na komputer AMIGA.  Program dziaîa niestety
  294. jedynie  pod  systemem  2.0  i  wyûszym.   Zwiâzane  jest  to z zastosowanym
  295. interfejsem  uûytkownika.   Szczëôliwi posiadacze zozszerzenia SLOW (do 1MB)
  296. mogâ  uûywaê  programu  po  uprzednim  wgraniu  dyskowego  Kickstart'u  2.0.
  297. Program    wymaga    biblioteki   mathtrans.library   (wersja   dowolna)   i
  298. reqtools.library (wersja 38+)
  299.  
  300.         W  programie  przyjëto  nastëpujâce  jednostki:   czas  podaje sië w
  301. latach,  wszelkie  odlegîoôci  (np.   wspólrzëdne,  promienie)  podaje sië w
  302. jednostkach   astronomicznych  (AU),  prëdkoôci  podaje  sië  w  jednostkach
  303. astronomicznych   na   rok   (AU/rok),  masy  podaje  sië  po  wczeôniejszym
  304. podzieleniu  przez 10e24 kg (np.  jako masë Ziemi naleûy podaê 5.974 zamiast
  305. 5.974e24).   Ôrodek  ukîad  wspóîrzëdnych znajduje sië w ôrodku ekranu, iksy
  306. rosnâ  w prawo, igreki w góre, zety w gîâb.  Ekran obejmuje kât okoîo 90° (z
  307. odlegîoôci 1AU widaê okoîo 2AU)
  308.  
  309.         Prawidîowo  wgrany  program  zgîasza  sië z komunikatem o autorze na
  310. nowo  otworzonym  screen'ie.   Z  prawej  strony  screen'a znajduje sië okno
  311. parametrów  ukîadu.   W  nim  okreôla sië jak dîugi okres czasu ma obejmowaê
  312. symulacja,  w ilu klatkach ma byê stworzona animacja, w ilu krokach majâ byê
  313. przeprowadzone  obliczenia  (im  wiëcej  kroków  tym  animacja jest bardziej
  314. zbliûona  do  rzeczywistoôci, po wiëcej informacji patrz czëôê teoretyczna),
  315. poîoûenie obserwatora oraz punkt patrzenia.
  316.  
  317.         Aby  przeprowadziê  obliczenia,  najpierw  trzeba  ustaliê parametry
  318. poczâtkowe  ukîadu.   W tym celu wybierz opcjë "Dodaj ciaîo" z menu "Ukîad".
  319. Nastëpnie  wprowadú  jego  mase,  promieï,  poîoûenie  poczâtkowe i prëdkoôê
  320. poczâtkowâ.  W ten sposób ustal dane o nie wiëcej niû 20 ciaîach.  Nastëpnie
  321. ustal  czas  symulacji,  ile  klatek ma zawieraê animacja oraz w ilu krokach
  322. majâ byê  przeprowadzone  obliczenia.   Potem moûesz wybraê opcjë "Oblicz" z
  323. menu  "Animacja".   Po  skoïczeniu obliczeï ustal w oknie "Parametry ukîadu"
  324. zarówno  poîoûenie  obserwatora  jak  i  punkt patrzenia.  Nastëpnie wybierz
  325. sposób   prezentacji   obliczonej  animacji.   Dokonaê  tego  moûna  w  menu
  326. "Animacja".   Wybór  obejmuje:   ciaîa  to punkty, ciaîa to koîa o promieniu
  327. zaleûnym  od  promienia  danego  i  odlegîoôci  od oka obserwatora, ciaîa to
  328. punkty  zostawiajâce  ôlad.   Moûna  takûe  wybraê,  czy multitasking ma byê
  329. wyîâczony  podczas  animowania  (co  zwiëksza  szybkoôê  animacji)  czy  teû
  330. wîâczony.   Ostatnim  krokiem  jest obejrzenie animacji.  W tym celu wybierz
  331. opcjë "Pokaû" menu "Animacja".
  332.  
  333.         Program umoûliwia zapisanie lub wczytanie zdefiniowanego ukîadu oraz
  334. animacji.   W  tym  celu  naleûy  wybraê  odpowiednie opcje menu "Ukîad" lub
  335. "Animacja".
  336.  
  337.         Obliczenia    moûna    przerwaê   wciskajâc   gadget   "Stop".    Po
  338. potwierdzeniu,  program  poinformuje  ile  klatek  udaîo mu sië wygenerowaê.
  339. Klatki  te  moûna  obejrzeê  wybierajâc opcjë "Pokaû" z menu "Animacja".  Na
  340. sygnaî  o przerwaniu obliczeï program zereaguje dopiero przy zmianie stopnia
  341. zaawansowania obliczeï (tzn. gdy suwak zwiëkszy swoje wysuniëcie).
  342.  
  343.         Animacjë moûna przerwaê wciskajâc jednoczeônie lewy i prawy przycisk
  344. myszy.
  345.  
  346.  
  347.  
  348.  
  349.  
  350.  
  351.  
  352.  
  353. 4. TABELA DANYCH O PLANETACH UKÎADU SÎONECZNEGO
  354.  
  355.  
  356.  
  357.  
  358. Sîoïce  :
  359.         masa                    : 1989000  [ * 10e24 kg ]
  360.         odlegîoôê od Sîoïca     : -        [ AU ]
  361.         czas obiegu             : -        [ rok ]
  362.         prëdkoôê                : -        [ AU/rok ]
  363.  
  364. Merkury :
  365.         masa                    : 0.33     [ * 10e24 kg ]
  366.         odlegîoôê od Sîoïca     : 0.387    [ AU ]
  367.         czas obiegu             : 0.240842 [ rok ]
  368.         prëdkoôê                : 10.09833 [ AU/rok ]
  369.  
  370. Wenus   :
  371.         masa                    : 4.869    [ * 10e24 kg ]
  372.         odlegîoôê od Sîoïca     : 0.723    [ AU ]
  373.         czas obiegu             : 0.615187 [ rok ]
  374.         prëdkoôê                : 7.38758  [ AU/rok ]
  375.  
  376. Ziemia  :
  377.         masa                    : 5.974    [ * 10e24 kg ]
  378.         odlegîoôê od Sîoïca     : 1        [ AU ]
  379.         czas obiegu             : 1        [ rok ]
  380.         prëdkoôê                : 6.28429  [ AU/rok ]
  381.  
  382. Mars    :
  383.         masa                    : 0.626    [ * 10e24 kg ]
  384.         odlegîoôê od Sîoïca     : 1.524    [ AU ]
  385.         czas obiegu             : 1.88     [ rok ]
  386.         prëdkoôê                : 5.0903   [ AU/rok ]
  387.  
  388. Jowisz  :
  389.         masa                    : 1899.075 [ * 10e24 kg ]
  390.         odlegîoôê od Sîoïca     : 5.203    [ AU ]
  391.         czas obiegu             : 11.86    [ rok ]
  392.         prëdkoôê                : 2.75504  [ AU/rok ]
  393.  
  394. Saturn  :
  395.         masa                    : 568.546  [ * 10e24 kg ]
  396.         odlegîoôê od Sîoïca     : 9.539    [ AU ]
  397.         czas obiegu             : 29.46    [ rok ]
  398.         prëdkoôê                : 2.0357   [ AU/rok ]
  399.  
  400. Uran    :
  401.         masa                    : 86.862   [ * 10e24 kg ]
  402.         odlegîoôê od Sîoïca     : 19.182   [ AU ]
  403.         czas obiegu             : 84.01    [ rok ]
  404.         prëdkoôê                : 1.43448  [ AU/rok ]
  405.  
  406. Neptun  :
  407.         masa                    : 102.992  [ * 10e24 kg ]
  408.         odlegîoôê od Sîoïca     : 30.058   [ AU ]
  409.         czas obiegu             : 164.79   [ rok ]
  410.         prëdkoôê                : 1.14548  [ AU/rok ]
  411.  
  412. Pluton  :
  413.         masa                    : 0.012    [ * 10e24 kg ]
  414.         odlegîoôê od Sîoïca     : 39.293   [ AU ]
  415.         czas obiegu             : 246,31   [ rok ]
  416.         prëdkoôê                : 1.00203  [ AU/rok ]
  417.  
  418.         Podane  prëdkoôci  obiegu  i  odlegîoôci  sâ  wartoôciami  ôrednimi.
  419. Powyûszâ  tabelë  sporzâdziîem  na  podstawie  tabel ze strony 383 "Niebo na
  420. dîoni",  Eduard  Pittich i Dusan Kalmancok, PW "Wiedza Powszechna", Warszawa
  421. 1990
  422.  
  423.  
  424.  
  425.  
  426.  
  427.  
  428.  
  429.  
  430. 5. UWAGI KOÏCOWE
  431.  
  432.  
  433.  
  434.  
  435.         Autor skîada serdeczne podziëkowania:
  436. Nico François           - za reqtools.library,
  437. Jan van den Baard       - za GadToolBox,
  438. dr Zbigniewowi Bemowi   - za pomoc naukowâ,
  439. Wojciechowi Wronce      - za pomoc.
  440.  
  441.         Byîbym  bardzo  wdziëczny  za wszelkie uwagi odnoônie tego programu.
  442. Kaûda  zu  nich zostanie rozwaûona przy powstawaniu kolejnych, doskonalszych
  443. wersji  proramu.   Proszë  pisaê  na  mój adres umieszczony na poczâtku tego
  444. tekstu.
  445.