mouvement balistique : résolution numérique ()

Transcription

mouvement balistique : résolution numérique ()
Balistique3 -- Sage
Balistique3
MOUVEMENT BALISTIQUE AVEC FROTTEMENT FLUIDE OU QUADRATIQUE
g=10;vo=1;alpha=pi/2;#masse égale à l'unité
h=10;beta=10
#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]
[D[0, 0] (x) (t) = 0, D[0, 0] (y) (t) = (−10)]
sol0x=desolve(eq0x,x,ics=[0,0,vo*cos(alpha/2)])
équations du mvt sans frottement
sol0y=desolve(eq0y,y,ics=[0,0,vo*sin(alpha/2)])
# résolution analythique des
[sol0x,sol0y]
[
1
1
√2t, −5 t2 + √2t]
2
2
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 doit les résoudre analythiquement.
Il est possible d'utiliser avec SAGE une methode de Runge Kunta d'ordre 4.
(x,y,vx,vy)=var('x,y,vx,vy')
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)
soll
#solution du mouvement avec frottement fluide (équation linéaire)
[[0, 0, 0, 0.707106781186548, 0.707106781186548] , [0.00141421356237, 0.00099296214767, 0.0009830091
graph_l=line([(soll[i][1],soll[i][2]) for i in range(len(soll))],color='blue')
#trajectoire avec frottement fluide
show(graph0+graph_l)
Balistique3 -- Sage
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).
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
graph_q=line([(solq[i][1],solq[i][2]) for i in range(len(solq))],color='green')
show(graph0+graph_l+graph_q)
La courbe bleue correspond aux frottements linéaires et la verte aux frottements quadratique.

Documents pareils