from math import cos, sin, radians import matplotlib.pyplot as plt # modélisation m = 0.010 # kg x = 0.0 # m y = 0.0 # m angle = 73 # degrée vitesse = 7.0 # m/s Dt = 0.075 # s Fx = 0.0 # N Fy = -9.81 * m # N x_cible = 2.55 # m y_cible = 0.0 # m # projection vitesse sur les axes Vx = vitesse * cos( radians(angle) ) Vy = vitesse * sin( radians(angle) ) trajectoire_x = []; trajectoire_y = []; # vitesses vitesse_Vx = []; vitesse_Vy = []; # variation de vitesse delta_Vx = []; delta_Vy = []; # calcul de la position de proche en proche def positionSuivante( x,y,Vx,Vy,Fx,Fy,m, Dt): Vx = Vx + Fx / m * Dt Vy = Vy + Fy / m * Dt x = x + Vx * Dt y = y + Vy * Dt return x,y,Vx,Vy # calcul de la trajectoire, arrêt dès # que le projectile touche le sol while y >= 0: trajectoire_x.append( x ) trajectoire_y.append( y ) vitesse_Vx.append( Vx ) vitesse_Vy.append( Vy ) Vx_old = Vx Vy_old = Vy x,y,Vx,Vy = positionSuivante(x,y,Vx,Vy,Fx,Fy,m, Dt) delta_Vx.append( Vx - Vx_old ) delta_Vy.append( Vy - Vy_old ) # préparation du graphique fig, ax = plt.subplots() # tracé des vecteurs vitesse q = ax.quiver( trajectoire_x , trajectoire_y ,vitesse_Vx , vitesse_Vy , width=0.0025 ,color='b') ax.quiverkey(q, X=0.2, Y=1.05, U=10,label='échelle des vitesses \n $10~m.s^{-1}$',labelpos='N') # tracé des vecteurs variation de vitesse q = ax.quiver( trajectoire_x , trajectoire_y ,delta_Vx , delta_Vy , width=0.0025 ,color='r') ax.quiverkey(q, X=0.7, Y=1.05, U=1,label='variation de vitesse \n $1~m.s^{-1}$',labelpos='N') # tracé de la trajectoire ax.plot( trajectoire_x ,trajectoire_y , 'b.',markersize=7) ax.plot( x_cible ,y_cible , 'r*' ) # paramètres du graphique ax.set(xlim=(-0.1 , 3 ),ylim=(-0.1 , 3 ) ) ax.set_aspect('equal') plt.xlabel( "x /m") plt.ylabel( "y /m") fig.set_size_inches( 5 , 6 ) # édition du graphique plt.savefig( 'trajectoire.svg' ) plt.show()