Newton.exe la legge di gravitazione universale
"Cosa fa girare i pianeti intorno al sole? Al tempo di Keplero qualcuno ha risposto a questa domanda dicendo che ci sono degli angeli dietro di essi, che battendo le ali spingono i pianeti lungo l'orbita. Come vedremo questa risposta non è molto lontana dalla verità. L'unica differenza è che gli angeli si mettono in una direzione diversa e le loro ali spingono verso l'interno."
Questo programma permette di simulare il moto di corpi reciprocamente interagenti in base alla legge di gravitazione universale di Newton. Sono quindi simulati sia i principi della dinamica (della meccanica classica), sia la gravità secondo la legge dell'inverso del quadrato. Entrambi sono stati formulati per la prima volta nei Philosophiae Naturalis Principia Mathematica ↗ (principi matematici della filosofia naturale) pubblicati il 5 luglio del 1687 da Isaac Newton, da cui l'inevitabile nome del programma.
Il codice di questo programma è stato incorporato nel mio simulatore spaziale bidimensionale Inertia e successivamente nel mio simulatore di lanci spaziali Tsiolkovsky.
TLNR A partire da questa prima formulazione da parte di Newton la meccanica classica è stata riformulata in modo via via più astratto ed elegante, pur mantenendo lo stesso contenuto fisico della teoria newtoniana. L'insieme di queste formulazioni, indicate solitamente con il nome di meccanica razionale o analitica, sono state sviluppate principalmente durante il XIX secolo, da parte di importanti scienziati come Lagrange, Hamilton, Jacobi e Poisson. Nella descrizione di questo mio piccolo programma ho cercato di dare dei brevi spunti e riferimenti in questa direzione, per chi volesse approfondire. Oltre ad essere conoscenze imprescindibili come prerequisito per passare alla successiva fisica moderna (vedi anche l'ultimo paragrafo), trovo che siano teorie e modelli di una bellezza incredibile.
Il problema degli $n$ corpi
Diamo innanzitutto una giustificazione matematica a questo programma, in cui è possibile simulare, con una certa approssimazione, un numero virtualmente arbitrario di corpi interagenti.
Il caso di due soli corpi interagenti, il cosiddetto problema dei due corpi, è facilmente risolvibile analiticamente, essendo equivalente al moto di un corpo di massa $\frac{m_1 m_2}{m_1 + m_2}$ (detta massa ridotta) e di coordinate $r_2 - r_1$ in un campo centrale dato. Integrando si ottiene l'equazione di una sezione conica e quindi le leggi già dedotte empiricamente da Keplero per le orbite ellittiche e circolari, più i casi di traiettorie aperte paraboliche e iperboliche.
Per più di due corpi si ottiene invece un sistema che in generale non è più risolvibile, nel senso che le soluzioni, pur esistendo, non possono più essere rappresentate con un numero finito di termini. Il problema può essere affrontato con tecniche perturbative (in sostanza si suddivide il problema in due parti, una risolvibile analiticamente, l'altra esprimibile sotto forma di una serie di potenze) o con il calcolo numerico, come nel caso della presente simulazione.
Il sistema può presentare, in base alle condizioni iniziali, dei comportamenti caotici, ma questa è un'altra storia (vedi Fractals). È invece ancora possibile ottenere risultati esatti interessanti nel cosiddetto problema dei tre corpi ristretto, in cui la massa del terzo corpo è considerata trascurabile rispetto a quella dei primi due, ma anche questa è un'altra storia (vedi Lagrange).
Il primo principio o principio d'inerzia
Newton formulò la sua teoria meccanica attraverso tre principi fondamentali.
Il primo principio, detto principio d'inerzia, afferma che
"Corpus omne perseverare in statu suo quiescendi vel movendi uniformiter in directum, nisi quatenus a viribus impressis cogitur statum illum mutare."
Ogni corpo persevera in stato di quiete o in moto rettilineo e uniforme, a meno che forze esterne non lo forzino a cambiare questo stato. In termini matematici il fatto che un sistema isolato perseveri in stato di quiete o moto rettilineo e uniforme significa che le equazioni del moto debbono essere delle equazioni differenziali del secondo ordine. Le condizioni al contorno, in questo caso le posizioni e le velocità dei corpi, permettono di ottenere le traiettorie di questi ultimi.
Questo in pratica, nella realizzazione della nostra simulazione, significa che dobbiamo memorizzare per ogni corpo posizione e velocità, e che sarà l'accelerazione a dover essere calcolata istante per istante in base all'interazione dei corpi. Questo significa anche che le condizioni iniziali da specificare all'introduzione nella simulazione di un nuovo corpo saranno, oltre la massa del corpo, la posizione (specificata dalla posizione del mouse) e la velocità (impostabile nell'apposito riquadro).
In un'impostazione moderna della meccanica questo principio può essere in realtà ottenuto come teorema a partire dal principio di minima azione e dall'omogeneità e dall'isotropia dello spazio.
Il secondo principio
Il secondo principio recita
"Mutationem motus proportionalem esse vi motrici impressae, et fieri secundum lineam rectam qua vis illa imprimitur."
In pratica per ogni corpo di massa (inerziale) $m$ si applica l'equazione vettoriale $$ F = m \, a $$ per calcolarne l'accelerazione $a$ a partire dalla forza $F$. Ciò ci permette a sua volta di calcolare, grazie al primo principio e date le condizioni iniziali (posizione $r$ e velocità $v$), la traiettoria dei corpi, calcolando prima le velocità $$ v = v + a \, \Delta t $$ e poi le posizioni $$ r = r + v \, \Delta t $$ di ognuno di essi, dato il tempo $\Delta t$ trascorso tra un'iterazione e l'altra del programma.
Il colore della traiettoria dipende dal moto: un corpo più veloce tenderà al rosso (caldo), mentre un corpo più lento sarà più blu (freddo).
Il terzo principio o principio di azione e reazione
Il terzo e ultimo principio è chiamato principio di azione e reazione
"Actioni contrariam semper et aequalem esse reactionem: sive corporum duorum actiones in se mutuo semper esse aequales et in partes contrarias dirigi."
In un'impostazione moderna della meccanica questo principio è ottenuto come teorema a partire dalla conservazione della quantità di moto per un sistema isolato, a sua volta ottenuta dal principio di omogeneità dello spazio e dal principio di minima azione. Per un sistema isolato di corpi interagenti dalla conservazione della quantità di moto si ottiene infatti $$ \sum_i F_i = 0 $$ dove $F_i$ indica la forza agente sull'$i$-esimo corpo. Per una coppia di corpi questa equazione ci da $$ F_1 = -F_2 $$ che corrisponde proprio al principio di azione e reazione di Newton.
Il principio di azione e reazione ci dice che è sufficiente calcolare la forza dovuta all'interazione per ogni coppia di punti, e che entrambi subiranno una forza uguale e contraria. Possiamo quindi scrivere due cicli annidati, il primo con $i$ che va da $0$ a $n - 1$ e il secondo che va da $j = i + 1$ a $n$ (essendo $n$ il numero di corpi simulati), in modo da scorrere ogni coppia di punti una singola volta e assegnare la forza calcolata all'$i$-esimo corpo e la stessa forza con segno meno al $j$-esimo.
La legge di gravitazione universale
Vediamo ora come si calcola la forza risultante $F$ che agisce su ogni corpo simulato. Nei suoi "Principia" Newton enuncia la legge del campo gravitazionale e mostra come sia possibile ricavare da essa le leggi di Keplero sulle orbite ellittiche dei pianeti (per essere precisi, la seconda legge è in realtà valida in un campo centrale qualsiasi, anche senza la dipendenza secondo l'inverso del quadrato della distanza, ed è una diretta conseguenza della conservazione del momento angolare, a sua volta conseguenza dell'isotropia dello spazio).
Secondo la legge di gravitazione di Newton l'intensità della forza tra due corpi è data da $$ F = G \frac{m_1 m_2}{d^2} $$ dove $m_1$ e $m_2$ sono le rispettive masse, $d$ la distanza tra i corpi e $G$ la costante di gravitazione universale, il cui valore è approssimativamente $6,67 \times 10^{-11} \, \text{N} \frac{\text{m}^2}{\text{kg}^2}$.
La direzione della forza è uguale alla direzione che congiunge la coppia di corpi. Consideriamo l'$i$-esimo e il $j$-esimo corpo all'interno dei due cicli annidati descritti nel capitolo precedente. Ci basta dividere il vettore distanza $d_{i j}$, che non è altro che la differenza tra le posizioni dei due corpi $$ d_{i j} = r_i - r_j $$ per la rispettiva lunghezza $$ u_{i j} = \frac{d_{i j}}{\left| d_{i j} \right|} $$ ottenendo così il versore (vettore di modulo unitario) $u_{i j}$ nella giusta direzione. Tale versore andrà poi moltiplicato per l'intensità della forza calcolata per ottenere il vettore forza da utilizzare per l'$i$-esimo $$ F_i = u_{i j} G \frac{m_i m_j}{d_{i j}^2} $$ e per il $j$-esimo corpo $$ F_j = -F_i $$
Il sistema di riferimento del centro di massa
Con il pulsante destro del mouse è possibile passare rapidamente in modalità di inserimento di un nuovo corpo, in modo da poterlo fare rapidamente durante la creazione delle proprie "coreografie" gravitazionali. Con il pulsante sinistro del mouse invece, trascinando, è possibile spostare il sistema di riferimento, in modo da poter seguire l'eventuale moto complessivo del sistema creato.
Il programma include inoltre la possibilità di osservare, in un riquadro, il moto dei corpi creati rispetto al sistema di riferimento del centro di massa, quindi rispetto al sistema di riferimento in cui il baricentro dei corpi è in quiete al centro del riquadro.
Si possono quindi creare i vari sistemi orbitanti in differenti situazioni di moto complessivo, potendo poi sempre osservarli dal sistema di riferimento del centro di massa.
I limiti della meccanica classica
Da più di un secolo sappiamo ormai che le leggi della meccanica classica sono una sorta di comportamento emergente, delle leggi valide solo in media quando descriviamo sistemi su larga scala costituiti da un numero enorme di particelle interagenti. Per fare degli esempi pratici la meccanica classica fallisce nel tentativo di spiegare fenomeni fondamentali come la stabilità dell'atomo e la diffrazione delle particelle.
Se ti interessa approfondire questo aspetto della fisica moderna potresti dare un'occhiata al mio programma QED.exe, dedicato alla meccanica quantistica.