Capacité numérique. : 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
Nathan p 418
1ère ligne : initialisation de la période T 2ème ligne: création des valeurs de t (temps en ms). Ces valeurs varient de 0 à 4 ms. Il en est créé ici 400. Le code demande les valeurs des amplitudes du signal(A1 et A2). Il demande ensuite la phase à l'origine phi et calcule le signal reçu s1 pour chacune des valeurs de t calculées ligne1. On prend une phase à l'origine de 0 pour s1.
Le signal du bruit intérieur a pour expression:
s$_{1}$(t)= A$_{1}$ x cos($\frac{2\pi}{T}$t)
Sa phase à l'origine $\varphi$ est nulle.
Les deux sources S$_{1}$ et S$_{2}$ sont synchrones de période T.
Le signal de l'antibruit a pour expression:
Soit s$_{2}$(t)= a x cos($\frac{2\pi}{T}$t+ $\varphi$ )
Sa phase à l'origine est $\varphi$.
On appelle également $\varphi$ le déphasage de S$_{1}$ par rapport à S$_{2}$
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
#Initialisation des constantes
T=1 #la période vaut 1 ms
fréquence = 1/T soit 1000 Hz. C'est supérieur à 20Hz. le son est donc audible par l'oreille humaine.
A1= float(input('Amplitude du signal 1: A1 = '))
A2= float(input('Amplitude du signal 2: A2 = '))
#On souhaite faire varier la variable t (temps) entre 0 et 4 ms
# Pour cela , on crée un tableau de 4000 valeurs réparties de 0 à 4 pour l'axe des abscisses
t=np.linspace(0,4,4000)
#Création d'un tableau contenant les valeurs de s1(t)
s1=[]
for i in range(len(t)):
s1.append(A1*np.cos(2*np.pi*t[i]/T))
# Affichage de s1(t)
plt.xlabel("temps") #abscisse
plt.ylabel("signal") #ordonnée
plt.plot(t,s1,'b-',label='S1') # Tracé d'une ligne bleue b-
plt.title("Ondes reçues en M")
plt.legend()
plt.show()
phi=0
#Création d'un tableau contenant les valeurs de s1(t)
s1=[]
for i in range(len(t)):
s1.append(A1*np.cos(2*np.pi*t[i]/T))
#Création d'un tableau contenant les valeurs de s2(t)
s2=[]
for i in range(len(t)):
s2.append(A2*np.cos(2*np.pi*t[i]/T+phi))
#création du tableau contenant les valeurs de s(t)
s=[]
for i in range(len(t)):
s.append(s1[i]+s2[i])
# Affichage de s1(t), s2(t) et s(t)
plt.xlabel("temps")
plt.ylabel("signal")
plt.plot(t,s1,'b-',label='S1')
plt.plot(t,s2,'r-',label='S2')
plt.plot(t,s,'g-',label='S')
plt.title("Ondes reçues en M")
plt.legend()
plt.show()
phi=np.pi/2
#Création d'un tableau contenant les valeurs de s1(t)
s1=[]
for i in range(len(t)):
s1.append(A1*np.cos(2*np.pi*t[i]/T))
#Création d'un tableau contenant les valeurs de s2(t)
s2=[]
for i in range(len(t)):
s2.append(A2*np.cos(2*np.pi*t[i]/T+phi))
#création du tableau contenant les valeurs de s(t)
s=[]
for i in range(len(t)):
s.append(s1[i]+s2[i])
# Affichage de s1(t), s2(t) et s(t)
plt.xlabel("temps")
plt.ylabel("signal")
plt.plot(t,s1,'b-',label='S1')
plt.plot(t,s2,'r-',label='S2')
plt.plot(t,s,'g-',label='S')
plt.title("Ondes reçues en M")
plt.legend()
plt.show()
phi=np.pi
#Création d'un tableau contenant les valeurs de s1(t)
s1=[]
for i in range(len(t)):
s1.append(A1*np.cos(2*np.pi*t[i]/T))
#Création d'un tableau contenant les valeurs de s2(t)
s2=[]
for i in range(len(t)):
s2.append(A2*np.cos(2*np.pi*t[i]/T+phi))
#création du tableau contenant les valeurs de s(t)
s=[]
for i in range(len(t)):
s.append(s1[i]+s2[i])
# Affichage de s1(t), s2(t) et s(t)
plt.xlabel("temps")
plt.ylabel("signal")
plt.plot(t,s1,'b-',label='S1')
plt.plot(t,s2,'r-',label='S2')
plt.plot(t,s,'g-',label='S')
plt.title("Ondes reçues en M")
plt.legend()
plt.show()
même amplitude et déphasage pi: atténuation maximale
déphasage nul: atténuation minimale
déphasage intermédiaire: atténuation intermédiaire également.
Si l'amplitude est différente, il n'y a pas un signal nul. Elle reste maximale cependant. (Voir le doc"somme-de-deux-signaux-casque-anti-bruit-amplitudes-différentes")</font>
Conclusion : si l'on veut une atténuation maximale, donc un signal nul, il faut créer un anti-bruit de même amplitude que le bruit d'origine avec un déphasage de pi.