A l'occasion des Jeux Olympiques, calcul de la distance entre Montréal et Sydney

Les commandes ci-dessous (à recopier telles quelles dans Mathematica) permettent de calculer rapidement la distance (en kilomètres) entre deux points quelconques sur la terre.
En première approximation, on suppose que la terre est une sphère parfaite de rayon égal à 6366 km.

Un point quelconque de la terre est repéré par ses coordonnées géographiques : sa latitude (nord ou sud) et sa longitude (est ou ouest) mesurée par convention à partir du méridien de Greenwich. Les unités habituellement utilisées sont les degrés, minutes et secondes (un degré = 60 minutes, une minute = 60 secondes).
Par exemple, les coordonnées géographiques approximatives de Montréal sont :
45 degrés 31 minutes de latitude nord et 73 degrés 34 minutes de longitude ouest
celles de Sydney sont :
33 degrés 53 minutes de latitude sud et 151 degrés 10 minutes de longitude est.

Un point de la terre peut être décrit par la fonction vectorielle :
x[u_,v_]:= 6366 {Cos[Pi/180 u] Cos[Pi/180 v],Sin[Pi/180 u] Cos[Pi/180 v],Sin[Pi/180 v]}
Pour simplifier l'exposé, il est plus commode de faire les calculs pour la sphère unité (de rayon égal à 1) et de multplier ensuite le résultat par le rayon de la terre. On travaillera donc avec la fonction :
y[u_,v_]:= {Cos[Pi/180 u] Cos[Pi/180 v],Sin[Pi/180 u] Cos[Pi/180 v],Sin[Pi/180 v]}
La commande
ParametricPlot3D[y[u,v]//Evaluate,{u,-180,180},{v,-90,90}]
produit un dessin de cette sphère. Ici, u joue le rôle de la longitude, comptée négativement vers l'ouest, positivement vers l'est et v joue le rôle de la latitude, comptée négativement vers le sud, positivement vers le nord.
Ainsi, Montréal est donné par x[-73.57,45.52] et Sydney par x[151.17,-33.88].

Sachant que la distance entre deux points est réalisée par un arc de grand cercle passant par ces points, on trouve que pour deux points quelconques x[u1,v1], x[u2,v2] sur la terre, la distance est donnée par:

dist[u1_,v1_,u2_,v2_]:= Module[{norme,y, arc},
norme[vecteur_]:= N[Sqrt[vecteur . vecteur]];
y[u_,v_]:= {Cos[Pi/180 u] Cos[Pi/180 v],Sin[Pi/180 u] Cos[Pi/180 v],Sin[Pi/180 v]};
arc = ArcCos[y[u1,v1] . y[u2,v2]/(norme[y[u1,v1]] norme[y[u2,v2]])];
6366 arc]


Une fois introduite dans Mathematica, cette commande nous donne pour la distance entre Montréal et Sydney :
dist[-73.57,45.52,151.17,-33.88] ==> 16020.2 km.

Retour à ma page personnelle



©jmt 000905