[Python] grafico e distanza euclidea

Messaggioda crynow » 06/11/2020, 18:18

Codice:
import matplotlib.pyplot as plt
import numpy as np

def grafico(velocità_Aereo_A, velocità_Aereo_B, distanza_Aereo_A, distanza_Aereo_B) :
   
   
   
   
   
def main() :
    velocità_Aereo_A = 640      # km/h
    velocità_Aereo_B = 320      # km/h
    distanza_Aereo_A = 1600     # km
    distanza_Aereo_B = 820      # km
   
   
main()




Immagine


Buonasera, dovrei realizzare una funzione grafico che come scritto nell'immagine diagrammi la distanza D fra gli aeri in funzione del tempo.

So che la distanza euclidea si calcola cosi:

D = sqrt((distanza_Aereo_A)^2 + (distanza_Aereo_B)^2)

Ma non so proprio come scriverla la funzione, qualcuno potrebbe aiutarmi o darmi qualche spunto.
Grazie mille
crynow
Junior Member
Junior Member
 
Messaggio: 48 di 106
Iscritto il: 30/06/2019, 17:59

Re: [Python] grafico e distanza euclidea

Messaggioda feddy » 07/11/2020, 17:40

crynow ha scritto:So che la distanza euclidea si calcola cosi:

D = sqrt((distanza_Aereo_A)^2 + (distanza_Aereo_B)^2)

Ma non so proprio come scriverla la funzione, qualcuno potrebbe aiutarmi o darmi qualche spunto.


Una cosa così. Data la richiesta, dovresti avere affrontato a lezione l'argomento "funzioni".
Codice:
def eucl_dist(dA,dB):
    return np.sqrt(dA**2 + dB**2)
Avatar utente
feddy
Moderatore
Moderatore
 
Messaggio: 2745 di 5934
Iscritto il: 26/06/2016, 00:25
Località: SISSA

Re: [Python] grafico e distanza euclidea

Messaggioda apatriarca » 07/11/2020, 23:40

Abbiamo che
\[ d_A = d_{0, A} - v_A\,t \quad \text{e} \quad d_B = d_{0,B} - v_B\,t \]
da cui la distanza euclidea sarà uguale a
\[ \sqrt{d_A^2 + d_B^2} = \sqrt{ (d_{0, A} - v_A\,t)^2 + (d_{0,B} - v_B\,t)^2 } \]
Per il calcolo del minimo si può ignorare la radice quadrata (il minimo si troverà allo stesso valore di \(t\)) e risolvere la seguente
\[ \frac{d}{dt} \bigl((d_{0, A} - v_A\,t)^2 + (d_{0,B} - v_B\,t)^2\bigr) = - 2\,d_{0,A}\,v_A - 2\,d_{0,B}\,v_B + 2\,t\,(v_A^2 + v_B^2) = 0 \]
ottenendo
\[ t_{min} = = \frac{d_{0,A}\,v_A + d_{0, B}\,v_B}{v_A^2 + v_B^2} \]

Nel tuo caso hai \(t_{min} = 9045 \mathrm{s}\) se non ho sbagliato i calcoli. Sono \(2\mathrm{h}\;30\mathrm{m}\;45\mathrm{s}\). A questo punto puoi suddividere questo intervallo in un certo numero di tempi intermedi (usando la funzione linspace), valutare la formula della distanza euclidea a questi tempi e infine usare la funzione plot per visualizzare la funzione.

Un'alternativa è quella di scegliere un intervallo di campionamento e fermarsi quando il valore cresce per la prima volta. La funzione non ha infatti altri minimi locali. A quel punto devi solo visualizzare i valori calcolati.
apatriarca
Moderatore
Moderatore
 
Messaggio: 5509 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite