dimanche 19 juin 2016

Oscillateurs parallèles couplés par des ressorts n°9

Alexander Grahn fait la remarque suivante(très pertinente) : lorsque la longueur à vide des ressorts (ils sont tous identiques) est plus petite que la distance entre 2 rails, la position stable est celle pour laquelle l'alignement des ressorts est vertical, car le système tend à minimiser l'écart entre les mobiles donc la longueur des ressorts. D'une façon plus générale, l'état stable (l'équilibre final) est atteint lorsque l'énergie est minimale ce qui correspond bien à la longueur la plus petite possible des ressorts qui est la distance entre 2 rails.

Alexander propose un modèle plus complet qui permet de rendre compte de façon plus réaliste le phénomène, nous verrons cela très prochainement.

Lorsque le longueur à vide des ressorts est plus grande que la distance entre 2 rails, l'énergie minimale du système correspond à la longueur du ressort égale celle qu'il possède à vide (lorsqu'il n'est ni comprimé ni étiré)l'état stable. On obtient donc un système final en zigzag avec des distances entre mobiles égale à l0.
Si la longueur à vide des ressorts est égale à d*sqrt(2), les différentes parties du zigzag sont perpendiculaires.

Il doit exister des conditions initiales bien particulières où au final les ressorts sont alignés en oblique à 45°. 
Voici une vérification par simulation :
Remarque : le Gif ne boucle pas, il faut donc rafraichir l'écran pour relancer l'animation (touche F5).

Le listing :

\documentclass{article}
\usepackage[a4paper,margin=2cm]{geometry}
\usepackage{pst-ode,pst-ressort,pst-plot}
%\usepackage[method=ocg]{animate}
\usepackage{animate}
\title{Dix oscillateurs parallèles couplés par des ressorts}
% on introduit une force de frottement -f*vx
\date{19 juin 2016}
% manuel.luque27@gmail.com
\pagestyle{empty}
\begin{document}
\def\mobileA{\pscustom[fillstyle=solid,fillcolor=gray!20,unit=0.2]{\psline(-0.5,0.1)(-2,0.1)(-2,1)(2,1)(2,0.1)
\psarcn(0,0.1){0.5}{0}{180}
\moveto(-0.2,0.1)
\psarc(0,0.1){0.2}{180}{360}
\psline(0.2,0.1)(-0.2,0.1)}}
\def\mobileB{\psframe[fillstyle=solid,fillcolor=gray!20,unit=0.2](-2,-0.5)(2,0.5)}
\def\mobileC{\pscustom[fillstyle=solid,fillcolor=gray!20,unit=0.2]{\psline(0.5,-0.1)(2,-0.1)(2,-1)(-2,-1)(-2,-0.1)(-0.5,-0.1)
\psarcn(0,-0.1){0.5}{180}{0}
\moveto(0.2,-0.1)
\psarc(0,-0.1){0.2}{0}{180}
\psline(-0.2,-0.1)(0.2,-0.1)}}
% 14 mobiles
%  0  1   2   3   4    5   6   7   8   9   10   11  12   13  %   14   15   16   17  18   19   20   21   22   23    24     25   26    27
% x1  x2  x3  x4  x5  x6  x7  x8  x9  x10  x11 x12  x13  x14 %  x'1  x'2  x'3  x'4  x'5  x'6  x'7  x'8  x'9  x'10  x'11  x'12  x'13  x'14
\def\QuatorzeOscillateurs{x[14]|x[15]|x[16]|x[17]|x[18]|x[19]|x[20]|x[21]|x[22]|x[23]|x[24]|x[25]|x[26]|x[27]| %
                                                km*(x[1]-x[0])*(1-L0/sqrt(distance^2+(x[1]-x[0])^2))-cf*x[14]|%
                                               -km*(x[1]-x[0])*(1-L0/sqrt(distance^2+(x[1]-x[0])^2))+km*(x[2]-x[1])*(1-L0/sqrt(distance^2+(x[2]-x[1])^2))-cf*x[15]|%
                                               -km*(x[2]-x[1])*(1-L0/sqrt(distance^2+(x[2]-x[1])^2))+km*(x[3]-x[2])*(1-L0/sqrt(distance^2+(x[3]-x[2])^2))-cf*x[16]|%
                                               -km*(x[3]-x[2])*(1-L0/sqrt(distance^2+(x[3]-x[2])^2))+km*(x[4]-x[3])*(1-L0/sqrt(distance^2+(x[4]-x[3])^2))-cf*x[17]|%
                                               -km*(x[4]-x[3])*(1-L0/sqrt(distance^2+(x[4]-x[3])^2))+km*(x[5]-x[4])*(1-L0/sqrt(distance^2+(x[5]-x[4])^2))-cf*x[18]|%
                                               -km*(x[5]-x[4])*(1-L0/sqrt(distance^2+(x[5]-x[4])^2))+km*(x[6]-x[5])*(1-L0/sqrt(distance^2+(x[6]-x[5])^2))-cf*x[19]|%
                                               -km*(x[6]-x[5])*(1-L0/sqrt(distance^2+(x[6]-x[5])^2))+km*(x[7]-x[6])*(1-L0/sqrt(distance^2+(x[7]-x[6])^2))-cf*x[20]|%
                                               -km*(x[7]-x[6])*(1-L0/sqrt(distance^2+(x[7]-x[6])^2))+km*(x[8]-x[7])*(1-L0/sqrt(distance^2+(x[8]-x[7])^2))-cf*x[21]|%
                                               -km*(x[8]-x[7])*(1-L0/sqrt(distance^2+(x[8]-x[7])^2))+km*(x[9]-x[8])*(1-L0/sqrt(distance^2+(x[9]-x[8])^2))-cf*x[22]|%
                                               -km*(x[9]-x[8])*(1-L0/sqrt(distance^2+(x[9]-x[8])^2))+km*(x[10]-x[9])*(1-L0/sqrt(distance^2+(x[10]-x[9])^2))-cf*x[23]|%
                                               -km*(x[10]-x[9])*(1-L0/sqrt(distance^2+(x[10]-x[9])^2))+km*(x[11]-x[10])*(1-L0/sqrt(distance^2+(x[11]-x[10])^2))-cf*x[24]|%
                                               -km*(x[11]-x[10])*(1-L0/sqrt(distance^2+(x[11]-x[10])^2))+km*(x[12]-x[11])*(1-L0/sqrt(distance^2+(x[12]-x[11])^2))-cf*x[25]|%
                                               -km*(x[12]-x[11])*(1-L0/sqrt(distance^2+(x[12]-x[11])^2))+km*(x[13]-x[12])*(1-L0/sqrt(distance^2+(x[13]-x[12])^2))-cf*x[26]|%
                                               -km*(x[13]-x[12])*(1-L0/sqrt(distance^2+(x[13]-x[12])^2))-cf*x[27]}%
\def\initCond{initCond}
\begin{center}
\def\nFrames{250}% 250 images
\psset[pst-ressort]{N=20,li=3,R=0.15,alpha=20,dl=0.4}%
\psset{unit=0.75}
\begin{animateinline}[controls,
                     begin={\begin{pspicture}(-10,-14)(10,14)},
                     end={\end{pspicture}}]{20}% 20 images/s
\pstVerb{
        /initCond {rrand srand
                   14 { rand 2147483647 div  6 mul -3 add } repeat
                   14 { rand 2147483647 div 16 mul -8 add } repeat
%                   10 { 0 } repeat
                   } def
%% k/m = km =4pi^2 = 39.4784176
         /km 39.4784176 def
         /L0 2.8284273 def % sqrt(8)
         /distance 2 def
% coefficient de frottement / masse = cf
         /cf 0.5 def
        }%
\pstODEsolve[algebraic]{mobiles}{0 1 2 3 4 5 6 7 8 9 10 11 12 13}{0}{12.5}{\nFrames}{\initCond}{\QuatorzeOscillateurs}
\pstVerb{
/posX1 [0 14 [mobiles] length 14 sub {/i exch def
             [mobiles] i get} for
       ]def
/posX2 [0 14 [mobiles] length 14 sub {/i exch def
             [mobiles] i 1 add get} for
       ]def
/posX3 [0 14 [mobiles] length 14 sub {/i exch def
             [mobiles] i 2 add get} for
       ]def
/posX4 [0 14 [mobiles] length 14 sub {/i exch def
             [mobiles] i 3 add get} for
       ]def
/posX5 [0 14 [mobiles] length 14 sub {/i exch def
             [mobiles] i 4 add get} for
       ]def
/posX6 [0 14 [mobiles] length 14 sub {/i exch def
             [mobiles] i 5 add get} for
       ]def
/posX7 [0 14 [mobiles] length 14 sub {/i exch def
             [mobiles] i 6 add get} for
       ]def
/posX8 [0 14 [mobiles] length 14 sub {/i exch def
             [mobiles] i 7 add get} for
       ]def
/posX9 [0 14 [mobiles] length 14 sub {/i exch def
             [mobiles] i 8 add get} for
       ]def
/posX10 [0 14 [mobiles] length 14 sub {/i exch def
              [mobiles] i 9 add get} for
       ]def
/posX11 [0 14 [mobiles] length 14 sub {/i exch def
              [mobiles] i 10 add get} for
       ]def
/posX12 [0 14 [mobiles] length 14 sub {/i exch def
              [mobiles] i 11 add get} for
       ]def
/posX13 [0 14 [mobiles] length 14 sub {/i exch def
              [mobiles] i 12 add get} for
       ]def
/posX14 [0 14 [mobiles] length 14 sub {/i exch def
              [mobiles] i 13 add get} for
       ]def
}%
%
\multiframe{\nFrames}{i=0+1}{%
\psframe[fillstyle=vlines,hatchsep=1,hatchwidth=0.01](-10,-13.5)(10,13.5)
\psframe[fillstyle=hlines,hatchsep=1,hatchwidth=0.01](-10,-13.5)(10,13.5)
\psframe(-10,-13.5)(10,13.5)
\psline[linewidth=0.05](-10,13.1)(10,13.1)
\psline[linewidth=0.05](-10,11)(10,11)
\psline[linewidth=0.05](-10,9)(10,9)
\psline[linewidth=0.05](-10,7)(10,7)
\psline[linewidth=0.05](-10,5)(10,5)
\psline[linewidth=0.05](-10,3)(10,3)
\psline[linewidth=0.05](-10,1)(10,1)
\psline[linewidth=0.05](-10,-1)(10,-1)
\psline[linewidth=0.05](-10,-3)(10,-3)
\psline[linewidth=0.05](-10,-5)(10,-5)
\psline[linewidth=0.05](-10,-7)(10,-7)
\psline[linewidth=0.05](-10,-9)(10,-9)
\psline[linewidth=0.05](-10,-11)(10,-11)
\psline[linewidth=0.05](-10,-13.1)(10,-13.1)
\rput(!posX1 \i\space get 13){\mobileA}
\rput(!posX2 \i\space get 11){\mobileB}
\rput(!posX3 \i\space get 9){\mobileB}
\rput(!posX4 \i\space get 7){\mobileB}
\rput(!posX5 \i\space get 5){\mobileB}
\rput(!posX6 \i\space get 3){\mobileB}
\rput(!posX7 \i\space get 1){\mobileB}
\rput(!posX8 \i\space get -1){\mobileB}
\rput(!posX9 \i\space get -3){\mobileB}
\rput(!posX10 \i\space get -5){\mobileB}
\rput(!posX11 \i\space get -7){\mobileB}
\rput(!posX12 \i\space get -9){\mobileB}
\rput(!posX13 \i\space get -11){\mobileB}
\rput(!posX14 \i\space get -13){\mobileC}
\psRessort{*-*}(!posX1 \i\space get 13)(!posX2 \i\space get 11)
\psRessort{*-*}(!posX2 \i\space get 11)(!posX3 \i\space get 9)
\psRessort{*-*}(!posX3 \i\space get 9)(!posX4 \i\space get 7)
\psRessort{*-*}(!posX4 \i\space get 7)(!posX5 \i\space get 5)
\psRessort{*-*}(!posX5 \i\space get 5)(!posX6 \i\space get 3)
\psRessort{*-*}(!posX6 \i\space get 3)(!posX7 \i\space get 1)
\psRessort{*-*}(!posX7 \i\space get 1)(!posX8 \i\space get -1)
\psRessort{*-*}(!posX8 \i\space get -1)(!posX9 \i\space get -3)
\psRessort{*-*}(!posX9 \i\space get -3)(!posX10 \i\space get -5)
\psRessort{*-*}(!posX10 \i\space get -5)(!posX11 \i\space get -7)
\psRessort{*-*}(!posX11 \i\space get -7)(!posX12 \i\space get -9)
\psRessort{*-*}(!posX12 \i\space get -9)(!posX13 \i\space get -11)
\psRessort{*-*}(!posX13 \i\space get -11)(!posX14 \i\space get -13)
}
\end{animateinline}
\end{center}
\end{document}


Aucun commentaire:

Enregistrer un commentaire