Poids/Scilab
2778188
29483944
2008-05-11T23:05:58Z
Jejecam
304402
cat.
Le programme [[Scilab]] suivant a été utilisé pour l'article ''[[Poids]]'', pour déterminer les maximum et minimum de ''g'' et l'angle maximum de ''g'' avec la verticale. Il est donné à des fins de contrôle (rectification d'une possible erreur).
On considère ici un modèle très simplifié de la Terre :
* Terre sphérique de rayon constant ''R'' = {{unité|6380|km}} ;
* vitesse de rotation de 2π radians par un jour, un jour faisant {{unité|24|h}} de {{unité|3600|s}} chacune ;
* l'axe ''y'' est l'axe de rotation de la Terre, l'axe ''x'' est dans le plan de l'équateur.
<source lang="matlab">
// ********** Constantes
R = 6.38e6; // rayon de la Terre en m
omega = 2*%pi/(24*3600); //vitesse de rotation de la Terre
M = 5.98e24; // masse de la Terre en kg
G = 6.67428e-11; // constante gravitationnelle en m3kg-1s-2
g1 = G*M/R^2; // partie constante de l'accélération de la gravité
// ********** Fonctions
// rayon du point par rapport à l'axe de rotation
// à la latitude a
function [y] = rayon(a)
y = R*cos(a);
endfunction
// accélération centrifuge
// à la latitude a
function [y] = accelerationcentrifuge(a)
y = omega^2*rayon(a);
endfunction
// ********** Programme principal
alpha=0:0.0001:%pi/2; // latitude de 0 à 90°
// initialisation des valeurs extrêmes
anglemax=0;
latitudeanglemax=0;
gmin=10;
latitudegmin=0;
gmax=9;
latitudegmax=0;
for latitude=alpha
g2=accelerationcentrifuge(latitude);
g1x=-g1*cos(latitude); // accélération selon x due à l'attraction terrestre seule
gx=g1x+g2;
gy=-g1*sin(latitude);
norme=sqrt(gx^2 + gy^2); // accélération de la gravité totale
angle=acos((gx*g1x + gy^2)/(g1*norme)); // angle entre l'accélération de la gravité
// et la verticale (à partir du produit scalaire)
// détermination des extrema
if angle>anglemax then
anglemax=angle; // écart maximum à l'axe point-centre de la Terre
latitudeanglemax=latitude; // latitude où l'on a cet angle maximal
end
if norme>gmax then
gmax=norme; // norme maximale de g
latitudegmax=latitude; // latitude où l'on a cette norme maximale
end
if norme<gmin then
gmin=norme;// norme minimale de g
latitudegmin=latitude; // latitude où l'on a cette norme minimale
end
end
// affichage des résultats
gmax
latitudegmax*180/%pi
gmin
latitudegmin*180/%pi
anglemax
latitudeanglemax*180/%pi
</source>
Les résultats obtenus sont les suivants :
gmax =
9.8053759
ans =
89.994481
gmin =
9.7716353
ans =
0.
anglemax =
0.0017235
ans =
44.948539
On remarque que la gravité maximale est inférieure à la gravité mesurée aux pôles ({{unité|9.83|m⋅s<sup>-2</sup>}}), probablement en raison de l'hypothèse de rayon constant.
[[Catégorie:Logiciel de statistiques]]
[[Catégorie:Logiciel scientifique libre]]
[[Catégorie:Logiciel de calcul numérique]]
[[Catégorie:Physique]]