Moto di un oggetto in un Campo Gravitazionale

ercand
Per prima cosa un saluto a tutta la comunity :smt039 .

Sto cercando di realizzare un gioco in 3d in cui ci sia una buona dose di fisica, sono tre giorni che sto provando a calcolare la formula che dia la posizione x,y,z di un punto che si muove in un campo gravitazionale, volevo chiedere a voi siete più esperti di me un aiuto per calcolare questa formula.

Grazie :-)

Risposte
ELWOOD1
Dipende rispetto a che sistema di riferimento calcoli la posizione e quali forze vi sono in gioco (se non vi sono forze esterne nello spazio vi sarà solo la forza gravitazionale)....per ogni particella dovresti poi risolvere l'equazione vettoriale di newton $F_g=ma$ rispetto a x y e z ricavandoti le leggi orarie...

buon lavoro.

ercand
Grazie per la risposta.

La situazione che voglio avere è simile a quella che si avrebbe se un oggetto ( tipo asteroide ) passasse vicino alla Terra, quindi una oggetto principale di massa molto grande fermo e un oggetto di massa molto più piccola il cui tragitto viene influenzato dalla forza di gravità.

Io vorrei trovare la funzione che dia la posizione in funzione del tempo, come posso procedere per trovarla?


Grazie :)

cavallipurosangue
Tempo fa il nostro giuseppe87x fece un bel lavoro proprio su questo... In effetti non ricava la posizione in funzione del tempo, ma forse ti darà qualche spunto.

cilcca http://www.matematicamente.it/tesine/buccheri.pdf

ercand
grazie adesso lo leggo e vedo ti fare qualche passo in avanti.

ercand
Non riesco a trovare un metodo con cui procedere :(.
Qualcuno può aiutarmi a fare il primo passo?

kinder1
ti indico la strada in 2D, il passaggio a 3D è facile.

Se M1 ed M2 sono i due corpi puntiformi interagenti, e supponendo M1 fermo (o di massa molto maggiore di M2, o supponendo di descrivere il moto di M2 rispetto ad un sistema di riferimento solidale ad M1, che si muove di moto traslatorio), scrivendo F=ma dove F e l'attrazione gravitazionale tra i corpi ($F=G*(M1*M2)/R^2$ con $R$ distanza tra i corpi), facendo le opportune sostituzioni, considerando i segni correttamente, ottieni per la componente x dell'accelerazione di M2 la seguente equazione:

$(d^2X)/(dt^2)=-GM_1X/((X^2+Y^2)^(3/2))$

Allo stesso modo si scrive l'equazione per la componente Y.

Note le condizioni iniziali di posizione e velocità, puoi integrare con metodi numerici: ne esistono diversi. Se non sei pratico, puoi iniziare con quello di Eulero, accettandone l'errore un po' grossolano, se utilizzi time-step grandi. Ti consiglio Runge-Kutta del 4° ordine o metodi impliciti.

cavallipurosangue
A dir la verità il problema è sempre riconducibile ad un problema 2d... Infatti esiste sempre un solo piano che passa per il vettore velocità ed il centro della terra. In questo caso infatti il campo di forze è centrale, quindi l'accelerazione è diretta in modo da congiungere il centro della terra con il corpo puntiforme, quindi la velocità essendo un altro vettore, comunque sia orientato nello spazio individua insieme alla congiungente tra i due punti un solo piano. Questo rimane anche lo stasso lungo tutto lo svolgersi del fenomeno, infatti non esistono azioni ortogonali al piano stesso e quindi neanche accelerazioni normali ad esso. L'unica difficolatà sta nello scriversi in funzione della direzione della velocità l'equazione del piano in questione rispetto ad un sistema fisso rispetto a terra (della quale per semplicità trascuriamo il moto rotatorio, supponendo la distanza tra i due punto abbastanza elevata).

Bene, una volta detto questo concentriamoci sul problema bidimensionale.

Io a dire il vero utilizzerei un sistema di coordinate polari ${\vectheta,vecr,veck}$, ruotante insieme al punto m e centrato su M, che mi sembra il più naturale per descrivere questo tipo di fenomeno.

Adesso una volta fatto questo, passerei alla scrittura della prima equazione cardinale (l'unica senza senso, perchè si parla di punti e non di corpi rigidi...) in forma vettoriale:

$GMm/r^2\vec{r}=m(d\vec(v))/(dt)=m\dot(vecv)+m\dottheta\vec(k)\wedge\vec(v)=1/r(dL)/(dr)$

A meno di errori questo è quello che mi è venuto fuori facendo dei conti...

dove: $\dot(\theta)=(\vecv\cdot\vectheta)/(r)$

Facendo qualche conto:

$(\ddotr-\dot(\theta)^2r)vecr+(\ddot(\theta)r+2\dot(\theta)\dotr)\vectheta=-GM/r^2\vecr$

Otteniamo così un sistema di due equazioni differenziali:

${(\ddotr-\dot(\theta)^2r=-GM/r^2),(\ddot(\theta)r+2\dot(\theta)\dotr=0=1/rd/(dr)(\dot(\theta)r^2)):}$

Come si nota la seconda dice giustamente che il momento angolare rispetto al polo M si conserva.

Si ricava: $dot\theta=L/r^2$


Sostituendo nella prima equazione:

$\ddotr-L^2/r^3=-GM/r^2=>\dotrd\dotr=(L^2/r^3-GM/r^2)dr=>\dotr=\sqrt(2GM/r-L^2/r^2+C)$dove $C$ è una costante da determinare con le condizioni al contorno.

Integrando rispetto al tempo:

$(dr)/\sqrt(2GM/r-L^2/r^2+C)=dt=>t+D=\int(dr)/(sqrt(2GM/r-L^2/r^2+C))$

dove $D$ è l'altra costante da determinarsi in funzione delle condizioni iniziali.

Chiaramente tutto ciò è vero se $r\ne0$

Momentaneamente però non so trovare una primitiva in forma chiusa (ammesso che ci sia...).

Se invece si vuole $r(theta)$, basta scrivere: $\dotr=(dr)/(d\theta)\dot(\theta)= (dr)/(d\theta) L/r^2$

Da cui:

$\theta+A=\int(Ldr)/(sqrt(2GMr^3-L^2r^2+Cr^4))=atan((GMr-L^2)/(L(sqrt(Cr^2+2GMr-L^2))))$

Oppure ancora meglio, usare le tecniche usate da giuseppe87x...

GIOVANNI IL CHIMICO
http://en.wikipedia.org/wiki/N-body_problem
Qui c'è la generalizzazione al caso degli N corpi.
Si fanno anche simulazioni di dinamica delle galassie usando questo approccio.

ercand
Grazie infinite per le risposte e i passaggi dei calcoli, sto rispondendo in ritardo perchè ero preso a capire il materiale che mi avete dato :-D .

Ispirandomi a quello che mi avete detto mi è venuta in mento una possibile soluzione al problema sperando abbia una buona precisione e su questo mi affido ai voi e ai vostri pareri, veniamo alla mia idea.

In questi giorni leggendo la teoria su metodo di Eulero e Runge-Kutta ho pensato questo; noi sabbiamo che la forza di gravità è data da $a(r) = G (Mm)/r^2$ quindi sappiamo l'accelerazione in ogni punto dello spazio, sappiamo anche che la posizione è uguale a $x(t) = x_0 + v_0t + 1/2at^2$; adesso se noi calcoliamo $a$ in un certo punto dello spazio ed usiamo l'equazione del moto iterativamente per tempi $t$ molto piccoli abbiamo un'approssimazione della posizione di un punto su cui agisce un campo gravitazionale e questa approssimazione è tanto più precisa quanto più piccoli sono gli intervalli di tempo, il calcolo si ridurrebbe a qulcosa del genere:

$x(t) = x_0 + v_0t + GM m/r_0^2$
$x(t) = x_1 + v_1t + GM m/r_1^2$
$x(t) = x_n + v_nt + GM m/r_n^2$

Voi cosa ne pensate? può essere una buona soluzione?

kinder1
ercand

visto che ti sei andato a vedere i metodi numerici di integrazione di un'equazione differenziale, a questo punto ti manca davvero poco.

Se consideri l'espressione della componente x dell'accelerazione del mio precedente post

$ddotX=-GM_1X/(X^2+Y^2)^(3/2)$

ed immaginando di usare Eulero, indicando con $Deltat$ il time step, ed usando il pedice i per indicare che la variabile è valutata allo step temporale i-esimo, risali a velocità e posizione allo step i+1-esimo nel modo seguente:

$dotX_(i+1)=dotX_i+ddotX_i*Deltat$
$X_(i+1)=X_i+dotX_i*Deltat+ddotX_i*(Deltat^2)/2$

Questo metodo è un po' rozzo, ma funziona. Devi fare solo attenzione colla scelta del $Deltat$

Maxos2
Più o meno sì

ma è consigliabile la tecnica base del leap-frog, che consiste nel calcolare la velocità nei punti intermedi tra un pasos e l'altro, per mediarla, diciamo così.

il metodo può scriversi così in lingua matlab:

t0=tempo iniziale (eventuale);
s=posizione_iniziale;
w=velocita_iniziale;
e=passo_temporale_di_integrazione;
n=numero_di_passi;
R è il vettore di parametri da cui dipende la forza (nel nostro caso le masse)

X,V,A sono matrici 3xn che contengono posizione velocità e accelerazione rispettivamente.
T è il tempo, se la forza dovesse dipendere dal tempo (non in questo caso)

X(1,: )=s;
A(1,: )=forza(s,w,R,t0);
V(1,: )=w+0.5*e*A(1,: );
T=e*(0:1:n-1)+t0;

for i=2:n
X(i,: )=X(i-1,: )+e*V(i-1,: );
A(i,: )=forza(X(i,: ),V(i-1,: ),R,T(i));
V(i,: )=V(i-1,: )+e*A(i,: );
end

kinder1
Volevo aggiungere che per il problema da te posto inizialmente, cioè il moto di un punto in campo gravitazionale, ma vale anche per il problema dei due corpi, esiste la soluzione analitica esatta, e non servono metodi numerici. La soluzione che ti ho proposto io serve in realtà a simulare situazioni più complicate di cui non si dispone di una soluzione analitica, oltre al fatto che, se vuoi, puoi immaginare anche che il punto di cui descrivi il moto sia, per esempio, un satellite od un razzo, su cui puoi accendere i motori per cambiare orbita. In tale caso devi solo aggiungere, nell'equazione del moto, alla componente gravitazionale quella generata dalla spinta del motore.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.