Bonjour à tous,

J'ai fait un programme en python, et quand je le lance, il me renvoie toujours une erreur de typage :

TypeError: can't convert complex to float; use abs(z)

J'ai essayé de tout convertir en complexe en mettant des 0j un peu partout sur les float que j'avais, mais ça ne marche toujours pas...

Voici mon code :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
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)
Merci beaucoup !

Cordialement,

P.