Objectif de la fiche : représenter, à l'aide d'un langage de programmation, la somme de deux signaux sinusoïdaux périodiques synchrones en faisant varier la phase à l'origine de l'un des deux, pour visualiser le phénomène d'interférences en un point donné.
Cette fiche est autonome : tu n'as besoin d'aucun autre document. Chaque étape contient un script incomplet à compléter, puis à copier-coller dans Thonny (ou dans la console Basthon tout en bas de la page si tu n'as pas Thonny sous la main).
Contexte : superposer deux ondes
- Quand deux signaux sinusoïdaux de même fréquence (on dit synchrones) se superposent en un point donné, le signal résultant dépend fortement de leur déphasage — le décalage entre l'un et l'autre.
- Cette fiche simule deux signaux de même amplitude et de même période, et observe leur somme pour différentes valeurs de ce déphasage : c'est exactement le phénomène à l'œuvre dans les interférences, qu'elles soient lumineuses, sonores, ou mécaniques.
Construire une sinusoïde
- Choisis une pulsation
w = 10, et une base de tempsltavecnp.linspace(0, 2, 1000)(1000 instants entre 0 et 2 secondes). - Définis une fonction
s1(t)qui renvoienp.sin(w*t)— le premier signal sinusoïdal. - Trace
s1(lt)en fonction delt, en bleu ('b-'), avec la légende'S1', les étiquettes"temps"/"signal"et le titre"sinusoïde seule".
import numpy as np
import matplotlib.pyplot as plt
w = __
lt = np.linspace(_, _, ____)
# TODO : premier signal sinusoïdal
def s1(t) :
return np.sin(_*t)
# TODO : trace s1 en fonction du temps
plt.plot(__, s1(__), '__', label='__')
plt.xlabel("_____")
plt.ylabel("______")
plt.title("______________")
plt.legend()
plt.show()
Une sinusoïde bleue classique, oscillant entre -1 et 1, qui effectue un peu plus de 3 périodes complètes sur les 2 secondes affichées.
Ajouter un second signal déphasé
- Choisis un déphasage
phi = 2(en radians), puis définiss2(t), qui renvoienp.sin(w*t + phi)— le même signal ques1, mais décalé. - Trace
s1ets2sur le même graphe :s1en bleu avec la légende'S1',s2en vert ('g-') avec la légende'S2'.
phi = _
# TODO : second signal, identique à s1 mais déphasé de phi
def s2(t) :
return np.sin(w*t + ___)
plt.plot(lt, s1(lt), '__', label='__')
plt.plot(__, s2(__), '__', label='__')
plt.xlabel("temps")
plt.ylabel("signal")
plt.title("sinusoïdes déphasées")
plt.legend()
plt.show()
Deux sinusoïdes de même forme, mais visiblement décalées l'une par rapport à l'autre : là où S1 atteint son maximum, S2 ne l'a pas encore atteint (ou l'a déjà dépassé, selon le signe de phi).
Calculer et tracer la somme
- Définis une fonction
somme(t), qui renvoies1(t) + s2(t). - Trace les trois courbes ensemble :
S1en bleu,S2en vert, etS1+S2en rouge ('r-').
phi = 2
# TODO : fonction somme des deux signaux
def somme(t) :
return _____ + _____
plt.plot(lt, s1(lt), 'b-', label='S1')
plt.plot(lt, s2(lt), 'g-', label='S2')
plt.plot(__, somme(__), '__', label='____')
plt.xlabel("temps")
plt.ylabel("signal")
plt.title("sinusoïdes déphasées")
plt.legend()
plt.show()
La courbe rouge S1+S2 est elle-même une sinusoïde (une propriété remarquable : la somme de deux sinusoïdes synchrones est toujours une sinusoïde de même fréquence), mais avec une amplitude et une phase différentes de celles de S1 et S2 pris séparément.
Explorer différentes valeurs de phi
- Modifie « à la main » la valeur de
phitout en haut du script (par exemple0.5, puis4, puis3.14), et relance l'affichage à chaque fois pour observer l'effet sur la courbeS1+S2.
Ce que tu devrais observer
| valeur de phi | 0,5 | 4 | 3,14 (≈ π) |
|---|---|---|---|
| amplitude de S1+S2 | proche de 2 (presque en phase) | intermédiaire | quasiment nulle |
Pour phi ≈ π, les deux signaux sont en opposition de phase : quand l'un est à son maximum, l'autre est à son minimum. Leur somme s'annule alors presque complètement — deux signaux non nuls qui s'effacent mutuellement. C'est le phénomène d'interférences destructives.
Automatiser l'exploration avec une boucle for
- Plutôt que de changer
phià la main, crée une liste de valeurs à explorer aveclphi = np.linspace(0, np.pi, 7)(7 valeurs régulièrement réparties entre 0 et π). - Dans une boucle
for phi in lphi :, tracesomme(lt)en fonction delt, avec une légende dynamique qui indique la valeur dephiutilisée :label = 'phi=' + str(round(phi, 1))convertit le nombre en texte pour pouvoir l'assembler avec le reste de la légende. - N'oublie pas que
sommeutilise la variablephidéfinie à l'extérieur de la fonctions2: c'est parce quephichange à chaque tour de boucle que chaque courbe tracée sera différente.
# TODO : 7 valeurs de déphasage entre 0 et π
lphi = np.linspace(_, np.pi, _)
for phi in ____ :
plt.plot(lt, somme(lt), label='____' + str(round(___, 1)))
plt.xlabel("temps")
plt.ylabel("signal")
plt.title("sinusoïdes déphasées")
plt.legend()
plt.show()
Indice
str(round(phi, 1)) convertit un nombre en texte, arrondi à 1 décimale : c'est nécessaire car l'opérateur + entre une chaîne de caractères ('phi=') et un nombre provoquerait une erreur si le nombre n'était pas d'abord converti en texte.
Sept courbes superposées, d'amplitude décroissante à mesure que phi se rapproche de π : la dernière courbe (phi ≈ 3,1) est presque plate, collée à zéro — la signature visuelle des interférences destructives.
Conclusion
- Le déphasage entre deux sinusoïdes synchrones a un impact direct et visible sur la valeur de leur somme, aussi bien sur son amplitude que sur sa phase.
- Deux sinusoïdes non nulles peuvent avoir une somme nulle lorsqu'elles sont en opposition de phase : c'est le phénomène d'interférences destructives, une conséquence directe et purement mathématique du principe de superposition, applicable à toute onde synchrone (lumineuse, sonore, mécanique...).
Pense-bête — superposer des signaux
| np.sin(w*t + phi) | sinusoïde de pulsation w, déphasée de phi |
| np.linspace(0,np.pi,n) | n valeurs régulières entre 0 et π |
| str(round(x,1)) | convertit un nombre en texte pour une légende |
| phi ≈ 0 | interférences constructives (somme maximale) |
| phi ≈ π | interférences destructives (somme quasi nulle) |
| somme de sinusoïdes synchrones | toujours une sinusoïde de même fréquence |
Pas de Thonny sous la main ? Utilise Basthon
Ouvrir dans un nouvel onglet ↗Ctrl+V ou Cmd+V) le code copié avec les boutons « Copier le code » ci-dessus, puis appuie sur Entrée pour l'exécuter.