jeudi 3 avril 2014

Oscillateurs sur un banc à coussin d’air : une extrémité libre

Premier mode : les mobiles vibrent en phase.
Deuxième mode : les mobiles vibrent en opposition de phase :
Le listing qui après la séquence : LaTeX -> DVIPS -> ps2pdf donnera le fichier pdf contenant les 2 animations créées avec le package animate. Pour les packages pst-ode, animate et pst-ressort voir les messages précédents.

\documentclass[fleqn]{article}
\usepackage[a4paper,margin=2cm]{geometry}
\usepackage[latin1]{inputenc}%
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{lmodern}
\usepackage{pst-ode,multido,pst-ressort}
\usepackage{animate}
\usepackage{array,amsmath}
\def\Mobile{
    \pspolygon[fillstyle=solid,fillcolor=gray!50](-1,0.5)(1,0.5)(1,1.25)(0.9,1.25)(0.9,0.75)(-0.9,0.75)(-0.9,1.25)(-1,1.25)
    \pspolygon[fillstyle=solid,fillcolor=gray](-1,0)(1,0)(1,0.5)(-1,0.5)
}
\def\Rail{
    \psline[linewidth=0.1](-8,-0.5)(-8,1.25)
    \psframe[fillstyle=solid,fillcolor={[rgb]{0.75 0.75 0.5}}](-8,-0.5)(8,0.5)
    \multido{\n=-7.5+0.5}{31}{\psdot[dotstyle=o](\n,0.25)}
}
% x1    x2   x1'   x2'
% y[0] y[1]  y[2]  y[3]
\def\oscillateurs{y[2]|y[3]|(-2*y[0]+y[1])*O2|(-y[1]+y[0])*O2}
\def\initCond{x10 x20 v10 v20}
\SpecialCoor
\title{Oscillateurs sur un banc à coussin d'air}
\date{3 avril 2014}
\begin{document}
\maketitle
\begin{center}
\begin{pspicture}(-9,-1.5)(9,2)
\psset{li=4,N=10,dl=0.2,nS=15,alpha=30,R=0.25}
\Rail
\rput(-3,0){\Mobile}
\rput(3,0){\Mobile}
\psRessort[linewidth=0.02,linecolor=red]{o-o}(-8,1)(-4,1)
\psRessort[linewidth=0.02,linecolor=blue]{o-o}(-2,1)(2,1)
\psline{->}(-8,-1)(8,-1)
\psdots(-3,-1)(3,-1)
\uput[u](-3,-1){$O_1$}
\uput[u](3,-1){$O_2$}
\uput[u](8,-1){$x$}
\rput(-6,1.5){$k$}
\rput(0,1.5){$k$}
\uput[u](-3,1){$(m)$}
\uput[u](3,1){$(m)$}
\end{pspicture}
\end{center}
\[
\left\{
\begin{array}[m]{l}
 \ddot{x_1}=-\dfrac{2k}{m}x_1+\dfrac{k}{m}x_2\\[1em]
 \ddot{x_2}=\dfrac{k}{m}x_1-\dfrac{k}{m}x_2
\end{array}
\right.
\Longrightarrow
\left\{
\begin{array}[m]{l}
 \ddot{x_1}=-2\omega_0^2x_1+\omega_0^2x_2\\[1em]
 \ddot{x_2}=\hphantom{-2}\omega_0^2x_1-\omega_0^2x_2
\end{array}
\right.
\]
Valeurs propres $(\omega^2)$ et vecteurs propres :
\[
 \left[
    \begin {array}{c}
    \dfrac{3+\sqrt {5}}{2} {\omega_0}^{2}\\
    \noalign{\medskip}
    \dfrac{3-\sqrt {5}}{2} {\omega_0}^{2}
  \end {array}
   \right]
  \qquad
  \left[
    \begin {array}{cc}
    -\dfrac{\sqrt {5}+1}{2}&\dfrac{\sqrt {5}-1}{2}\\
    \noalign{\medskip}
    1&1
  \end {array}
   \right]
\]
\begin{verbatim}
\pstVerb{
    /k' 5 def   % constante de raideur (k)
    /m' 0.5 def % masse (m)
    /O2 k' m' div def % pulsation propre d'un oscillateur au carré
        }
% x1    x2   x1'   x2'
% y[0] y[1]  y[2]  y[3]
\def\oscillateurs{y[2]|y[3]|(-2*y[0]+y[1])*O2|(-y[1]+y[0])*O2}
\def\initCond{x10 x20 v10 v20}
\end{verbatim}
\newpage
Premier mode : les mobiles vibrent en phase.
\begin{center}
\psset{li=4,N=10,dl=0.2,nS=15,alpha=20,R=0.25}
\def\nFrames{50}% 50 images
\begin{animateinline}[controls,loop,%
                     begin={\begin{pspicture}(-9,-2)(9,2)},
                     end={\end{pspicture}}]{5}% 5 images/s
\pstVerb{% datas
    /k' 5 def   % constante de raideur (k)
    /m' 0.5 def % masse (m)
    /O2 k' m' div def % pulsation propre d'un oscillateur au carré
% mode 1
    /O1 k' m' div 3 5 sqrt sub 2 div mul sqrt def
    /T1 6.283185 O1 div def
    /x10 5 sqrt 1 sub 2 div 2 mul def
    /x20 1 2 mul def
    /v10 0 def
    /v20 0 def
        }%
% enregistrement des positions des 2 mobiles
\pstODEsolve[algebraic]{X12L}{0 1}{0}{T1}{\nFrames}{\initCond}{\oscillateurs}
\pstVerb{ % tableaux des positions des mobiles : 50 positions sur une période propre.
       /X12 [X12L] def
        /X1 [
         0 2 X12 length 2 sub {/ix1 exch def
         X12 ix1 get 3 sub % x1
         }for
         ] def
         /X2 [
         0 2 X12 length 2 sub {/ix2 exch def
         X12 ix2 1 add get 3 add % x2
         }for
         ] def
         }%
\multiframe{\nFrames}{i=0+1}{%
\psframe*[linecolor=yellow!20](-9,-1)(9,2)
\psgrid[subgriddiv=0,gridcolor=black,griddots=10,gridlabels=0pt](-9,-1)(9,2)
\Rail%
    \rput(! X1 \i\space get 0){\Mobile}
    \rput(! X2 \i\space get 0){\Mobile}
    \psRessort[linewidth=0.04,linecolor=red]{o-o}(-8,1)(! X1 \i\space get 1 sub 1)
    \psRessort[linewidth=0.04,linecolor=blue]{o-o}(! X1 \i\space get 1 add 1)(! X2 \i\space get 1 sub 1)
}%
\end{animateinline}
\end{center}


Deuxième mode : les mobiles vibrent en opposition de phase :

\begin{center}
\psset{li=4,N=10,dl=0.2,nS=15,alpha=20,R=0.25}
\def\nFrames{50}% 50 images
\begin{animateinline}[controls,loop,%
                     begin={\begin{pspicture}(-9,-1)(9,2)},
                     end={\end{pspicture}}]{10}% 10 images/s
\pstVerb{% datas
    /k' 5 def   % constante de raideur (k)
    /m' 0.5 def % masse (m)
    /O2 k' m' div def % pulsation propre d'un oscillateur au carré
    /T0 6.283185 m' div k' mul def
% mode 2
    /O1 k' m' div 3 5 sqrt add 2 div mul sqrt def
    /T1 6.283185 O1 div def
    /x10 5 sqrt 1 add 2 div neg def
    /x20 1 def
    /v10 0 def
    /v20 0 def
        }%
% enregistrement des positions des 2 mobiles
\pstODEsolve[algebraic]{X12S}{0 1}{0}{T1}{\nFrames}{\initCond}{\oscillateurs}
\pstVerb{ % tableaux des positions des mobiles : 50 positions sur une période propre.
       /X12 [X12S] def
        /X1 [
         0 2 X12 length 2 sub {/ix1 exch def
         X12 ix1 get 3 sub % x1
         }for
         ] def
         /X2 [
         0 2 X12 length 2 sub {/ix2 exch def
         X12 ix2 1 add get 3 add % x2
         }for
         ] def
         }%
\multiframe{\nFrames}{i=0+1}{%
\psframe*[linecolor=yellow!20](-9,-1)(9,2)
\psgrid[subgriddiv=0,gridcolor=black,griddots=10,gridlabels=0pt](-9,-1)(9,2)
\Rail%
    \rput(! X1 \i\space get 0){\Mobile}
    \rput(! X2 \i\space get 0){\Mobile}
    \psRessort[linewidth=0.04,linecolor=red]{o-o}(-8,1)(! X1 \i\space get 1 sub 1)
    \psRessort[linewidth=0.04,linecolor=blue]{o-o}(! X1 \i\space get 1 add 1)(! X2 \i\space get 1 sub 1)
}%
\end{animateinline}
\end{center}
\end{document}

Aucun commentaire:

Enregistrer un commentaire