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

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)