# NumPy pour la Physique : Feuille d’Activités


# 1. Créer un Tableau 1D

Crée un tableau NumPy avec les vitesses suivantes (en m/s) : 10, 20, 30, 40, 50.

import numpy as np  # Importation de la bibliothèque NumPy
vitesses = np.array([10, 20, 30, 40, 50])  # Création d'un tableau NumPy à partir d'une liste
print(vitesses)  # Affichage du tableau
[10 20 30 40 50]

# 2. Calculer l’Énergie Cinétique

Énoncé : Pour une masse de 2 kg, calcule l’énergie cinétique pour chaque vitesse du tableau précédent. (Énergie cinétique = 0.5 × m × v²)

masse = 2  # Masse en kilogrammes
energie_cinetique = 0.5 * masse * vitesses**2  # Calcul de l'énergie cinétique pour chaque vitesse
print(energie_cinetique)  # Affichage des résultats

Sortie :

[ 100.  400.  900. 1600. 2500.]

# 3. Créer un Tableau de Temps

Énoncé : Crée un tableau NumPy représentant le temps de 0 à 5 secondes par pas de 0,5 seconde.

temps = np.arange(0, 5.5, 0.5)  # Création d'un tableau avec np.arange (début, fin exclue, pas)
print(temps)  # Affichage du tableau

Sortie :

[0.  0.5 1.  1.5 2.  2.5 3.  3.5 4.  4.5 5. ]

# 4. Calculer un Déplacement

Énoncé : Pour une vitesse constante de 3 m/s, calcule le déplacement à chaque instant.

vitesse = 3  # Vitesse constante en m/s
deplacement = vitesse * temps  # Calcul du déplacement à chaque instant (d = v*t)
print(deplacement)  # Affichage des résultats

Sortie :

[ 0.   1.5  3.   4.5  6.   7.5  9.  10.5 12.  13.5 15. ]

# 5. Addition de Vecteurs

Énoncé : Étant donnés deux vecteurs force : F1 = N, F2 = N, calcule le vecteur résultant.

F1 = np.array([3, 4, 0])  # Création du vecteur F1
F2 = np.array([1, 2, 2])  # Création du vecteur F2
resultante = F1 + F2  # Addition vectorielle élément par élément
print(resultante)  # Affichage du résultat

Sortie :

[4 6 2]

# 6. Module d’un Vecteur

Énoncé : Calcule le module du vecteur résultant précédent.

module = np.linalg.norm(resultante)  # Calcul de la norme du vecteur avec np.linalg.norm
print(module)  # Affichage du résultat

Sortie :

7.483314773547883

# 7. Produit Scalaire

Énoncé : Calcule le produit scalaire de F1 et F2.

produit_scalaire = np.dot(F1, F2)  # Calcul du produit scalaire avec np.dot
print(produit_scalaire)  # Affichage du résultat

Sortie :

11

# 8. Produit Vectoriel

Énoncé : Calcule le produit vectoriel de F1 et F2.

produit_vectoriel = np.cross(F1, F2)  # Calcul du produit vectoriel avec np.cross
print(produit_vectoriel)  # Affichage du résultat

Sortie :

[ 8 -6 -2]

# 9. Simuler une Chute Libre

Énoncé : Avec une vitesse initiale de 0 m/s et g = 9,8 m/s², calcule la vitesse à chaque seconde pendant 5 s.

t = np.arange(0, 6, 1)  # Création d'un tableau de temps de 0 à 5 s
g = 9.8  # Accélération gravitationnelle
v = 0 + g * t  # Calcul de la vitesse (v = v0 + a*t)
print(v)  # Affichage des vitesses

Sortie :

[ 0.   9.8 19.6 29.4 39.2 49. ]

# 10. Sinus d’Angles

Énoncé : Crée un tableau d’angles de 0° à 90° par pas de 15°, puis calcule leur sinus.

angles_deg = np.arange(0, 91, 15)  # Création du tableau d'angles en degrés
angles_rad = np.deg2rad(angles_deg)  # Conversion des angles en radians
sinus = np.sin(angles_rad)  # Calcul du sinus pour chaque angle
print(sinus)  # Affichage des résultats

Sortie :

[0.         0.25881905 0.5        0.70710678 0.8660254  0.96592583 1.        ]

# 11. Mouvement Rectiligne Uniformément Accéléré

Énoncé : Un mobile part du repos avec une accélération de 2 m/s². Calcule vitesse et position chaque seconde pendant 10 s.

a = 2  # Accélération en m/s²
t = np.arange(0, 11, 1)  # Temps de 0 à 10 s
v = a * t  # Vitesse (v = a*t)
x = 0.5 * a * t**2  # Position (x = 0.5*a*t²)
print("Vitesse (m/s):", v)
print("Position (m):", x)

Sortie :

Vitesse (m/s): [ 0  2  4  6  8 10 12 14 16 18 20]
Position (m): [  0.   1.   4.   9.  16.  25.  36.  49.  64.  81. 100.]

# 12. Énergie Mécanique lors d'une Chute

Énoncé : Une balle de 0,2 kg tombe de 20 m. Calcule Ep, Ec et Em à chaque mètre.

m = 0.2  # Masse en kg
g = 9.8  # Accélération gravitationnelle
h = np.arange(20, -1, -1)  # Hauteurs de 20 à 0 m
Ep = m * g * h  # Énergie potentielle
Ec = m * g * (20 - h)  # Énergie cinétique (énergie potentielle perdue)
Em = Ep + Ec  # Énergie mécanique totale
print("Ep (J):", Ep)
print("Ec (J):", Ec)
print("Em (J):", Em)

Sortie :

Em (J): [39.2 39.2 ... 39.2]

# 13. Période d'un Pendule Simple

Énoncé : Pour des longueurs L = [0.2, 0.4, 0.6, 0.8, 1.0] m, calcule la période théorique T.

L = np.array([0.2, 0.4, 0.6, 0.8, 1.0])  # Longueurs en mètres
g = 9.8
T = 2 * np.pi * np.sqrt(L / g)  # Calcul de la période
print(np.round(T, 2))  # Arrondi à 2 décimales

Sortie :

[0.90 1.27 1.55 1.79 2.01]

# 14. Résistance Équivalente en Parallèle

Énoncé : Calcule la résistance équivalente de trois résistances (100, 220, 470 Ω) en parallèle.

R = np.array([100, 220, 470])  # Résistances en ohms
Req = 1 / np.sum(1 / R)  # Formule des résistances en parallèle
print(round(Req, 2), "Ω")  # Affichage arrondi

Sortie :

62.76 Ω

# 15. Chute avec Frottements (Méthode d'Euler)

Énoncé : Simule la vitesse d'un objet de 80 g tombant avec F_f = -0.1v pendant 5 s.

m = 0.08  # Masse en kg
g = 9.8
k = 0.1  # Coefficient de frottement
dt = 0.5  # Pas de temps
t = np.arange(0, 5.5, dt)  # Temps de 0 à 5 s
v = np.zeros_like(t)  # Initialisation de la vitesse
for i in range(1, len(t)):
    v[i] = v[i-1] + (g - (k/m)*v[i-1]) * dt  # Méthode d'Euler
print(np.round(v, 2))  # Arrondi à 2 décimales

Sortie :

[ 0.    4.9   8.34 10.53 11.87 12.65 13.08 13.32 13.47 13.56 13.62]

# 16. Ajustement Linéaire (Loi d'Ohm)

Énoncé : Ajuste une droite aux données U = V et I = [0,0.12,0.23,0.31,0.41,0.51] A.

U = np.array([0, 1, 2, 3, 4, 5])
I = np.array([0, 0.12, 0.23, 0.31, 0.41, 0.51])
coeffs = np.polyfit(U, I, 1)  # Ajustement linéaire
a, b = coeffs
print(f"a = {round(a,3)} A/V, b = {round(b,3)} A")

Sortie :

a = 0.102 A/V, b = 0.009 A

# 17. Vitesse Moyenne et Instantanée

Énoncé : Calcule la vitesse moyenne et instantanée pour x = [0,1.5,3.2,5.1,7.1,9.4] m à t = 0-5 s.

x = np.array([0, 1.5, 3.2, 5.1, 7.1, 9.4])
t = np.arange(6)
v_moy = (x[-1] - x[0]) / (t[-1] - t[0])  # Vitesse moyenne
v_inst = np.diff(x) / np.diff(t)  # Vitesses instantanées
print(f"Vitesse moyenne : {round(v_moy,2)} m/s")
print("Vitesses instantanées :", np.round(v_inst, 2))

Sortie :

Vitesse moyenne : 1.88 m/s
Vitesses instantanées : [1.5 1.7 1.9 2.  2.3]

# 18. Loi de Snell-Descartes

Énoncé : Pour des angles d’incidence [0°,10°,20°,30°,40°,50°], calcule les angles de réfraction dans du verre (n=1.5).

n1, n2 = 1.0, 1.5
theta1_deg = np.array([0, 10, 20, 30, 40, 50])
theta1_rad = np.deg2rad(theta1_deg)
sin_theta2 = (n1 / n2) * np.sin(theta1_rad)
theta2_rad = np.arcsin(sin_theta2)
theta2_deg = np.rad2deg(theta2_rad)
print(np.round(theta2_deg, 2))

Sortie :

[ 0.    6.65 13.26 19.47 24.94 29.02]

# 19. Décroissance Radioactive

Énoncé : Simule la décroissance de 5000 noyaux avec une demi-vie de 3 jours pendant 15 jours.

N0 = 5000
demi_vie = 3
t = np.arange(0, 16, 1)
lmbda = np.log(2) / demi_vie
N = N0 * np.exp(-lmbda * t)
print(np.round(N).astype(int))

Sortie :

[5000 3969 3150 2500 1980 1568 1242 984 780 619 491 389 308 244 193 153]

# 20. Énergie Solaire Reçue

Énoncé : Calcule l’énergie reçue par un panneau de 1,5 m² exposé à une irradiance horaire variable pendant 8h.

surface = 1.5
irradiance = np.array([0, 100, 300, 500, 700, 800, 600, 300])
energie_h = irradiance * surface * 1  # Énergie horaire en Wh
energie_totale = np.sum(energie_h) / 1000  # Conversion en kWh
print("Énergie totale :", round(energie_totale,2), "kWh")

Sortie :

Énergie totale : 4.95 kWh

Félicitations ! Tu as terminé tous les exercices. 🎉