MOUVEMENT BALISTIQUE AVEC FROTTEMENT FLUIDE OU QUADRATIQUE

In [1]:
%display latex
In [2]:
g=10;vo=10;alpha=pi/2;#masse égale à l'unité  
h=1;beta=1     #h frottement fluide   beta:frottement quadratique  
var('t')
x=function('x')(t);y=function('y')(t)
eq0x=diff(x,t,2)==0;eq0y=diff(y,t,2)==-g       #mouvement sans frottement
[eq0x,eq0y]
Out[2]:
In [3]:
sol0x=desolve(eq0x,x,ics=[0,0,vo*cos(alpha/2)])  # résolution analythique des équations du mvt sans frottement
sol0y=desolve(eq0y,y,ics=[0,0,vo*sin(alpha/2)])
In [4]:
[sol0x,sol0y]
Out[4]:
In [5]:
graph0=parametric_plot((sol0x,sol0y),(t,0,2*vo*sin(alpha/2)/g),plot_points=500,
                       aspect_ratio=1,color='magenta') #trajectoire sans frottement

Les équations avec frottements quadratique étant non linéaires, ont les résoud analythiquement. Il est possible d'utiliser avec SAGE une methode de Runge Kunta d'ordre 4.

In [6]:
(x,y,vx,vy)=var('x,y,vx,vy')
In [7]:
soll=desolve_system_rk4([vx,vy,-h*vx,-g-h*vy],[x,y,vx,vy],
                        ics=[0,0,0,n(vo*cos(alpha/2)),n(vo*sin(alpha/2))],end_points=n(2*vo*sin(alpha/2)/g),
                        step=n(2*vo*sin(alpha/2)/g)/100,ivar=t)#resolution numérique des équations avec frottement fluide (méthode Runge-Kutta d'ordre 4)
In [8]:
soll[:5]  # affichage des cinq premiers éléments solution numérique
Out[8]:

La solution renvoie une liste dont chaque élément est de la forme: $[t_i,x(t_i),y(t_i),vx(t_i),vy(t_i)]$

In [9]:
graph_l=line([(soll[i][1],soll[i][2]) for i in range(len(soll))],color='blue') 
#trajectoire avec frottement fluide
In [10]:
show(graph0+graph_l)

la méthode numérique utilisée pour le mouvement avec frottement fluide (RK4) redonne bien une trajectoire comparable à celle obtenue avec une résolution exacte (cf Ballistique 2).

In [11]:
solq=desolve_system_rk4([vx,vy,-beta*sqrt(vx^2+vy^2)*vx,-g-beta*sqrt(vx^2+vy^2)*vy],[x,y,vx,vy],
                        ics=[0,0,0,n(vo*cos(alpha/2)),n(vo*sin(alpha/2))],
                        end_points=n(2*vo*sin(alpha/2)/g),
                        step=n(2*vo*sin(alpha/2)/g)/100,
                        ivar=t) #résolution numérique des équations avec frottement quadratique
In [12]:
graph_q=line([(solq[i][1],solq[i][2]) for i in range(len(solq))],color='green')
In [13]:
show(graph0+graph_q)
In [ ]: