équations différentielles de la mécanique, avec scipy et

publicité
TP 11 : équations différentielles de la mécanique, avec scipy et pylab
N.B. Ce T.P. est (très) long, il s’étalera sur plusieurs séances. Pour la première séance, le 1) suffira peut-être ? Rappel : on fera from scipy import integrate pour disposer de integrate.odeint.
1
Vitesse de chute avec différents frottements fluides
1.1
Etude abstraite
On considère une chute le long de l’axe (Oz) avec un frottement fluide.
Le but est de comparer les tracés des fonctions t ↦ v(t) pour des frottements de la forme k.v,
k.v 2 et k.v 3 , ce qu’on notera k.v α pour α = 1, 2, 3.
La R.F.D. donne alors en orientant l’axe (Oz) vers le bas et en notant v(t) = z ′ (t) :
mv ′ (t) = −kv(t)α + mg,
ce qu’on simplifiera en :
v ′ (t) = −λv(t)α + g.
En fait, la constante λ va dépendre de α, on la note λα . On choisit d’ajuster les constantes λα
g
pour avoir toujours la même vitesse limite égale à 10m.s−1 . Cela revient à poser λα = α .
10
Travail à faire : à l’aide de integrate.odeint du module scilpy et du module pylab,
tracez le graphe de t ↦ v(t) pour la C.I. v(0) = 0 pour les trois valeurs de α proposées. On prendra
g = 9.81m.s−2 .
1.2
Le saut de Felix Baumgartner
En 2012, F. Baumgartner réalise une chute libre depuis 39000m d’altitude, et il dépasse le mur
du son au cours de sa chute. Ce paragraphe vise à déterminer la loi de vitesse et d’altitude au
cours de la chute, en tenant compte des paramètres physiques du vol : la densité de l’air (et donc
les frottements) et la gravité évoluent.
La force de frottement est modélisée par une loi quadratique (écoulement turbulent) sous la
forme :
1
F = − ρ(h)ACx v 2 ,
2
où A = 0, 45m2 est la surface apparente du bonhomme, Cx = 0, 8 le coefficient de trainée dans l’air,
ρ(h) est la densité de l’air à l’altitude h et v la vitesse.
L’action de la pesanteur est donnée par :
P (h) =
GM m
,
(R + h)2
où G = 6, 73 × 10−11 N.m2 .kg −2 est la constante de gravitation, M = 6 × 1024 kg la masse de la terre,
m = 80kg celle du bonhomme, R = 6, 371 × 106 m le rayon de la terre et h l’altitude.
a) Ecrire l’application du principe fondamental de la dynamique projeté sur un axe vertical
dv
orienté vers le bas comme une E.D. avec les variables
, v et h.
dt
b) On admet que l’évolution de la densité de l’air en fonction de l’altitude h est approchée par
la loi expérimentale suivante :
ρ(h) = 1, 433 × e−0,00013h en kg.m−3 .
Tracer la loi d’évolution de la densité en fonction de l’altitude : peut-elle être considérée
comme constante ?
1
c) L’E.D. du a), écrite en terme de la fonction h, est non-linéaire et du deuxième ordre. Pour
v
l’intégration numérique, on rappelle qu’on doit poser un vecteur X = ( ) et l’écrire sous
h
la forme X ′ = F (X, t), avant d’utiliser integrate.odeint de scipy. Avec les conventions
dh
(t) = −v(t).
d’orientation données plus haut l’altitude h est reliée à la vitesse par
dt
Intégrer cette E.D. avec la condition initiale v(0) = 0, h(0) = 39000 et tracer l’évolution de
v et h pour les 120 premières secondes.
d) Le fichier mesure_chute_Baumgartner_TVH.csv dans /home/profs/bondil/public contient
les données mesurées lors du saut par la centrale inertielle et le module GPS sur les 120
premières secondes de vol. Les trois colonnes du fichier sont le temps t, la vitesse v et
l’altitude h.
Lire le fichier de mesure avec Python et tracer la vitesse théorique superposée avec la
vitesse mesurée. Faire de même pour l’altitude.
Rappel : Pour récupérer les données, on utilisera :
fic=open("mesure_chute_Baumgartner_TVH.csv","r")
text=fic.readlines()
fic.close()
Ensuite les données sont sous forme d’une liste de chaı̂ne de caractères qu’il faut encore
convertir pour les tracer.
On pourra utiliser la méthode split sur les chaı̂nes de caractères : pour comprendre à quoi
ça sert, essayer :
Ligne=text[0]
print(Ligne)
Ligne=Ligne.split(’,’)
print(Ligne)
2
Etude d’un tir balistique avec différents frottements fluides
Un canon tire un obus avec une vitesse de norme v0 et un angle α. Le vecteur vitesse initiale
est donc de la forme v⃗(0) = v0 (cos(α)e⃗x + sin(α)e⃗z ) (axe e⃗z vertical vers le haut).
Durant sa trajectoire l’obus n’est soumis qu’à son poids et à une force de frottement fluide : on
va considérer différents modèles pour ce frottement.
2.1
Le cas où il n’y a pas de frottement du tout : les paraboles et la
parabole de sécurité
ÐÐ→
d2 OM
= m⃗
g s’intègre directement.
dt2
On note v⃗(0) = v0 (cos(α)e⃗x + sin(α)e⃗z ) et bien sûr : g⃗ = −g e⃗z (axe e⃗z vertical vers le haut).
⎧
⎪
⎪x′′ (t) = 0,
En projection sur les axes, la R.F.D. équivaut à ⎨ ′′
.
⎪z (t) = −g
⎪
⎩
On prend M (0) = (0, 0) = O dans le plan (O, e⃗x , e⃗z ). On prend g = 9.81m.s−2 .
La relation fondamentale de la dynamique donne m
a) Donnez l’expression explicite des fonctions t ↦ x(t) et t ↦ z(t) avec ces C.I.
b) Tracer une famille de courbes correspondant aux différentes trajectoires obtenues avec un
angle de tir fixé α = 30o , en faisant varier la norme v0 entre 1000 et 1500 m.s−1 avec un pas
de 100.
c) On fixe au contraire maintenant v0 = 1000m.s−1 . Tracer une famille de courbes Cα correspondant aux trajectoires obtenues pour différents angles de tir α.
Un problème déjà étudié par E. Torricelli (De motu projectorum 1644) et repris par J. Bernoulli
que l’a résolu à la fin du XVIIème siècle, est de déterminer la courbe de sécurité pour cette dernière
famille de paraboles : celle qui nous mettrait à l’abris des tirs.
2
d) Idée : raisonner en sens inverse.
(i) Justifier d’abord qu’une trajectoire Cα peut aussi s’écrire comme le graphe Γa d’une
fonction :
g
z = − 2 x2 (1 + a2 ) + ax; en ayant posé a = tan(α),
2v0
le nombre a = tan(α) a un sens clair : c’est la pente du vecteur v⃗(0).
(ii) Prenons un point M = (x0 , z0 ) du plan. La C.N.S. sur (x0 , z0 ) pour qu’il existe un a tel
que (x0 , z0 ) soit sur une courbe Γa est que le discriminant ∆ de l’équation du second
degré :
g
g
a2 (− 2 )x20 + ax0 − 2 x20 − z0 = 0,
2v0
2v0
vérifie ∆ ≥ 0.
Les points (x0 , z0 ) tels que ∆ = 0 correspondent à la courbe de sécurité cherchée (bord
du domaine où ∆ ≥ 0). Les formules se simplifient : on peut faire tracer la courbe de
sécurité à pylab.
2.2
Le cas d’un frottement proportionnel au vecteur vitesse
C’est encore un cas que l’on sait résoudre de manière ≪ exacte ≫ :
d⃗
v
= m⃗
g − k⃗
v qu’on réécrit :
La relation fondamentale de la dynamique donne m
dt
d⃗
v v⃗
+ = g⃗,
dt τ
où τ est donc homogène à un temps.
Données numériques : g = 9.81m.s−2 et k = 0.1N.s.m−1 et m = 140kg.
On note v⃗(0) = v0 (cos(α)e⃗x + sin(α)e⃗z ) et bien sûr : g⃗ = −g e⃗z (axe e⃗z vertical vers le haut).
Alors l’équation différentielle projetée sur les deux axes donne :
dvx vx
+
=0
dt
τ
(1)
et
dvz vz
+
= −g
dt
τ
(2)
On sait bien sûr résoudre (1) et (2) et en déduire x(t) et z(t) par intégration.
En effet (1) ⇔ vx (t) = vx (0)e−t/τ et (2) ⇔ vz (t) = (vz (0) + gτ )e−t/τ − gτ .
De même qu’au § 2.1 :
a) Tracer les trajectoires correspondants d’abord à α = 30o et différentes valeurs de v0 de 1000
à 1500m.s−1 avec un pas de 100m.s−1 . Les trajectoires ont-elles une allure différente des
trajectoires paraboliques du paragraphe précédent ?
b) Reprendre la question du a) en prenant un coefficient τ = 1. Voit-on mieux la différence avec
les trajectoires paraboliques ?
2.3
Là où on a besoin de ode : frottements fluides plus élevés
On suppose maintenant que la force de frottement est proportionnelle à v 2 (on tire à partir
d’un sous-marin !)
d⃗
v
La R.F.D. s’écrit maintenant : m
= m⃗
g − kv.⃗
v où v = ∣∣⃗
v ∣∣, qu’on réécrit :
dt
d⃗
v
+ λv⃗
v = g⃗,
dt
Les équations différentielles deviennent beaucoup plus compliquées :
√
⎧
⎪
⎪x′′ (t) + λ√ x′ (t)2 + z ′ (t)2 x′ (t) = 0,
(S) ⎨ ′′
⎪
z (t) + λ x′ (t)2 + z ′ (t)2 z ′ (t) = −g.
⎪
⎩
3
On peut néanmoins les résoudre numériquement avec scipy.
Pour cela, on crée un vecteur X(t) = [x(t), z(t), x′ (t), z ′ (t)] ∈ R4 .
On définit une fonction (X, t) ∈ R4 × R ↦ F (X, t) ∈ R4 (qui en fait ne dépend pas de t ici mais,
cf. cours, c’est une contrainte de scipy), telle que X ′ (t) = F (X(t), t).
a) Déterminer la fonction F en question.
b) Résoudre alors le système (S) ci-dessus avec integrate.odeint.
c) En déduire le tracé de la courbe paramétrée t ↦ (x(t), z(t)) et tracer sur la même figure la
solution de l’équation avec frottement fluide du § 2.2 précédent avec la constante λ = 1 et
les mêmes C.I. v0 = 1000 et α = π/6.
3
Oscillateurs
3.1
Comparaison pendule simple, Oscillateur harmonique
Pour l’équation du pendule simple θ′′ (t) + ω02 sin(θ(t)) = 0 calculer les solutions pour la C.I.
θ(0) = 1, θ′ (0) = 0 (pendule lâché sans vitesse initiale).
g
On sait que ω02 = . On prend g = 9.81m.s−2 et l = 0.5m.
l
Tracer la courbe solution, et sur un même dessin, la courbe solution de l’O.H. avec la même
C.I. pour un temps de 0 à 10 s.
Moralité : L’amplitude θ(0) = 1 radians (proche de 60 degrés) ne peut pas être considérée
bien longtemps comme un petit mouvement ! Ll’usage en physique est de considérer que les amplitudes initiales de moins de 15 degrés donnent des ≪ petits mouvements ≫) Réessayer avec une telle
amplitude.
3.2
3.2.1
Portrait de phase :
Pour l’oscillateur harmonique : exemple du cours
Question : Comment obtenir en pylab un tracé simultané pour différentes conditions initiales ?
On pourra par exemple garder une vitesse initiale nulle et faire varier l’amplitude initiale.
3.2.2
Pour le pendule simple
A l’aide de ce qui précède, tracer aussi le portrait de phase du pendule simple avec les données
numériques ci-dessus. On choisira comme C.I. cette fois θ(0) = 0 et on faire varier θ′ (0) entre 1
et 13m.s−1 : voir sur le graphique à partir de quelle valeur de θ′ (0) quitte-t-on le comportement
oscillant ? Comment retrouver cette valeur par un calcul ?
3.2.3
Pour le pendule simple amorti
On rajoute à l’E.D. un terme en aθ′ (t). On prend par exemple a = 1. Tracer une nouvelle fois
le portrait de phase avec les mêmes C.I. au 3.2.2
4
Téléchargement