Leggi orarie di un punto materiale immerso in un campo vettoriale
Ciao a tutti, premetto che sono un programmatore software e nonostante abbia basi di fisica, matematica e algebra lineare sto riscontrando dei problemi nell'effettuare alcuni calcoli che andrò a spiegarvi meglio.
Inizio con il dire che ciò mi serve per lo sviluppo di un software, lo sto programmando per divertimento ma potrebbe venire fuori qualcosa di carino.
Il programma:
Il software mette a disposizione un'area di lavoro in cui è possibile inserire dei punti materiali (per ora, poi passo a qualcosa di più complesso magari) con la possibilità di impostare una massa e eventualmente una velocità iniziale (la velocità è un vettore pertanto ha una sua anomalia e di conseguenza componenti Vx e Vy).
Dal punto materiale inserito, il programma calcola automaticamente l'attrazione gravitazionale che il punto stesso genererebbe in base alla sua massa (ovviamente se la massa è piccola l'attrazione anche se calcolata ugualmente non influisce poiché è davvero minima, ovviamente)
È inoltre possibile inserire un'ulteriore campo gravitazionale (che è presente in ogni punto dell'area di lavoro) tramite l'inserimento delle componenti vettoriali del campo (ad esempio posso inserire $Gx = 2*log(x)$ e $Gy = -y$ per creare un campo vettoriale. Ora qui magari sto sbagliando e fisicamente non ha senso dire che un campo gravitazionale sia un campo vettoriale che varia in funzione di x e y quindi magari questa possibilità posso rimuoverla) Prendendo un caso più semplice è possibile aggiungere semplicemente Gx = 0 e Gy = -9.81 (che sono le componenti del vettore accelerazione di gravità).
ESEMPIO:
Mettiamo caso di avere queste condizioni iniziali:
Punto materiale posto in posizione $X = 10 m$ e $Y = 10 m$ di massa$ M = 1 kg$
Velocità iniziale $V = 12 m/s$
E campo gravitazionale con componenti $Gx = 0$ e $Gy = -9.81 m/s^2$
Quello che ne risulta è il moto parabolico, che il programma calcola bene, infatti il risultato è:

La linee verdi rappresentano vettorialmente quanto vale il campo nei punti dello spazio in cui sono applicate.
La curva rossa è la traiettoria del punto materiale.
Ora il problema arriva quando io aggiungo un punto materiale con una massa ad esempio di $9*10^12 Kg$ che genera un campo gravitazionale non trascurabile, il programma calcola un campo G totale sommando tutte le componenti Gx e tutte le componenti Gy di ogni campo presente nell'area di lavoro, e fin qui credo sia tutto giusto. il campo che viene rappresentato è verosimile, quindi do per assodato che il campo totale calcolato sia calcolato correttamente.
Ora poniamo il caso che io inserisca due punti materiali, uno di 1 Kg (Punto P) e uno con la suddetta massa ( $ 9*10^12 Kg $) (Punto M), il programma come già spiegato calcolerà il campo gravitazionale totale presente (che in questo caso sarà dato dal solo punto M dato che P non è rilevante numericamente). Se io aggiungo una velocità iniziale al punto P in modo che passi nelle vicinanze del punto M quello che ne risulta è questo:

La traiettoria in rosso è quella calcolata dal programma che è palesemente errata perché il punto P torna a viaggiare con la stessa velocità e direzione di quando è partito mentre invece dovrebbe seguire la traiettoria che ho disegnato in blu con un altra velocità e di conseguenza un'altra direzione.
Come calcola la traiettoria il programma? il modo in cui calcola le traiettorie il programma è "abbastanza" semplice:
1) Ogni (circa) 10 millesimi di secondo il programma ricalcola tutto il campo totale presente nell'area di lavoro perché se il/i punto/i che generano campi gravitazionali non trascurabili cambiano posizione allora cambia la posizione del/i centro/i di gravità e quindi le componenti del campo totale vanno ricalcolate.
2) Per ogni punto materiale presente nell'area di lavoro viene calcolato quanto vale la componente Gx nella posizione (x, y) e Gy nella posizione (x, y) del punto materiale preso in considerazione (Nota bene: vengono ignorati gli apporti dati dalle componenti dal campo gravitazionale generato dalla massa del punto materiale preso in considerazione su se stesso. Ovviamente non avrebbe senso, inoltre dividerei per zero) ottenendo Ax e Ay che sono le componenti calcolate appunto in quella posizione, cioè quanto vale la gravità in quel punto dello spazio.
3) ottenute queste componenti del campo utilizzo le equazioni parametriche per calcolare la nuova posizione del punto materiale:
$ x(t) = X0 + Vx * t + 1/2*Ax*t^2 $
$ y(t) = Y0 + Vy * t + 1/2*Ay*t^2 $
Dove:
X0 e Y0 rappresentano le posizioni iniziali del punto materiale preso in considerazione.
Vx e Vy rappresentano le componenti di un eventuale vettore Velocità iniziale dato al punto materiale.
Ax e Ay come già detto, rappresentano quanto vale il campo gravitazionale nella posizione attuale del punto materiale.
t rappresenta il tempo trascorso in secondi (ricordo che il software ricalcola il tutto ogni 10 millisecondi circa, ovviamente divido tutto per 1000 per ottenere il tempo totale trascorso in secondi)
Allora, nel caso del primo esempio avevamo un campo costante con componenti Gx = 0 e Gy = -9.81 e quindi di conseguenza Ax = 0 e Ay = -9.81 che non variavano a seconda della posizione nello spazio pertanto il tutto si riduceva a:
$ x(t) = X0 + Vx * t $
$ y(t) = Y0 + Vy * t + 1/2*Ay*t^2 $
Che sono le equazioni parametriche utilizzate nel moto parabolico.
Nel secondo esempio invece si ha un calcolo errato perché la massa viene effettivamente deviata dal campo gravitazionale ma una volta che riesce a sfuggirne allora le componenti Ax e Ay del campo si portano nuovamente a 0 (perchè ormai il punto materiale è abbastanza lontano dal campo generato dall'altro punto materiale) e il calcolo si riduce poi a:
$ x(t) = X0 + Vx * t $
$ y(t) = Y0 + Vy * t $
da queste equazioni si può notare che viene quindi utilizzato quello che è il vettore velocità iniziale ed ecco perché il punto materiale ritorna a seguire la direzione e la velocità iniziali...
Ora ciò che ho pensato è che mi servirebbe saper quanto vale il vettore velocità istante per istante e sostituire le componenti di questo vettore alle componenti del vettore iniziale volta per volta. So che la velocità si calcola facendo $ V(t) = V0 + A*t $ e quindi in termini di componenti:
$ Vx(t) = Vx0 + Ax*t $
$ Vy(t) = Vy0 + Ay*t $
e ho pensato di sostituirle poi volta per volta nelle equazioni parametriche mostrate sopra... ma ho notato che cosi facendo avrei in pratica fatto quanto segue:
$ x(t) = X0 + (Vx0 + Ax*t) + 1/2*Ax*t^2 $
$ y(t) = Y0 + (Vy0 + Ay*t) + 1/2*Ay*t^2 $
che comprendono due volte la componente di accelerazione e quindi non ha senso perciò le ho scartate.
Ora dopo tutta la spiegazione infinita che spero sia stata chiara ahahah, vorrei sapere SE usare queste equazioni:
$ x(t) = X0 + Vx * t + 1/2*Ax*t^2 $
$ y(t) = Y0 + Vy * t + 1/2*Ay*t^2 $
oppure queste
$ x(t) = X0 + (Vx0 + Ax*t) + 1/2*Ax*t^2 $
$ y(t) = Y0 + (Vy0 + Ay*t) + 1/2*Ay*t^2 $
in modo generalizzato ha senso (sapendo che, come spiegato Ax e Ay sono componenti di campo variabili in base alla posizione nello spazio X, Y in cui sono calcolate). O mi sono inventato robe? se non è giusto il mio ragionamento, ci sono allora delle formule possibilmente che includono il parametro tempo al loro interno che posso utilizzare in modo generalizzato tali da ridursi o semplificarsi automaticamente in base al fatto che le componenti divengono zero in casi specifici (come nel caso del moto parabolico dove Ax = 0 sempre)?
Chiedo scusa se ho detto delle cavolate ma ripeto ho basi non troppo solide di analisi, fisica e algebra lineare perciò ho bisogno dell'aiuto di qualcuno di più esperto.
P.S. ho cercato nel forum se esistesse già una domanda riguardante questo problema ma non ho trovato nulla che facesse al caso mio. Inoltre spero non sia off topic o nella sezione sbagliata. Cerco davvero qualcuno che possa darmi una dritta e magari mostrarmi anche il procedimento per arrivare ad una eventuale generalizzazione delle equazioni per il calcolo della traiettoria, mi piace imparare da queste situazioni!
Ringrazio tutti per la pazienza e per l'aiuto.
Inizio con il dire che ciò mi serve per lo sviluppo di un software, lo sto programmando per divertimento ma potrebbe venire fuori qualcosa di carino.
Il programma:
Il software mette a disposizione un'area di lavoro in cui è possibile inserire dei punti materiali (per ora, poi passo a qualcosa di più complesso magari) con la possibilità di impostare una massa e eventualmente una velocità iniziale (la velocità è un vettore pertanto ha una sua anomalia e di conseguenza componenti Vx e Vy).
Dal punto materiale inserito, il programma calcola automaticamente l'attrazione gravitazionale che il punto stesso genererebbe in base alla sua massa (ovviamente se la massa è piccola l'attrazione anche se calcolata ugualmente non influisce poiché è davvero minima, ovviamente)
È inoltre possibile inserire un'ulteriore campo gravitazionale (che è presente in ogni punto dell'area di lavoro) tramite l'inserimento delle componenti vettoriali del campo (ad esempio posso inserire $Gx = 2*log(x)$ e $Gy = -y$ per creare un campo vettoriale. Ora qui magari sto sbagliando e fisicamente non ha senso dire che un campo gravitazionale sia un campo vettoriale che varia in funzione di x e y quindi magari questa possibilità posso rimuoverla) Prendendo un caso più semplice è possibile aggiungere semplicemente Gx = 0 e Gy = -9.81 (che sono le componenti del vettore accelerazione di gravità).
ESEMPIO:
Mettiamo caso di avere queste condizioni iniziali:
Punto materiale posto in posizione $X = 10 m$ e $Y = 10 m$ di massa$ M = 1 kg$
Velocità iniziale $V = 12 m/s$
E campo gravitazionale con componenti $Gx = 0$ e $Gy = -9.81 m/s^2$
Quello che ne risulta è il moto parabolico, che il programma calcola bene, infatti il risultato è:

La linee verdi rappresentano vettorialmente quanto vale il campo nei punti dello spazio in cui sono applicate.
La curva rossa è la traiettoria del punto materiale.
Ora il problema arriva quando io aggiungo un punto materiale con una massa ad esempio di $9*10^12 Kg$ che genera un campo gravitazionale non trascurabile, il programma calcola un campo G totale sommando tutte le componenti Gx e tutte le componenti Gy di ogni campo presente nell'area di lavoro, e fin qui credo sia tutto giusto. il campo che viene rappresentato è verosimile, quindi do per assodato che il campo totale calcolato sia calcolato correttamente.
Ora poniamo il caso che io inserisca due punti materiali, uno di 1 Kg (Punto P) e uno con la suddetta massa ( $ 9*10^12 Kg $) (Punto M), il programma come già spiegato calcolerà il campo gravitazionale totale presente (che in questo caso sarà dato dal solo punto M dato che P non è rilevante numericamente). Se io aggiungo una velocità iniziale al punto P in modo che passi nelle vicinanze del punto M quello che ne risulta è questo:

La traiettoria in rosso è quella calcolata dal programma che è palesemente errata perché il punto P torna a viaggiare con la stessa velocità e direzione di quando è partito mentre invece dovrebbe seguire la traiettoria che ho disegnato in blu con un altra velocità e di conseguenza un'altra direzione.
Come calcola la traiettoria il programma? il modo in cui calcola le traiettorie il programma è "abbastanza" semplice:
1) Ogni (circa) 10 millesimi di secondo il programma ricalcola tutto il campo totale presente nell'area di lavoro perché se il/i punto/i che generano campi gravitazionali non trascurabili cambiano posizione allora cambia la posizione del/i centro/i di gravità e quindi le componenti del campo totale vanno ricalcolate.
2) Per ogni punto materiale presente nell'area di lavoro viene calcolato quanto vale la componente Gx nella posizione (x, y) e Gy nella posizione (x, y) del punto materiale preso in considerazione (Nota bene: vengono ignorati gli apporti dati dalle componenti dal campo gravitazionale generato dalla massa del punto materiale preso in considerazione su se stesso. Ovviamente non avrebbe senso, inoltre dividerei per zero) ottenendo Ax e Ay che sono le componenti calcolate appunto in quella posizione, cioè quanto vale la gravità in quel punto dello spazio.
3) ottenute queste componenti del campo utilizzo le equazioni parametriche per calcolare la nuova posizione del punto materiale:
$ x(t) = X0 + Vx * t + 1/2*Ax*t^2 $
$ y(t) = Y0 + Vy * t + 1/2*Ay*t^2 $
Dove:
X0 e Y0 rappresentano le posizioni iniziali del punto materiale preso in considerazione.
Vx e Vy rappresentano le componenti di un eventuale vettore Velocità iniziale dato al punto materiale.
Ax e Ay come già detto, rappresentano quanto vale il campo gravitazionale nella posizione attuale del punto materiale.
t rappresenta il tempo trascorso in secondi (ricordo che il software ricalcola il tutto ogni 10 millisecondi circa, ovviamente divido tutto per 1000 per ottenere il tempo totale trascorso in secondi)
Allora, nel caso del primo esempio avevamo un campo costante con componenti Gx = 0 e Gy = -9.81 e quindi di conseguenza Ax = 0 e Ay = -9.81 che non variavano a seconda della posizione nello spazio pertanto il tutto si riduceva a:
$ x(t) = X0 + Vx * t $
$ y(t) = Y0 + Vy * t + 1/2*Ay*t^2 $
Che sono le equazioni parametriche utilizzate nel moto parabolico.
Nel secondo esempio invece si ha un calcolo errato perché la massa viene effettivamente deviata dal campo gravitazionale ma una volta che riesce a sfuggirne allora le componenti Ax e Ay del campo si portano nuovamente a 0 (perchè ormai il punto materiale è abbastanza lontano dal campo generato dall'altro punto materiale) e il calcolo si riduce poi a:
$ x(t) = X0 + Vx * t $
$ y(t) = Y0 + Vy * t $
da queste equazioni si può notare che viene quindi utilizzato quello che è il vettore velocità iniziale ed ecco perché il punto materiale ritorna a seguire la direzione e la velocità iniziali...
Ora ciò che ho pensato è che mi servirebbe saper quanto vale il vettore velocità istante per istante e sostituire le componenti di questo vettore alle componenti del vettore iniziale volta per volta. So che la velocità si calcola facendo $ V(t) = V0 + A*t $ e quindi in termini di componenti:
$ Vx(t) = Vx0 + Ax*t $
$ Vy(t) = Vy0 + Ay*t $
e ho pensato di sostituirle poi volta per volta nelle equazioni parametriche mostrate sopra... ma ho notato che cosi facendo avrei in pratica fatto quanto segue:
$ x(t) = X0 + (Vx0 + Ax*t) + 1/2*Ax*t^2 $
$ y(t) = Y0 + (Vy0 + Ay*t) + 1/2*Ay*t^2 $
che comprendono due volte la componente di accelerazione e quindi non ha senso perciò le ho scartate.
Ora dopo tutta la spiegazione infinita che spero sia stata chiara ahahah, vorrei sapere SE usare queste equazioni:
$ x(t) = X0 + Vx * t + 1/2*Ax*t^2 $
$ y(t) = Y0 + Vy * t + 1/2*Ay*t^2 $
oppure queste
$ x(t) = X0 + (Vx0 + Ax*t) + 1/2*Ax*t^2 $
$ y(t) = Y0 + (Vy0 + Ay*t) + 1/2*Ay*t^2 $
in modo generalizzato ha senso (sapendo che, come spiegato Ax e Ay sono componenti di campo variabili in base alla posizione nello spazio X, Y in cui sono calcolate). O mi sono inventato robe? se non è giusto il mio ragionamento, ci sono allora delle formule possibilmente che includono il parametro tempo al loro interno che posso utilizzare in modo generalizzato tali da ridursi o semplificarsi automaticamente in base al fatto che le componenti divengono zero in casi specifici (come nel caso del moto parabolico dove Ax = 0 sempre)?
Chiedo scusa se ho detto delle cavolate ma ripeto ho basi non troppo solide di analisi, fisica e algebra lineare perciò ho bisogno dell'aiuto di qualcuno di più esperto.
P.S. ho cercato nel forum se esistesse già una domanda riguardante questo problema ma non ho trovato nulla che facesse al caso mio. Inoltre spero non sia off topic o nella sezione sbagliata. Cerco davvero qualcuno che possa darmi una dritta e magari mostrarmi anche il procedimento per arrivare ad una eventuale generalizzazione delle equazioni per il calcolo della traiettoria, mi piace imparare da queste situazioni!
Ringrazio tutti per la pazienza e per l'aiuto.
Risposte
"Esteban856":
3) ottenute queste componenti del campo utilizzo le equazioni parametriche per calcolare la nuova posizione del punto materiale:
$ x(t) = X0 + Vx * t + 1/2*Ax*t^2 $
$ y(t) = Y0 + Vy * t + 1/2*Ay*t^2 $
Dove:
X0 e Y0 rappresentano le posizioni iniziali del punto materiale preso in considerazione.
Vx e Vy rappresentano le componenti di un eventuale vettore Velocità iniziale dato al punto materiale.
Ax e Ay come già detto, rappresentano quanto vale il campo gravitazionale nella posizione attuale del punto materiale.
t rappresenta il tempo trascorso in secondi (ricordo che il software ricalcola il tutto ogni 10 millisecondi circa, ovviamente divido tutto per 1000 per ottenere il tempo totale trascorso in secondi)
Direi di no. Quella è la legge oraria di un moto uniformemente accelerato, che non è il tuo caso.
Direi che, data una certa posizione al tempo $t$ , devi trovare la nuova posizione al tempo $t + Delta t$ semplicemente con $x(t+Delta t) = x(t) + v(t)*Deltat$ (e lo stesso per $y$).
E insieme a questo devi far variare la velocità: $v_x(t+Deltat) = v_x(t) + a_x(t)*Deltat$ (e lo stesso per $y$).
"mgrau":
Direi di no. Quella è la legge oraria di un moto uniformemente accelerato, che non è il tuo caso.
Direi che, data una certa posizione al tempo $ t $ , devi trovare la nuova posizione al tempo $ t + Delta t $ semplicemente con $ x(t+Delta t) = x(t) + v(t)*Deltat $ (e lo stesso per $ y $).
E insieme a questo devi far variare la velocità: $ v_x(t+Deltat) = v_x(t) + a_x(t)*Deltat $ (e lo stesso per $ y $).
Ciao, sei un grande! mi hai letteralmente sbloccato. E io sono stato uno stupido a non pensarci, sapevo che il mio ragionamento era a livello logico e matematico errato, perché effettivamente la posizione va calcolata istante per istante e quindi in $t + \Deltat$ e non in $t$ soltanto.
ti mostro il nuovo risultato:

Credo sia verosimile, ho provato anche nel caso base del moto parabolico e ha funzionato perfettamente.
Che dire ti ringrazio infinitamente!!!
Sì, dovrebbe essere una iperbole.
Ora però dovresti divertirti a trovare il moto anche dell'altra massa, e poi magari aggiungerne una terza... vedresti cose interessanti
Ora però dovresti divertirti a trovare il moto anche dell'altra massa, e poi magari aggiungerne una terza... vedresti cose interessanti

"mgrau":
Sì, dovrebbe essere una iperbole.
Ora però dovresti divertirti a trovare il moto anche dell'altra massa, e poi magari aggiungerne una terza... vedresti cose interessanti
In realtà nell'algoritmo per ogni nuovo istante di tempo, il calcolo che ho spiegato lo fa per ogni massa presente all'interno dell'area di lavoro, infatti se i due punti materiali hanno masse che generano accelerazioni gravitazionali non trascurabili, durante la simulazione una influenza l'altra!
Comunque si, aggiungerò altra roba, magari faccio un po' di debug ancora per queste masse, provo vari scenari.
Grazie per i consigli e per l'aiuto!!