Stella e cometa

Un corpo (pianeta, cometa, …) si trova a una certa distanza e ha una certa velocità rispetto a una stella

\displaystyle F = \frac{G\ M \ m}{r^2}\displaystyle \frac{m\ v^2}{r} = \frac{G\ M \ m}{r^2}\displaystyle v = \sqrt{\frac{G\ M}{r}
from vpython import *

G = 1      # Semplificazione
m = 1      #     ...
M = 100*m  # 100 volte

x0  = 10
y0  =  0
v0x =  0
v0y =  2

stella   = sphere(color = color.yellow)
cometa   = sphere(color = color.cyan, pos = vector(x0, y0, 0), radius = 0.25, make_trail = True)
cometa.v = vector(v0x, v0y, 0)

dt = 0.01
while(True):
    rate(100)

    r  = cometa.pos
    r2 = mag2(r)
    rv = r.hat
    F  = -(G*M*m/r2) * rv
    a  = F/m
                         
    cometa.v   += a        * dt
    cometa.pos += cometa.v * dt

Osserva l’andamento della magnitudo della velocità

from vpython import *

G = 1      # Semplificazione
m = 1      #     ...
M = 100*m  # 100 volte

x0  = 10
y0  =  0
v0x =  0
v0y =  2

stella   = sphere(color = color.yellow)
cometa   = sphere(color = color.cyan, pos = vector(x0, y0, 0), radius = 0.25, make_trail = True)
cometa.v = vector(v0x, v0y, 0)

graph(fast = False, xtitle = "t", title = "Velocità")
grafico_v = gcurve(color = color.blue, width = 2)

t  = 0
dt = 0.01
while(t < 20):
    rate(100)

    r  = cometa.pos
    r2 = mag2(r)
    rv = r.hat
    F  = -(G*M*m/r2) * rv
    a  = F/m
                         
    cometa.v   += a        * dt
    cometa.pos += cometa.v * dt

    grafico_v.plot(t, mag(cometa.v)) 
    t += dt

Lascia un commento