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()
