MOUVEMENT BALISTIQUE AVEC FROTTEMENT QUADRATIQUE CCP MP 2017

In [1]:
%display latex
In [2]:
g=9.81; vo=380; alpha=n((18*pi)/180);    # angle initial 18°
m_1=n(11350*4*pi*(2e-3)^3/3)             #masse des plombs n°1, 5 et 10 en kg
m_5=n(11350*4*pi*(1.5e-3)^3/3)
m_10=n(11350*4*pi*(0.875e-3)^3/3)
beta_1=3.40046e-6   #  beta force en -beta v^2  en unite SI
beta_5=1.912759e-6
beta_10=6.508693e-7

On cherche à resoudre l'équation du mouvement:

$$\frac{{\rm d}\vec{v}}{{\rm d}{\rm t}}=\vec{g}-\frac{\beta}{m} v \vec{v}$$

Cette équation, non linéaire n'est pas soluble analythiquement. On peut la résoudre numériquement avec SageMath en utilisant la méthode de Runge-Kunta.

En projetant sur $\vec{u}_x$ et $\vec{u}_z$ on obtient un système de deux équations différentielles d'ordre 2 couplées:

$$ \left\lbrace \begin{array}{l} \ddot{x}=-\frac{\beta}{m} \sqrt{\dot{x}^2+\dot{z}^2}\, \dot{x} \\ \ddot{z}=-\frac{\beta}{m} \sqrt{\dot{x}^2+\dot{z}^2}\, \dot{z} -g \end{array} \right. $$

que l'on transforme en un système de quatre équations couplées du premier ordre

$$ \left\lbrace \begin{array}{ll} \dot{x}=v_x& (1)\\ \dot{z}=v_z& (2)\\ \dot{v_x}=-\frac{\beta}{m} \sqrt{v_x^2+v_z^2}\, v_x & (3)\\ \dot{v_z}=-\frac{\beta}{m} \sqrt{v_x^2+v_z^2}\, v_z -g& (4)\\ \end{array} \right. $$

On introduit alors les quatre variables $x$, $z$, $v_x$, $v_z$ ainsi que la variable $t$.

Si on note rhs(i) le membre de droite de l'équation (i) et var[i] la ième variable de la liste $[x,z,v_x,v_z]$ ( on a donc $\frac{{\rm d}{\rm var}[i]}{{\rm d}{\rm t}}=$rhs(i) ) , on utilise la commande:

desolve_system_rk4( [rhs(1),rhs(2),rhs(3),rhs(4)] , [var[1],var[2],var[3],var[4]) , ics=[conditions initiales], end_points= instant final, step= pas de temps, ivar=t)

Les conditions initiales correspondent à une liste de 5 éléments: [$t_i$ (instant initial), $x(t_i)$, $z(t_i)$, $v_x(t_i)$, $v_z(t_i)$].

In [3]:
var('t')
(x,z,vx,vz)=var('x,z,vx,vz')
sol1 = desolve_system_rk4([vx,vz,-(beta_1/m_1)*sqrt(vx^2+vz^2)*vx,-g-(beta_1/m_1)*sqrt(vx^2+vz^2)*vz],
                          [x,z,vx,vz],
                          ics=[0,0,0,vo*cos(alpha),vo*sin(alpha)],
                          end_points=n(2*vo*sin(alpha)/g),step=n(2*vo*sin(alpha)/g)/100,ivar=t) 

# première estimation de la durée à partir du temps de retombée du mvt sans frottements

La solution renvoie une liste dont chaque élément est de la forme: $[t_i,x(t_i),z(t_i),vx(t_i),vz(t_i)]$. On peut le vérifier sur les cinq premiers termes.

In [4]:
sol1[:5]
Out[4]:
In [5]:
graph1=line([(sol1[i][1],sol1[i][2]) for i in range(len(sol1))],color='blue')
In [6]:
show(graph1)

