1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
def coefficients_ref_trans(n, z1, z2, k, K1, K2, D, Z0):
""" n est le nombre total de cables coaxiaux,
z1 est l'impédance du cable de type 1,
z2 est l'impédance du cable de type 2,
w est la pulsation du signal,
K est le coefficient d'atténuation du matériau,
D est la longueur d'une portion homogène de câble,
Z0 est l'impédance de l'oscilloscope """
import math
""" On suppose que le dernier câble du montage est de type 2 """
d = k*D
r = (z2 - Z0)/(z2 + Z0) +0j
t = 2*z2/(z2 + Z0) +0j
r12 = (z1 - z2)/(z1 + z2)+0j
r21 = -r12
t12 = 2*z1/(z1 + z2)+0j
t21 = 2*z2/(z1 + z2)+0j
K=0
C=0
for i in range(1,n):
r2p = r+0j
t2p = t+0j
if C == 0:
r1m = r21
r1p = r12
t1p = t12
t1m = t21
K = K2
elif C == 1:
r1m = r12
r1p = r21
t1p = t21
t1m = t12
K = K1
else:
raise ValueError, "Une erreur est survenue lors de l'exécution du programme"
t = (t1p*t2p*math.exp(d*1j-K*D))/(1-r1m*r2p*math.exp(2*d*1j-2*K*D))
r = r1p + (t1p*t1m*r2p*math.exp(2*d*1j-2*K*D))/(1-r1m*r2p*math.exp(2*d*1j-2*K*D))
C = 1-C
return (r,t) |
Partager