# -*- coding: utf-8 -*-
"""
Éditeur de Spyder

Ceci est un script temporaire.
"""
import numpy as np
import matplotlib.pyplot as plt


# Grandeurs expérimentales
f=np.array([10,30,100,300,1000,3000,10000,30000,100000])
Ue=np.array([2,2,2,2,2,2,2,2,2])
Us=np.array([2,1.9,1.8,0.3,0.1,0.03,0.01,0.003,0.001])
phi=np.array([0,-2,-10,-23,-42,-68,-87,-88,-90])

G=Us/Ue
Gdb=20*np.log10(G)
flog=np.log10(f)

#Tracé du diagramme de Bode

plt.close()
plt.subplot(1,2,1)
plt.plot(flog,Gdb,label='gain')
plt.title('Diagramme de Bode en gain')
plt.subplot(1,2,2)
plt.plot(flog,phi,label='phase')
plt.title('Diagramme de Bode en phase')
plt.legend()
plt.show()

#Autre méthode : fonction semilog
plt.figure()
plt.subplot(1,2,1)
plt.title('Diagramme de Bode en gain')
plt.semilogx(f,Gdb,label='gain')
plt.subplot(1,2,2)
plt.title('Diagramme de Bode en phase')
plt.semilogx(f,phi,label='phase')
plt.show()

# Gestion des asymptotes => Ordre du filtre et frequence de coupure
f2=f[3:]
Gdb2=Gdb[3:]

res=np.polyfit(f2,Gdb2,1)

print('ordre du filtre = ',-res[1]/20)
print('frequence de coupure en Hz = ',10**res[0])
# 