Évaluation de la durée de retombée en tenant compte des frottements.

In [7]:
grapht1=line([(sol1[i][0],sol1[i][2]) for i in range(len(sol1))],color='blue') # tracé de z(t)
In [8]:
show(grapht1,axes_labels=['$t$','$z$'])

On constate graphiquement que y(t) s'annule pour $t\simeq 6,5$ s.

In [9]:
sol1a = desolve_system_rk4([vx,vz,-(beta_1/m_1)*sqrt(vx^2+vz^2)*vx,-g-(beta_1/m_1)*sqrt(vx^2+vz^2)*vz],
                          [x,z,vx,vz],
                          ics=[0,0,0,vo*cos(alpha),vo*sin(alpha)],
                          end_points=6.5,step=6.5/100,ivar=t) 
In [10]:
g1=line([(sol1a[i][1],sol1a[i][2]) for i in range(len(sol1a))],color='blue',thickness=2,
        axes_labels=[r'$x\ {\rm (m)}$',r'$z\ {\rm (m)}$'],
       legend_label=r'$R=2,0\ {\rm mm}$')
show(g1)
In [11]:
sol5 = desolve_system_rk4([vx,vz,-(beta_5/m_5)*sqrt(vx^2+vz^2)*vx,-g-(beta_5/m_5)*sqrt(vx^2+vz^2)*vz],
                          [x,z,vx,vz],
                          ics=[0,0,0,vo*cos(alpha),vo*sin(alpha)],
                          end_points=5.83, step=5.83/100, ivar=t) 
In [12]:
graph5=line([(sol5[i][1],sol5[i][2]) for i in range(len(sol5))],color='magenta',thickness=2,
            axes_labels=[r'$x\ {\rm (m)}$',r'$z\ {\rm (m)}$'],
           legend_label=r'$R=1,5\ {\rm mm}$')
show(graph5)
In [13]:
sol10 = desolve_system_rk4([vx,vz,-(beta_10/m_10)*sqrt(vx^2+vz^2)*vx,-g-(beta_10/m_10)*sqrt(vx^2+vz^2)*vz],
                          [x,z,vx,vz],
                          ics=[0,0,0,vo*cos(alpha),vo*sin(alpha)],
                          end_points=4.71,step=4.71/100,ivar=t) 
In [14]:
graph10=line([(sol10[i][1],sol10[i][2]) for i in range(len(sol10))],color='green',thickness=2,
             axes_labels=[r'$x\ {\rm (m)}$',r'$z\ {\rm (m)}$'],
            legend_label=r'$R=0,875\ {\rm mm}$')
show(graph10)
In [15]:
show(g1+graph5+graph10, legend_loc=[0.1,0.8],aspect_ratio=1)  #repere orthonormé
In [16]:
show(g1+graph5+graph10,  legend_loc=[0.1,0.8])

On peut représenter l'évolution de la vitesse au cours du temps.

In [17]:
g1v=line([(sol1a[i][0],sqrt(sol1a[i][3]^2+sol1a[i][4]^2)) for i in range(len(sol1a))],color='blue',thickness=2,
       legend_label=r'$R=2,0\ {\rm mm}$',gridlines='minor',axes_labels=['$t$','$v$'])
g5v=line([(sol5[i][0],sqrt(sol5[i][3]^2+sol5[i][4]^2)) for i in range(len(sol5))],color='magenta',thickness=2,
       legend_label=r'$R=1,5\ {\rm mm}$',gridlines='minor',axes_labels=['$t$','$v$'])
g10v=line([(sol10[i][0],sqrt(sol10[i][3]^2+sol10[i][4]^2)) for i in range(len(sol10))],color='green',thickness=2,
       legend_label=r'$R=0,875\ {\rm mm}$',gridlines='minor',axes_labels=['$t$','$v$'])
show(g1v+g5v+g10v,ymin=0)
In [ ]: