Activité
Simuler des interférences
Consigne
Ouvrez la page des scripts du chapitre pour consulter le code et télécharger les fichiers .py.
Le script Ch11_interferences.py (dossier scripts/) additionne deux signaux sinusoïdaux de même période et et trace leur somme , pour un déphasage que l’on fait varier — exactement la situation d’un point de l’écran où arrivent les deux ondes des fentes d’Young. Il s’exécute tel quel (EduPython), à deux lignes près (# À COMPLÉTER).
Questions :
- Compléter la ligne de la somme, puis celle de l’amplitude de .
- Exécuter pour : que vaut l’amplitude de la somme ? À quel type de point de l’écran cela correspond-il (brillant ou sombre) ?
- Recommencer pour . Conclure sur le lien entre déphasage et figure d’interférences.
- Le déphasage est lié à la différence de marche par . Quelle valeur de (en fonction de ) donne ? Retrouve-t-on la condition de frange sombre du cours ?
Fiche O5 — Python. Boucle while, listes et append, math.sin, max/min, tracé de plusieurs courbes : tout y est rappelé.
Script élève
# -*- coding: utf-8 -*-
# Ch11 - Interférences : addition de deux sinusoïdes de même période.
# Modélise deux ondes arrivant en un point de l'écran (fentes d'Young).
# À COMPLÉTER : 2 lignes (repérées par # À COMPLÉTER).
import math
import matplotlib.pyplot as plt
A = 1.0 # amplitude commune
T = 1.0 # période commune
phi = math.pi # déphasage de s2 (rad) : essayer 0, math.pi/2, math.pi
temps = []
s1 = []
s2 = []
S = []
t = 0.0
while t <= 3.0:
y1 = A * math.sin(2 * math.pi * t / T)
y2 = A * math.sin(2 * math.pi * t / T + phi)
y = 0 # somme des deux signaux # À COMPLÉTER
temps.append(t)
s1.append(y1)
s2.append(y2)
S.append(y)
t = t + 0.02
S_min = S[0]
S_max = S[0]
for valeur in S:
if valeur < S_min:
S_min = valeur
if valeur > S_max:
S_max = valeur
amplitude_S = 0 # (S_max - S_min) / 2 # À COMPLÉTER
print("phi =", phi, "rad -> amplitude de la somme =", amplitude_S)
plt.plot(temps, s1, linestyle="--", label="s1")
plt.plot(temps, s2, linestyle=":", label="s2")
plt.plot(temps, S, linewidth=2, label="S = s1 + s2")
plt.xlabel("t")
plt.ylabel("signal")
plt.legend()
plt.grid(True)
plt.show()