Grafični prikaz gibanja satelita okrog Zemlje

V poljubno verzijo Pythona dodamo katero od grafičnih knjižnic. Prav preprosta je graphic.py . Namestimo jo na disk tako, da postane Pythonu vidna, preberemo še navodila na začetku knjižnice in lahko začnemo s programiranjem grafike. Tako recimo koda

from math import *
from graphics import *
def delay(m):
    for i in range(1000*m):
            continue
def main():
    mx=600    # širina in višina okna
    my=400
    win=GraphWin("Moj Krog",mx,my,autoflush=False)
    p=Rectangle(Point(0,0),Point(mx,my))
    p.setFill("white")
    c=Circle(Point(mx/2,my/2),10)      #Zemlja je modri krogec
    c.setFill("blue")
    p.draw(win)
    c.draw(win)
    dt=10                  #interval med računi leg
    x=mx/3                 #začetna lega
    y=0
    vx=0                   # začetna hitrost
    vy=0.04                # to komponento malo spremeni 
    while True:
        r=sqrt(x*x+y*y)   # račun razdalje satelit-Zemlja
        ax=-x/(r*r*r)     # pospešek satelita sledi iz 
        ay=-y/(r*r*r)     # gravitacijskeg azakona
        vx=vx+ax*dt       # račun nove hitrosti
        vy=vy+ay*dt       
        x=x+vx*dt         #račun nove lege satelita 
        y=y+vy*dt
        t=Point(mx/2+x,my/2-y)     # risanje satelita
        t.setFill("red")
        t.draw(win)
        delay(100)
        #t.setFill("white")
        #t.draw(win)
        update()
    win.getMouse()
    win.close()
main()

spravimo v gibanje satelit okrog Zemlje.

Simulacija gibanja satelita v VisualPythonu

Poljubno gibanje lahko simuliramo tako, da upoštevamo naslednje korake:

  1. izberemo majhen časovni interval dt,
  2. podamo komponente krajevnega vektorja [math]\vec{r}=(x,y)[/math] telesa  na začetku gibanja in komponente njegove hitrosti [math]\vec{v}=(v_x,v_y)[/math] takrat,
  3. zapišemo za telo 2. Newtonov zakon po komponentah in iz izrazimo komponenti pospeška,
  4. uporabimo definicjo pospeška in iz nje izračunamo novi komponenti hitrosti, [math]v_x\leftarrow v_x+a_x\cdot dt,\quad v_y\leftarrow v_y+a_y\cdot dt[/math]
  5. uporabimo definicijo hitrosti in iz nje določimo komponenti nove lege telesa  [math]x\leftarrow x+v_x\cdot dt,\quad y\leftarrow y+v_y\cdot dt,[/math]
  6. narišemo novo lego,
  7. pravkar izračunani lego in hitrost proglasimo za stari, nato pa ponavljamo korake 3-7.

Tako simulacijo lahko izvedemo samo s kalkulatorjem, točke rišemo npr. na mmilimetrski papir (če ga še prodajajo). Lahko pa seveda uporabimo preglednico ali še boljše, programski jezik. Zadnje čase je naših šolah v modi  Python, sorazmerno lahko je  preiti nanj, čr ste se  prej ukvarjali s Pascalom in Delphijem.  Spodnji program je napisan v VisualPythonu,  različici, ki je posebej primerna za grafične prikaze.

Rezultat, ki ga dobimo, je premikajoč se satelit na spodnji sličici:



In takoj se ponujajo  modifikacije programa – satelit, ki pušča za sabo sled, preverjanje Keplerjevih zakonov, dvojna zvezda, zvezdna kopica, trk kopic….Zanimivo vprašanje, na katerega lahko prv hitro odgovorimo,  je postavil Ivan Kuščer: kakšen bi bil tir satelita, če bi privlačna sila med telesi nekoliko odstopala od Newtonovega gravitacijskega zakona, npr.

[math]\vec{F}=\frac{GmM}{r^{3+\alpha}}\vec{r}.[/math]

Prav tako lahko npr. napišete  igro, v kateri z raketo in omejeno količino goriva pristajate na Zemlji ali Luni in ste ves čas v nevarnosti, da če vam goriva zmanjka, postanete umetni satelit….