Rapport de projet d`informatique L3 : Chaîne de dominos
Transcription
Rapport de projet d`informatique L3 : Chaîne de dominos
Rapport de projet d’informatique L3 : Chaîne de dominos Sébastien LHERMINIER, Thibaud LOUVET Semestre 1 Résumé La chute d’une chaîne de dominos est un exemple facilement observable d’un phénomène de propagation. Grâce en particulier aux structures de calcul itératif, l’outil informatique, outre qu’il permette la résolution d’équations non linéaires, est bien adapté à ce type de problème, où l’on suit les effets d’une perturbation se propageant de proche en proche : le mouvement d’un domino est directement déterminé par celui de ses deux plus proches voisins (lorsqu’il y a contact). 1 Définition du problème On étudie une chaîne de dominos qui chutent les uns sur les autres en cascade comme montré sur la figure 1. Le choc entre les dominos est modélisé par l’action d’un ressort linéaire de raideur k et de longueur à vide l0 . De plus, on considère comme non nul le frottement dû à l’air (on pourrait aussi imaginer que les dominos sont plongés dans un fluide visqueux tel que de l’eau et pas dans l’air). Les dominos sont modélisés par des tiges d’épaisseur nulle et de hauteur h, de masse m. On va tout d’abord chercher à visualiser le mouvement de chaque domino donné par son angle avec la verticale. On étudiera ensuite la mise en place ou non d’un régime permanent en fonction des différents paramètres du problème comme l’espacement ∆, le coefficient de frottement visqueux γ ou encore la hauteur h. 2 Analyse du sujet La première étape de la résolution numérique du sujet est d’en faire une analyse physique. Les notations introduites concernant chacun des dominos sont décrites par la figure 2. 2.1 Mise en équation Le principe du programme final est d’appliquer le théorème du moment cinétique à chaque domino afin de déterminer sa position de proche en proche : J X − → d2 αn = Γ(Fn ) dt2 où J est le moment d’inertie d’un domino par rapport à l’axe de sa base : Z h mh2 m 2 u du = J= h 3 0 Figure 1 – Schéma du système étudié 1 (1) Figure 2 – Définition des notations On pourra utiliser l’expression de l’accélération dans un développement limité si l’intervalle de temps est suffisament petit : dαn dt2 d2 αn αn (t + dt) = αn (t) + dt (t) + (t) (2) dt 2 dt2 Les forces appliquées à chaque domino sont : leur poids, le frottement visqueux avec l’air (ou le fluide dans lequel il est plongé) et les forces exercées par les dominos qui l’entourent par l’intermédiaire des ressorts. Les moments associés sont donc : Z h m mgh − = Γ→ g sin αn u du = sin αn (3) P h 2 0 dαn (4) dt Γressortn = −h.k(l0 − ln ) (5) p π 2 2 (6) Γressortn−1 = yn + dn .k(l0 − ln−1 ). sin ( − (αn − αn−1 )) 2 Un problème apparaît dans le développement limité : en effet, on ne connaît pas la dérivée première de αn . Pour cela, écrivons l’équation (2) en t − dt : Γf rottement = −γ αn (t − dt) = αn (t) − dt dαn dt2 d2 αn (t) + (t) dt 2 dt2 (7) En effectuant la différence (2) − (7), on obtient : αn (t + dt) − αn (t − dt) dαn (t) = dt 2dt 2.2 (8) Relations géométriques Écrivons les relations sur les longueurs projetées sur l’horizontale et la verticale : ∆ + dn = h sin αn + ln cos αn (9) q dn ln−1 2 yn = = h2 + ln−1 cos (αn−1 + arctan ) = h cos αn − ln sin αn (10) tan αn h Ces relations (9) et (10) nous donnent au final la longueur ln en fonction des angles et des données du problème : ln = ∆ + h(cos αn tan αn+1 − sin αn ) ∆ = h tan (αn+1 − αn ) + cos αn + sin αn tan αn+1 cos αn (1 + tan αn tan αn+1 ) (11) On remarque que cette relation n’est valable que si ln < l0 , sinon il n’y a pas contact entre le ressort n et le domino n + 1. On introduit αchoc l’angle pour lequel il y a choc entre le ressort n à sa longueur à vide et le domino n + 1 en position initiale (αn+1 = 0) : ∆ = h sin αchoc + l0 cos αchoc (12) L’équation (12) vérifiée par αchoc ne se résout pas analytiquement, il faudra donc en faire une résolution numérique. On peut donc introduire la distribution de Heaviside Θ(αn − αchoc ) dans l’expression du moment exercé par le ressort n : Γressortn = Θ(αn − αchoc ).hk(l0 − ln ) (13) 2 Une fois que le domino n a touché le domino n + 1 par l’intermédiaire du ressort, on doit prendre en compte l’existence possible d’un rebond du domino n sur le n + 1 : ainsi, il faut toujours que la longueur du ressort soit inférieure ou égale à l0 . Pour cela, on ajoute une structure conditionnelle if qui réajuste à l0 la valeur calculée de ln (t) si elle lui est supérieure. Si l’on atteint un état d’équilibre pour une chaîne infinie de domino, chaque domino est équivalent aux autres et les dérivées temporelles sont nulles, donc l’angle d’équilibre est donné par : ∆ cos αeq = leq (14) et (1 + h cos(αeq ) − leq sin αeq γ γ 3g2 2 )αeq = 2αeq − αeq + αeq + sin(αeq ) + k[(l0 − leq ) − h(l0 − leq )] 2J 2J 2h J cos(αeq ) ⇔ cos αeq = 2.3 l0 3gJ − ∆ 2kh∆2 (15) Calcul de αn (t + dt) A partir des relations (1),(2),(8) et des expressions des moments, on trouve la relation : −1 γdt γdt 3gdt2 2αn (t) − 1 − αn (t − dt) + sin αn (t) αn (t + dt) = 1 + 2J 2J 2h cos (αn−1 (t) − αn (t)) dt2 k[l0 − ln−1 (t)] [h cos αn−1 (t) − ln−1 (t) sin αn−1 (t)] J cos αn (t) dt2 − kh[l0 − ln (t)] J + 3 (16) La structure du programme Le code du programme lui-même suit les étapes de l’analyse du problème. Le cheminement du calcul est donc : – trouver l’angle αchoc par la méthode de Newton (ou Newton-Raphson). – initialiser le calcul pour le domino 0 avant le choc avec le domino 1, en fonction des conditions initiales. – réaliser une boucle de calcul sur n et t. – itérer le calcul en faisant varier un paramètre. – tracer la courbe correspondant au paramètre étudié et placer les données dans un fichier .txt. 3.1 L’angle de choc αchoc La résolution de l’équation (12) est faite numériquement par la méthode des zéros de Newton (ou NewtonRaphson) : on utilise une suite qui converge quadratiquement vers le zéro de la fonction. En pratique, la fonction utilisée est : f (α) = h sin α + l0 cos α − ∆ (17) et sa dérivée est : f 0 (α) = h cos α − l0 sin α (18) f (uk ) h sin uk + l0 cos uk − ∆ = uk − f 0 (uk ) h cos uk − l0 sin uk (19) La suite est définie par récurrence : uk+1 = uk − Afin d’arrêter le calcul lorsque le terme de la suite est suffisament proche de la limite, on met en mémoire les deux derniers termes calculés. En effet, les suites extraites d’indices pair et impair sont des suites adjacentes qui convergent chacune vers la limite αchoc . On peut donc approximer l’erreur sur la limite par la différence entre les derniers termes respectivement pair et impair. 3.2 Le domino 0 et les conditions initiales On introduit la vitesse angulaire initiale ω0 telle que : dα0 (t = 0) = ω0 dt (20) Ainsi, tant que α0 < αchoc , l’équation différentielle vérifiée par le domino 0 est simple : J dα0 mgh d2 α0 = −γ + sin α0 dt2 dt 2 (21) De plus on note tchoc 0 l’instant du choc avec le domino 1, car pour t < tchoc 0 , les autres dominos n’ont pas bougé, il est inutile de calculer la variation de leur angle. 3 1.2 0.01 ’data_alpha.txt’ u 1:2 ’data_l.txt’ u 1:2 1 0.0099 0.8 0.0098 0.6 0.0097 0.4 0.0096 0.2 0.0095 0 0.0094 0 200 400 600 800 1000 1200 1400 1600 1800 2000 0 200 400 (a) Angle α0 600 800 1000 1200 1400 1600 1800 (b) Longueur l0 Figure 3 – Résultats pour le domino 0 3.3 La suite du calcul pour le domino 0 et les autres On doit maintenant calculer les angles de tous les dominos pour t > tchoc 0 . Cela dit, le calcul n’est pas nécessaire pour les dominos n > i si le domino i n’a pas atteint l’angle αchoc . On peut donc inclure une boucle while afin de prendre en compte cette condition. Il faudra cependant calculer l’angle du domino i sans prendre en compte la force exercée par son propre ressort. De plus, chaque domino ne peut passer au travers du suivant : il faut donc ajouter une boucle conditionnelle if en remontant la chaîne du dernier au premier domino. 3.4 L’affichage des résultats – Pour le programme concernant les angles et les longueurs de ressorts : lorsque le calcul est terminé, le programme crée deux fichiers .txt où il place respectivement l’angle et la longueur du ressort pour le domino choisi. Par l’intermédiaire de scripts .bash, le tracé des graphiques et leur visualisation au format EPS est automatisé (programmes gnuplot et ghostview). De plus, le programme rend en ligne de terminal le nombre de dominos et d’intervalles de temps, ainsi que les valeurs de αchoc et tchoc 0 . – Pour le programme concernant la vitesse de propagation de l’onde de chute : le programme trace ici le temps mis par chaque domino pour commencer à bouger et l’inverse des différences de temps entre deux dominos consécutifs (ce qui peut s’apparenter à une vitesse de l’onde de chute). 4 Résultats de l’étude Les valeurs initiales des paramètres sont : – l0 = 1 cm. – h = 5 cm. – ∆ = 2 cm. – = 1 × 10−3 s. – J = 1 × 10−5 kg·m2 ce qui correspond à une masse m = 12 g. – k = 1200 N·m−1 soit une force équivalente de 120 g/mm. – γ = 1 × 10−5 N·m·(rad/s)−1 qui correspond à la force visqueuse pour l’air. – ω0 = 1 rad·s−1 . De plus, le calcul est fait pour une chaîne de 50 dominos pendant 2000 intervalles de temps. Les valeurs initiales des paramètres ont été choisies de façon réaliste par rapport au système réel. Rien n’empêche d’effectuer les calculs avec des valeurs très différentes pour voir la dépendance vis-à-vis de ces paramètres. 4.1 Étude des variations temporelles de l’angle αn On utilise le programme qui concerne l’angle d’un domino donné. Pour un nombre fixé de dominos , on choisit un domino quelconque et on étudie les variations de l’angle en fonction du temps. On peut ensuite faire varier les paramètres du système physique pour observer les effets sur l’angle. Tout d’abord, on lance le programme pour le domino 0. Le programme nous renvoie : αeq = 1.054262957399 , leq = 0.009877374773 , αchoc = 0.205661506507 , tchoc 0 = 119. et les graphiques de la figure 3. On voit sur ces graphiques que le domino 0 semble atteindre un régime d’oscillateur amorti. De plus, on distingue une discontinuité de la dérivée de l’angle lors du choc avec le domino 1. 4 2000 1.2 0.01 ’data_alpha.txt’ u 1:2 ’data_l.txt’ u 1:2 1 0.0098 0.8 0.0096 0.6 0.0094 0.4 0.0092 0.2 0.009 0 0.0088 0 200 400 600 800 1000 1200 1400 1600 1800 2000 0 200 400 (a) Angle α1 600 800 1000 1200 1400 1600 1800 2000 (b) Longueur l1 Figure 4 – Résultats pour le domino 1 1.6 0.01 ’data_alpha.txt’ u 1:2 ’data_l.txt’ u 1:2 0.009 1.4 0.008 1.2 0.007 1 0.006 0.8 0.005 0.004 0.6 0.003 0.4 0.002 0.2 0.001 0 0 0 200 400 600 800 1000 1200 1400 1600 1800 2000 0 200 400 (a) Angle α10 600 800 1000 1200 1400 1600 1800 (b) Longueur l10 Figure 5 – Résultats pour le domino 10 On peut ensuite lancer le programme pour le domino 1. Dans ce cas, le programme renvoie les figures 4. De la même façon, le domino 1 tend vers un état d’oscillateur amorti. On peut remarquer que les valeurs d’équilibre des longueurs des ressorts 0 et 1 sont différentes : l’une est proche de 0.00992 (domino 0) alors que celle du domino 1 est proche de 0.0098. Le ressort 1 réagit comme si il supportait une masse plus grande : celle du domino 1 plus celle du domino 0. En conséquence, l’angle moyen d’oscillation du domino 1 est supérieur à celui du domino 0. L’étape suivante est de regarder les résultats pour un domino plus éloigné dans la chaîne : par exemple le domino 10. Dans ce cas, le programme nous renvoie les graphes de la figure 5. On voit que les oscillations ont une amplitude bien plus grande que pour les deux premiers dominos, à la fois pour l’angle et pour la longueur du ressort. De plus, on voit que l’angle α10 revient à la valeur 0 après la première oscillation, puis le domino recommence à tomber. Cela induit donc un faible temps de retard sur la vingtaine d’intervalles de temps où le domino reste en position initiale. On peut aussi remarquer que la longueur moyenne du ressort est proche de 0.5 cm et que l’angle d’équilibre du domino se rapproche de π2 . On lance enfin le programme pour un domino du centre de la chaîne comme le domino 25. Dans ce cas le programme nous renvoie la figure 6. Ici, le domino n’effectue même plus d’oscillations et passe presque instantanément des valeurs α = 0 à α = π2 . De la même façon, la longueur du ressort passe de 1 cm à 0 (et vice-versa) en un temps très bref. Cela signifie que les dominos restent collés au sol après un bref régime transitoire, comme si le ressort était absent. Essayons de multiplier la masse de chaque domino par 10 pour voir les conséquences sur l’évolution temporelle de l’angle. La figure 7 compare le graphe obtenu précedemment avec la masse initiale et ceux avec la masse multipliée par 10 puis par 100. Les pseudo-oscillations sont beaucoup plus amorties lorsque la masse est plus grande, et donc le régime transitoire est d’autant plus bref. Lorsque la masse a été multipliée par 100, l’angle du domino suit une courbe de type exponentielle avec des irrégularités lors de chaque nouveau choc d’un domino suivant dans la chaîne. De plus, on remarque que le temps mis par l’onde de chute pour atteindre le domino 25 dépend lui aussi de la masse des dominos : pour la masse initiale, le choc du domino 25 a lieu pour t ' 300, alors que pour m × 10 il a lieu pour t ' 500 et pour m × 100 il a lieu pour t ' 1000. 5 2000 1.6 0.01 ’data_alpha.txt’ u 1:2 ’data_l.txt’ u 1:2 0.009 1.4 0.008 1.2 0.007 1 0.006 0.8 0.005 0.004 0.6 0.003 0.4 0.002 0.2 0.001 0 0 0 200 400 600 800 1000 1200 1400 1600 1800 2000 0 200 400 (a) Angle α25 600 800 1000 1200 1400 1600 1800 (b) Longueur l25 Figure 6 – Résultats pour le domino 25 1.6 ’data_alpha.txt’ u 1:2 1.4 1.2 1 0.8 0.6 0.4 0.2 0 0 200 400 600 800 1000 1200 1400 1600 1800 2000 (a) Angle α25 (m × 1) 1.6 1.6 ’data_alpha.txt’ u 1:2 ’data_alpha.txt’ u 1:2 1.4 1.4 1.2 1.2 1 1 0.8 0.8 0.6 0.6 0.4 0.4 0.2 0.2 0 0 0 200 400 600 800 1000 1200 1400 1600 1800 2000 (b) Angle α25 (m × 10) 0 200 400 600 800 1000 1200 1400 1600 (c) Angle α25 (m × 100) Figure 7 – Comparaison entre la masse initiale et multipliée par 10 et par 100 6 1800 2000 2000 900 300 ’data_choc.txt’ u 1:2 ’data_vitesse.txt’ u 1:2 800 250 700 200 600 500 150 400 100 300 50 200 100 0 0 5 10 15 20 25 30 35 40 45 50 0 (a) Temps de choc 5 10 15 20 25 30 35 40 45 (b) Inverse de la vitesse de l’onde de chute Figure 8 – Résultats du calcul de vitesse 4.2 Étude de la vitesse de l’onde de chute On utilise maintenant le programme adapté pour calculer la vitesse de l’onde. Celui-ci calcule le temps au bout duquel chaque domino touche le domino suivant. Avec les valeurs initiales des paramètres, le programme nous renvoie les graphiques de la figure 8. On calcule l’inverse de la vitesse de l’onde selon : ∆tn = 1 = tchoc vn n − tchoc n−1 (22) L’inverse de la vitesse est en fait le temps mis par l’onde pour passer d’un domino au suivant. On remarque immédiatement que l’inverse de la vitesse de l’onde de chute (et donc la vitesse également) se stabilise vers une valeur limite, malgré plusieurs discontinuités pour certains dominos. On le voit également sur le graphe 8a puisque, discontinuités exclues, la pente des tangentes à la courbe reste constante. 4.2.1 Influence du frottement visqueux On peut ensuite comparer les résultats en fonction du coefficient de frottement visqueux γ. On lance le programme respectivement pour γ = 0. et γ = 2 × 10−4 N·m·(rad/s)−1 (valeur initiale multipliée par 20). Les résultats sont présentés sur la figure 9. La valeur γ = 0. donne des résultats très proches de ceux obtenus pour γ = 1 × 10−5 N·m·(rad/s)−1 . La différence est beaucoup plus nette pour la valeur γ = 2 × 10−4 N·m·(rad/s)−1 : en effet, la vitesse se stabilise à une valeur équivalente aux deux premières, mais au bout d’un nombre de chocs plus important. Par exemple, le domino 25 est atteint par l’onde au bout d’environ 530 intervalles de temps contre environ 300 pour la valeur initiales de γ. 4.2.2 Influence de l’impulsion initiale Étudions maintenant l’influence de l’impulsion initiale sur la vitesse de l’onde de chute : on va respectivement multiplier puis diviser par 10 la vitesse angulaire initiale ω0 . On compare les résultats sur la figure 10. Les résultats correspondent à ce que l’on peut intuiter : pour une impulsion initiale faible (figure 10b), la vitesse de l’onde de chute en régime permanent est diminuée par rapport à la valeur initiale de l’impulsion (figure 10a). Par exemple, le domino 25 est atteint au bout d’environ 450 intervalles de temps au lieu de 350 précédemment. Pour une impulsion plus forte, la vitesse augmente : le domino 25 est atteint au bout d’environ 180 intervalles de temps sur la figure 10c. 4.2.3 Influence de la masse On peut également étudier l’inflence de la masse en la multipliant par 10 puis par 100. Les résultats sont présentés sur la figure 11. La première remarque que l’on peut formuler est que l’augmentation de la masse augmente l’inertie de chaque domino et donc diminue la vitesse de l’onde (il a été nécessaire de faire le calcul sur 2000 intervalles de temps pour m × 100 car au bout de 1000, l’onde n’atteint que le domino 25). De plus, l’augmentation de la masse diminue ce que l’on pourrait appeler un régime transitoire, c’est-à-dire le nombre de premiers dominos pour lesquels la vitesse de l’onde ne s’est pas stabilisée. 7 50 900 700 ’data_choc.txt’ u 1:2 ’data_choc.txt’ u 1:2 650 800 600 700 550 600 500 450 500 400 400 350 300 300 200 250 100 200 0 5 10 15 20 25 30 35 40 45 50 0 5 10 15 20 25 (b) Temps de choc (γ = 2 × (a) Temps de choc (γ = 0.) 300 30 35 10−4 40 45 50 N·m·(rad/s)−1 ) 250 ’data_vitesse.txt’ u 1:2 ’data_vitesse.txt’ u 1:2 250 200 200 150 150 100 100 50 50 0 0 0 5 10 15 20 25 30 35 40 45 50 0 5 10 15 20 25 30 35 40 45 (d) Inverse de la vitesse (γ = 2 × 10−4 N·m·(rad/s)−1 ) (c) Inverse de la vitesse (γ = 0.) Figure 9 – Résultats comparés du calcul de vitesse 900 ’data_choc.txt’ u 1:2 800 700 600 500 400 300 200 100 0 5 10 15 20 25 30 35 40 45 50 (a) Temps de choc (ω0 × 1) 1000 800 ’data_choc.txt’ u 1:2 ’data_choc.txt’ u 1:2 900 700 800 600 700 500 600 400 500 300 400 200 300 100 200 0 0 5 10 15 20 25 30 35 40 45 50 0 (b) Temps de choc (ω0 × 0.1) 5 10 15 20 25 30 35 40 (c) Temps de choc (ω0 × 10) Figure 10 – Comparaison entre l’impulsion initiale et multipliée par 0.1 et par 10 8 45 50 50 900 ’data_choc.txt’ u 1:2 800 700 600 500 400 300 200 100 0 5 10 15 20 25 30 35 40 45 50 (a) Temps de choc (m × 1) 800 2000 ’data_choc.txt’ u 1:2 ’data_choc.txt’ u 1:2 1800 700 1600 600 1400 1200 500 1000 400 800 600 300 400 200 200 100 0 0 5 10 15 20 25 30 35 40 45 50 0 (b) Temps de choc (m × 10) 5 10 15 20 25 30 35 40 45 50 (c) Temps de choc (m × 100) Figure 11 – Comparaison entre la masse initiale et multipliée par 10 et par 100 4.2.4 Influence de la raideur du ressort On peut enfin étudier l’influence de la raideur du ressort sur la vitesse de l’onde de chute : on compare sur la figure 12 les résultats avec une raideur respectivement 10 fois plus faible et 10 fois plus grande. Les résultats montrent que l’augmentation de la raideur du ressort augmente la vitesse de propagation de l’onde de chute : le temps mis par chaque domino pour atteindre le suivant est considérablement diminué (sans tenir compte des éventuelles discontinuités). De plus, on observe une déformation du « régime transitoire » lorsque la raideur est 100 fois plus grande que la raideur initiale. 5 Conclusion de l’étude L’étude de cette chaîne de dominos apporte des résultats intéressants malgré quelques incohérences (par exemple, la discontinuité de vitesse de l’onde de chute). Ainsi, une chaîne de 50 dominos ne réagit pas comme une chaîne infinie de dominos où tous les dominos seraient identiques un à un, et donc la dépendance temporelle ne dépendrait pas du numéro du domino choisi. Les résultats nous montrent que les différents pramètres ont surtout une influence sur le régime transitoire (durée, allure des courbes), et dans une moindre mesure sur le régime permanent. Ainsi, par exemple, l’augmentation de la masse des dominos diminue la durée d’établissement du régime permanent, tant au niveau de l’angle de chute qu’au niveau de la vitesse de l’onde. On peut aussi remarquer que les paramètres masse m et coefficient de frottement visqueux γ augmentent l’inertie de chaque domino, tandis que les paramètres raideur k et impulsion initiale ω0 augmentent la vitesse finale de l’onde de chute. De plus, il faut noter que le principe du calcul approché ne permet pas d’obtenir une précision exceptionelle : en effet, lors du choc d’un domino avec le suivant, on applique ici une force ponctuelle correspondant à la longueur déjà diminuée du ressort à l’instant suivant le choc, au lieu d’une force continue qui prendrait en compte la compression progressive du ressort. Du fait de la grande constante de raideur du ressort, la force et donc l’accélération qui en découle deviennent très grandes (c’est-à-dire que l’accélération n’est pas du tout continue). De telles discontinuités pourraient peut-être expliquer les incohérences des résultats. 9 900 ’data_choc.txt’ u 1:2 800 700 600 500 400 300 200 100 0 5 10 15 20 25 30 35 40 45 50 (a) Temps de choc (k × 1) 800 1000 ’data_choc.txt’ u 1:2 ’data_choc.txt’ u 1:2 900 700 800 600 700 500 600 500 400 400 300 300 200 200 100 100 0 5 10 15 20 25 30 35 40 45 50 (b) Temps de choc (k × 0.1) 0 5 10 15 20 25 30 35 40 (c) Temps de choc (k × 10) Figure 12 – Comparaison entre la raideur initiale et multipliée par 0.1 et par 10 10 45 50