L’exercice ci-dessous sert de support pour revoir les bases du langage python pour la physique.
Exercice 1
- corrigé homme canon 1
1- L'équation horaire z=0 sous entend :
z(t)=0 quel que soit t
La trajectoire est donc plane et se situe dans le plan xoy
2-
3-Il faut placer le matelas à une distance d du canon (en O) égale à l'abscisse du point d'intersection de la courbe avec l'axe des abscisses.
d=84m
Trouver la position x de l’homme canon pour t=1s puis afficher le résultat.
t=1 x=20*t print(x)
Afficher les valeurs de t toutes les 0.5s de 0 à 4s avec une boucle for puis avec une boucle while.
t=0 for i in range(9): print(t) t=t+0.5
t=0 while t<=4 : print(t) t=t+0.5
Utilisation d’une liste(tableau)
temps=[] temps.append(0.5) print(temps) temps.append(1) print(temps)
Utiliser un tableaux pour enregistrer les valeurs de t de 0 à 5s toutes les 0.5s
temps=[] t=0 for i in range(9): temps.append(t) t=t+0.5 print(temps)
Afficher la 3ème valeur du tableau
print(temps[2])
Déclarer et utiliser la fonction x(t)=20*t
def x(t): return 20*t print(x(1))
Calculer et mémoriser dans des tableaux les valeurs de x et y et t pour t allant de 0 à 4s toutes les 0.5s
# on déclare les fonctions def x(t): return 20*t def y(t): yc=-4.9*t**2+20*t+2.5 return yc # on génère le tableau temps avec les valeurs ti de t temps=[] t=0 for i in range(9): temps.append(t) t=t+0.5 # on génère le tableau x_tab avec les valeurs de x(ti) x_tab=[] for i in range(9): x_tab.append(x(temps[i])) # on génère le tableau y_tab avec les valeurs de y(ti) y_tab=[] for i in range(9): yc=y(temps[i]) yc=round(yc,2) y_tab.append(yc) # affichage des résultats print('t= ',temps) print('x= ',x_tab) print('y= ',y_tab)
Autre méthode : listes en compréhension
def x(t): return 20*t def y(t): return -4.9*t**2+20*t+2.5 t_tab=[i/2 for i in range(9)] x_tab=[x(val) for val in t_tab] y_tab=[round(y(val),2) for val in t_tab] print('t_tab = ',t_tab) print('x_tab = ',x_tab) print('y_tab = ',y_tab)
Remplacer l’affichage précédent par le tracé du nuage de points
# on déclare les fonctions def x(t): return 20*t def y(t): yc=-4.9*t**2+20*t+2.5 return yc # on génère le tableau temps avec les valeurs ti de t temps=[] t=0 for i in range(9): temps.append(t) t=t+0.5 # on génère le tableau x_tab avec les valeurs de x(ti) x_tab=[] for i in range(9): x_tab.append(x(temps[i])) # on génère le tableau y_tab avec les valeurs de y(ti) y_tab=[] for i in range(9): yc=y(temps[i]) yc=round(yc,2) y_tab.append(yc) # visualisation des résultats import matplotlib.pyplot as plt plt.grid() plt.scatter(x_tab, y_tab,c='green') plt.show()
Affichage 3D du nuage de points
from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt # on déclare les fonctions def x(t): return 20*t def y(t): yc=-4.9*t**2+20*t+2.5 return yc # on génère le tableau temps avec les valeurs ti de t temps=[] t=0 for i in range(9): temps.append(t) t=t+0.5 # on génère le tableau x_tab avec les valeurs de x(ti) x_tab=[] for i in range(9): x_tab.append(x(temps[i])) # on génère le tableau y_tab avec les valeurs de y(ti) y_tab=[] for i in range(9): yc=y(temps[i]) yc=round(yc,2) y_tab.append(yc) # visualisation des résultats fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.scatter(x_tab,0, y_tab, c='green', marker='o') ax.set_xlabel('X ') ax.set_ylabel('Z') ax.set_zlabel('Y ') plt.show()
- corrigé homme canon 2
1_
2-
3-
voir question 1:
ax=0 et ay=-9.8 quel que soit t
Le vecteurs accélération
est donc constant.
Le mouvement est donc uniformément varié.
Il est uniformément retardé pendant la phase de montée et uniformément accéléré pendant la phase de descente.
import math t_tab=[i/2 for i in range(9)] x_tab=[20*t for t in t_tab] y_tab=[round(-4.9*t**2+20*t+2.5,2) for t in t_tab] vx_tab=[20 for t in t_tab] vy_tab=[round(-9.8*t+20,2) for t in t_tab] #valeurs de v avec un arrondi à 1 chiffre après la virgule v_tab=[round(math.sqrt(vx_tab[i]**2+vy_tab[i]**2),1) for i in range(9)] print("t =" ,t_tab) print("x =" ,x_tab) print("y =" ,y_tab) print("vx =" ,vx_tab) print("vy =" ,vy_tab) print("v =" ,v_tab)
import matplotlib.pyplot as plt from pylab import * t_tab=[i/2 for i in range(9)] x_tab=[20*t for t in t_tab] y_tab=[-4.9*t**2+20*t+2.5 for t in t_tab] vx_tab=[20 for t in t_tab] vy_tab=[-9.8*t+20 for t in t_tab] ax_tab=[0 for t in t_tab] ay_tab=[-9.8 for t in t_tab] ax = gca() ax.axis([ -10, 100, -20, 30 ]) plt.grid() plt.scatter(x_tab, y_tab,c='blue') traceVec = ax.quiver(x_tab, y_tab,vx_tab,vy_tab, angles='xy', scale_units='xy', scale=1,color='red') traceVec = ax.quiver(x_tab, y_tab,ax_tab,ay_tab, angles='xy', scale_units='xy', scale=1,color='green') plt.show()