IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Perte en cours de programme des modules importés


Sujet :

Python

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Août 2008
    Messages : 125
    Par défaut Perte en cours de programme des modules importés
    Bonjour,
    je suis autodidacte, depuis 1 semaine, en programmation Python. Je l'utilise pour des calculs.
    mais je rencontre un bug, que j'arrive à contourner, mais je trouve cela assez bizzare.

    ci dessous mon programme


    from cmath import *
    from mst.GUM.complex.gum import *
    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
    46
    47
    48
    49
    50
    51
     
    C = Context()
    _J_ = C.constant(0+1j)
     
    A = C.gaussian(1.52e-3,uAbsolute([0.02e-3,0.0])) # Petit diamètre
    B = C.gaussian(3.50e-3,uAbsolute([0.02e-3,0.0])) # Grand diamètre
    a = A/2 # Petit rayon
    b = B/2 # Grand rayon
    c = 299792458 # Célérité
    µ = 4*pi*1e-7 # Perméabilité
    E0 = 1/µ/c**2 # Permittivité dans le vide
    E = 1.000649*E0 # Permittivité dans le matériau
    rho = 22e-9 # Résistivité
     
    r = b/a # Rapport des rayons
    F1 = (r**2-1)/(2*log(r))
    F2 = (r)*log(r)/(r+1)
    F0 = F1-F2-0.5*(r+1)
    L0 = µ*log(r)/2/pi # Inductance linéique sans perte
    C0 = 2*pi*E/log(r) # Capacité linéique sans perte
     
    startF = 18e9
    stopF= 26.5e9
    numberP = 21
     
    print "Calcul des caractéristiques d'une ligne à air"
    print "valeur de a = ", result(a)
    print "valeur de b = ", result(b)
    print "valeur de µ = ", result(µ)
    print "valeur de E = ", result(E)
    print "valeur de r = ", result(r)
    print "C0 =", result(C0)
    print "L0 =", result(L0)
     
    gammeF = range(1,numberP,1)
    for i in gammeF:
     
        print 'i=',i
        #f = 18e9
        f = startF + (i-1)*(stopF-startF)/(numberP-1)
        print 'f=',f
        w = 2*pi*f              #pulsation
        print 'w =',w
        k = w*sqrt(L0*C0)      #nombre d'onde angulaire
        print 'k =',value(k)
        d1 = 2*rho/w/µ
        print 'd1 =', d1
        from math import *
        d2 = sqrt(d1)
        print d2
        ds = sqrt(2*rho/w/µ)   #épaisseur de peau
    mon problème vient de la 4ème ligne (en partant de la fin), en effet je suis obligée de réimporter mon module, pour que cela fonctionne. A quoi cela est dû ?

    je vous remercie par avance de votre aide.

    Patricia

  2. #2
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    NE JAMAIS FAIREça pollue ton espace de nom, ça complexifie ton code.
    Utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import math
    import mst.GUM.complex.gum as gum
     
    math.sqrt(...
    Et ça facilite la relecture du code même si cela peut paraitre pénible à l'écriture.

    Essaye en modifiant tes imports et dis nous si ton problème persiste.

  3. #3
    Membre émérite Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Par défaut
    mon problème vient de la 4ème ligne (en partant de la fin), en effet je suis obligée de réimporter mon module, pour que cela fonctionne. A quoi cela est dû ?
    Que se passe-t'il si tu ne fait pas d'import ? Message d'erreur ? Si oui lequel ?

    edit: oui surtout quand on importe 2 modules de maths qui peuvent contenir des fonctions de même nom (ex. math -> sqrt sur les floats et complex.gum -> sqrt sur les complexes !!!)

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Août 2008
    Messages : 125
    Par défaut si je ne fais pas l'importation
    voilà ce que j'obtiens:
    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
    Calcul des caractéristiques d'une ligne à air
    valeur de a =  ((0.00076000000000000004+0j), matrix([[  1.00000000e-10,   0.00000000e+00],
            [  0.00000000e+00,   0.00000000e+00]]), -1)
    valeur de b =  ((0.00175+0j), matrix([[  1.00000000e-10,   0.00000000e+00],
            [  0.00000000e+00,   0.00000000e+00]]), -1)
    valeur de µ =  (1.2566370614359173e-006, matrix([[ 0.,  0.],
            [ 0.,  0.]]), -1)
    valeur de E =  (8.8599341855140252e-012, matrix([[ 0.,  0.],
            [ 0.,  0.]]), -1)
    valeur de r =  ((2.3026315789473681+0j), matrix([[ 0.00109109,  0.        ],
            [ 0.        ,  0.        ]]), -1)
    C0 = ((6.6744718560790473e-011+0j), matrix([[  1.31782253e-24,   0.00000000e+00],
            [  0.00000000e+00,   0.00000000e+00]]), -1)
    L0 = ((1.6681052672743658e-007+0j), matrix([[  8.23133021e-18,   0.00000000e+00],
            [  0.00000000e+00,   0.00000000e+00]]), -1)
    i= 1
    f= 18000000000.0
    w = 113097335529.0
    k = (377.374502403+0j)
    d1 = 3.09592505574e-013
    
    Traceback (most recent call last):
      File "T:/Mesure dimensionnelle Paramètre S/Programme Python/Ligne test.py", line 51, in <module>
        d2 = sqrt(d1)
      File "C:\Python25\lib\site-packages\mst\GUM\_fixed_nodes.py", line 103, in __init__
        self._fill( self._T )
      File "C:\Python25\lib\site-packages\mst\GUM\_fixed_nodes.py", line 33, in _fill
        self._context = node.getContext()
      File "C:\Python25\lib\site-packages\mst\GUM\_bases.py", line 84, in getContext
        return self.arg.getContext()
    AttributeError: 'float' object has no attribute 'getContext'
    je teste ce que vous me proposez et je vous redis cela

    merci bcp de votre aide

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Août 2008
    Messages : 125
    Par défaut Merci ça marche
    voilà ce que j'ai fait :
    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
    46
    47
    48
    49
    50
    51
    52
    import cmath
    from mst.GUM.complex.gum import *
     
    C = Context()
    _J_ = C.constant(0+1j)
     
    A = C.gaussian(1.52e-3,uAbsolute([0.02e-3,0.0])) # Petit diamètre
    B = C.gaussian(3.50e-3,uAbsolute([0.02e-3,0.0])) # Grand diamètre
    a = A/2 # Petit rayon
    b = B/2 # Grand rayon
    c = 299792458 # Célérité
    µ = 4*cmath.pi*1e-7 # Perméabilité
    E0 = 1/µ/c**2 # Permittivité dans le vide
    E = 1.000649*E0 # Permittivité dans le matériau
    rho = 22e-9 # Résistivité
     
    r = b/a # Rapport des rayons
    F1 = (r**2-1)/(2*log(r))
    F2 = (r)*log(r)/(r+1)
    F0 = F1-F2-0.5*(r+1)
    L0 = µ*log(r)/2/cmath.pi # Inductance linéique sans perte
    C0 = 2*cmath.pi*E/log(r) # Capacité linéique sans perte
     
    startF = 18e9
    stopF= 26.5e9
    numberP = 21
     
    print "Calcul des caractéristiques d'une ligne à air"
    print "valeur de a = ", result(a)
    print "valeur de b = ", result(b)
    print "valeur de µ = ", result(µ)
    print "valeur de E = ", result(E)
    print "valeur de r = ", result(r)
    print "C0 =", result(C0)
    print "L0 =", result(L0)
     
    gammeF = range(1,numberP,1)
    for i in gammeF:
        print 'i=',i
        #f = 18e9
        f = startF + (i-1)*(stopF-startF)/(numberP-1)
        print 'f=',f
        w = 2*cmath.pi*f              #pulsation
        print 'w =',w
        k = w*sqrt(L0*C0)      #nombre d'onde angulaire
        print 'k =',value(k)
        d1 = 2*rho/w/µ
        print 'd1 =', d1
        d2 = cmath.sqrt(d1)
        print d2
        ds = cmath.sqrt(2*rho/w/µ)   #épaisseur de peau
        print 'épaisseur de peau de ligne : ds=',result(ds)
    merci encore pour votre aide et votre réactivité

    Patricia

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut euh....
    1- Essayé de faire tourner le dernier code donné.
    Caractère µ pas reconnu et Python n'a pas proposé de rajouter une instruction pour modifier l'encodage.
    Obligé de changer µ en mu.
    Comment faire pour modifier l'encodage pour prise en compte de µ ?


    2- Code modifié, avec mu

    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
    46
    47
    48
    49
    50
    51
    52
    53
    import cmath
    from mst.GUM.complex.gum import *
     
    C = Context()
    _J_ = C.constant(0+1j)
     
    A = C.gaussian(1.52e-3,uAbsolute([0.02e-3,0.0])) # Petit diamètre
    B = C.gaussian(3.50e-3,uAbsolute([0.02e-3,0.0])) # Grand diamètre
    a = A/2 # Petit rayon
    b = B/2 # Grand rayon
    c = 299792458 # Célérité
    mu = 4*pi*1e-7 # Perméabilité
    E0 = 1/mu/c**2 # Permittivité dans le vide
    E = 1.000649*E0 # Permittivité dans le matériau
    rho = 22e-9 # Résistivité
     
    r = b/a # Rapport des rayons
    F1 = (r**2-1)/(2*log(r))
    F2 = (r)*log(r)/(r+1)
    F0 = F1-F2-0.5*(r+1)
    L0 = mu*log(r)/2/pi # Inductance linéique sans perte
    C0 = 2*pi*E/log(r) # Capacité linéique sans perte
     
    startF = 18e9
    stopF= 26.5e9
    numberP = 21
     
    print "Calcul des caractéristiques d'une ligne à air"
    print "valeur de a = ", result(a)
    print "valeur de b = ", result(b)
    print "valeur de mu = ", result(mu)
    print "valeur de E = ", result(E)
    print "valeur de r = ", result(r)
    print "C0 =", result(C0)
    print "L0 =", result(L0)
     
    gammeF = range(1,numberP,1)
    for i in gammeF:
     
        print 'i=',i
        #f = 18e9
        f = startF + (i-1)*(stopF-startF)/(numberP-1)
        print 'f=',f
        w = 2*pi*f              #pulsation
        print 'w =',w
        k = w*sqrt(L0*C0)      #nombre d'onde angulaire
        print 'k =',value(k)
        d1 = 2*rho/w/mu
        print 'd1 =', d1
        from math import *
        d2 = sqrt(d1)
        print d2
        ds = sqrt(2*rho/w/mu)   #épaisseur de peau

    "ImportError: No module named mst.GUM.complex.gum"

    Où trouve-t-on le module gum ? J'ai fait des recherches sans résultat.


    -------------------

    Comment avez-vous réussi à faire tourner ce code ???
    Merci


    EDIT: remplacé 'encoding' par 'encodage'.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Août 2008
    Messages : 125
    Par défaut Gum
    est un module créé par un suedois je crois, je ne peux te donner ce module sans son autorisation, sachant qu'il a déposé un brevet pour cela, mais pas en europe...
    pas évident pour de t'informer.
    Mais effectivement mon programme tourne presque avec mu et non µ.
    Maintenant le soucis c'est que mes calculs sont tellement lourds que ça prend de la mémoire, et ça plante

    Je remercie la communauté developpez pour pour les Cours et tutoriels pour apprendre la programmation Python , en particulier
    celui la est très bien fait : Apprendre à programmer avec Python 3 par Gérard Swinnen



    Patricia

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Import modules en cours de programme
    Par Nadelf dans le forum Général Python
    Réponses: 11
    Dernier message: 19/05/2014, 11h15
  2. Cartographie de l'exécution des modules importés
    Par DrWaste dans le forum Général Python
    Réponses: 2
    Dernier message: 21/10/2011, 09h43
  3. conseil pour la programmation des modules kernel
    Par rufa11 dans le forum Applications et environnements graphiques
    Réponses: 0
    Dernier message: 25/10/2008, 16h50
  4. Import des modules inclus dans PyQt4
    Par VinsS dans le forum PyQt
    Réponses: 1
    Dernier message: 20/10/2008, 15h54
  5. Réponses: 0
    Dernier message: 02/08/2007, 10h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo