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.