"Elio Fabri" ha scritto
>C'e' una bellissima figura dello stesso Newton, che si trova
>riprodotta molto spesso: rappresenta la Terra con una montagna (molto
>esagerata rispetto alla scala reale) sulla cui cima sta un cannone che
>spara proiettili orizzontali, di diversa velocita'.
>
>Quelli lenti cadono ai piedi del monte; quelli unpo' piu' veloci,
>cadono un po' piu' in la'.
>Poi cominciano a oercorre un arco apprezzabile della circonferenza
>terrestre, prima di toccare terra...
>Infine restano in orbita, e la distanza all'apogeo (opposto al
>cannone) diventa sempre maggiore.
>
>Chi l'ha vista?
Io ricordo figure simili, ma senza cannone, su diversi libri di fisica.
Tra l'altro sono andato a ripescare una 'simulazione' primitiva che avevo
scritto in mma basandomi sui calcoli che Feynman aveva fatto nel suo primo
volume. Lui li faceva con le tavole delle potenze, delle radici e dei
reciproci e usando il regolo calcolatore.
Con Mathematica � pi� facile : )
La sua procedura per ricavare l'orbita (con equazioni
semplificate in modo da avere GM=1)
m ax = - 1 m x/r^3
m ay = - 1 m y/r^3
si pu� scrivere cos� (brutto codice, ero alle prime armi con mma):
Il primo stadio calcola la velocit� a met� intervallo
firstStep[dt_][{x0_, y0_, vx0_, vy0_}] :=
With[{r = Sqrt[x0^2 + y0^2]},
ax = -x0/r^3; ay = -y0/r^3;
vx = vx0 + ax dt/2; vy = vy0 + ay dt/2;
x = x0 + vx dt; y = y0 + vy dt;
{x, y, vx, vy}
]
Quelli successivi usano il passo intero, basandosi sul primo valore a met�
passo
nextStep[dt_][{x0_, y0_, vx0_, vy0_}] :=
With[{r = Sqrt[x0^2 + y0^2]},
ax = -x0/r^3; ay = -y0/r^3;
vx = vx0 + ax dt; vy = vy0 + ay dt;
x = x0 + vx dt; y = y0 + vy dt;
{x, y, vx, vy}
]
L'iterazione viene fatta da questa procedurina
compute[{x0_, y0_}, {vx0_, vy0_}, dt_, n_Integer] :=
Join[{{x0, y0, vx0, vy0}},
NestList[nextStep[dt], firstStep[dt][{x0, y0, vx0, vy0}], n]
]
Mentre quest'altra provvede a mostrare il grafico dell'orbita risultante
ShowOrbit[{x0_, y0_}, {vx0_, vy0_}, dt_, n_Integer, opts___Rule] :=
Module[{pos}, pos = Transpose[Take[Transpose[
compute[{x0, y0}, {vx0, vy0}, dt, n]], 2] ];
ListPlot[pos, AspectRatio -> Automatic, AxesLabel -> {"x", "y"}, opts,
PlotStyle -> PointSize[.015]]
]
A questo punto si possono vedere i diversi tipi di orbita specificando
posizione e velocit� iniziali, passo e numero di iterazioni.
Ad esempio, questa � l'orbita mostrata sul Feynman, a pagina 9-7 del primo
volume.
ShowOrbit[{0.5, 0}, {0, 1.63}, 0.1, 19];
Poi si possono vedere le varie forme di orbita (valori in libert�, confesso)
orb1=ShowOrbit[{0, 1}, {.4, 0}, .003, 830];
orb2=ShowOrbit[{0,1},{.5,0},.01,270];
orb3=ShowOrbit[{0, 1}, {.7, 0}, .01, 338];
orb4=ShowOrbit[{0,1},{1,0},.01,628];
orb5=ShowOrbit[{0,1},{1.5,0},.01,400];
orb6=ShowOrbit[{0,1},{5,0},.005,120];
Show[orb1,orb2,orb3,orb4,orb5,orb6]
Se si disegna il disco che rappresenta la terra si dovrebbe ottenere una
figura simile a quella da te segnalata (oddio, bisognerebbe ridurre il
numero di punti delle traiettorie che cozzano contro la Terra e
aggiungere l'opzione PlotJoined->True a ShowOrbit)
saluti,
Peltio
che il metodo numerico � primitivo e richiede di ridurre il passo per
ottenere risultati sensibili.
Esempio:
ShowOrbit[{0.5, 0}, {0, 1.63}, 0.1, 900];
ShowOrbit[{0.5, 0}, {0, 1.63}, 0.01, 9000];
(chiss�, forse la precessione delle orbite � un errore di calcolo nella
simulazione di questo universo : ])
Received on Sat Jun 11 2005 - 09:18:45 CEST
This archive was generated by hypermail 2.3.0
: Thu Nov 21 2024 - 05:10:20 CET