You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.2 KiB
Python
58 lines
1.2 KiB
Python
6 years ago
|
# -*-coding:Latin-1 -*
|
||
|
from math import *
|
||
|
print("Entrez la fréquence de coupure:")
|
||
|
frequence = input()
|
||
|
#print(f)
|
||
|
print("Entrez l'impédance d'entrée:")
|
||
|
impedance=input()
|
||
|
print("Entrez l'amplitude max:")
|
||
|
amplitude=input()
|
||
|
print("Entrez l'ordre du filtre:")
|
||
|
ordre=input()
|
||
|
#Calcul des paramètres
|
||
|
#Calcule de wc
|
||
|
wc=2*pi*frequence
|
||
|
#Calcul de b
|
||
|
b=log(cosh(amplitude/17.37)/sinh(amplitude/17.37))
|
||
|
#Calcul de gamma
|
||
|
gamma=sinh(b/(2*ordre))
|
||
|
#initialisation i
|
||
|
i=1
|
||
|
ak=[0]*ordre
|
||
|
bk=[0]*ordre
|
||
|
gk=[0]*ordre
|
||
|
#Cacule de ak
|
||
|
for i in range(ordre):
|
||
|
ak[i-1]=sin((2*(i-1)*pi)/(2*ordre))
|
||
|
#Calcul de bk
|
||
|
for i in range(ordre):
|
||
|
bk[i-1]=pow(gamma,2)+(sin(i*pi)/ordre)
|
||
|
print("test")
|
||
|
print(bk)
|
||
|
#Calcul de gk
|
||
|
|
||
|
gk[0] = ((2*ak[1])/gamma)
|
||
|
print(ak)
|
||
|
print(gk[0])
|
||
|
print(bk[0])
|
||
|
for i in range(ordre):
|
||
|
gk[i]=((4*ak[i-1]*ak[i])/(bk[i-1]*gk[i-1]))
|
||
|
#Calcul de ck et lk
|
||
|
if (ordre%2)==0:
|
||
|
for i in range(ordre):
|
||
|
lk[i]=(impedance/wc)*gk[i]
|
||
|
for i in range(ordre):
|
||
|
ck[i]=(1/impedance)*(1/wc)*gk[i-1]
|
||
|
else:
|
||
|
for i in range(ordre):
|
||
|
lk[i]=(impedance/wc)*gk[i-1]
|
||
|
for i in range(ordre):
|
||
|
ck[i]=(1/impedance)*(1/wc)*gk[i]
|
||
|
#Calcul de Rn
|
||
|
if ordre==1:
|
||
|
rn=1*impedance
|
||
|
else:
|
||
|
rn=pow((tanh(b/4)),2)
|
||
|
|
||
|
print(ck)
|