python -cinématique

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

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *