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

Fortran Discussion :

[Fortran 77] Fonction complexe


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    386
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 386
    Par défaut [Fortran 77] Fonction complexe
    Salut pour tous,
    J'ai écrit une fonction qui calcule la fonction suivante : exp(i(kx+\bar(k)\bar(x))) (\bar c'est le conjugué complexe)
    Mais quand j'utilise ma fonction, elle ne donne que la partie réelle de la réponse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmplx expr CEXP(-II*K*X-II*CONJG(K)..... truncated to real EXPP
    Et voila ma fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            function expp(k,x)
            complex k,x,ii
            ii=cmplx(0.,1.)
            expp=cexp(-ii*k*x-ii*conjg(k)*conjg(x))
            return
            end
    Alors où est le problème ? J'ai essayé beaucoup, mais ....
    Merci

  2. #2
    Membre éclairé
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Août 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 57
    Par défaut
    Je rajouterai bien un:

    dans la déclaration des variables de la fonction.
    Sinon, elle est déclarée implicitement comme un REAL.

    (ou bien:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    COMPLEX FUNCTION expp(...)
    )

    Entre parenthèses, mettre IMPLICIT NONE au début de toutes fonctions, sous-routines ou programme principal est une saine habitude qui t'aurait évité ce déboire.

  3. #3
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    386
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 386
    Par défaut
    on a utiliser comme tu as dit, mais toujours pas resolu , j ai eu ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     C:\Documents and Settings\Toufic ARWADI\Desktop\eeee.f: In program `h':
    C:\Documents and Settings\Toufic ARWADI\Desktop\eeee.f:5: 
             M=expp(II,ii)
               ^
    Invalid declaration of or reference to symbol `expp' at (^) [initially seen at (^)]

    et vvoila mon programme :
    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
     
          program h
          implicit none
          complex ii,M
          ii=cmplx(0.,1.)
          M=expp(II,ii)
          print*,'M=',M
          end
     
     
     
     
     
     
     
     
     
            complex function expp(k,x)
            implicit none
            complex k,x,ii
            ii=cmplx(0.,1.)
            expp=cexp(-ii*k*x-ii*conjg(k)*conjg(x))
            return
            end
    alors ou est tjs le pb?
    merci

  4. #4
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Citation Envoyé par feynman Voir le message
    alors ou est tjs le pb?
    Comme d'habitude pour les fonctions, il faut declarer expp() comme etant de type complex la ou elle est utilisee. Donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
          program h
          implicit none
          complex ii,M
          complex expp
          ii=cmplx(0.,1.)
          M=expp(II,ii)
          print*,'M=',M
          end

  5. #5
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    386
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 386
    Par défaut
    Citation Envoyé par DaZumba Voir le message
    Comme d'habitude pour les fonctions, il faut declarer expp() comme etant de type complex la ou elle est utilisee. Donc:
    Merde!! Merci bcp DaZumba, je ne savais pas ca!

  6. #6
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    386
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 386
    Par défaut
    Malgre cela, ca fait 2 ans que j utilise le F77, et j ai fait des centaines de fonctions et ca marchent toujours,!

Discussions similaires

  1. fonction complexe en fortran 77
    Par feynman dans le forum Fortran
    Réponses: 3
    Dernier message: 02/07/2009, 20h12
  2. Comment tracer une fonction complexe de 2 variables ?
    Par Mad__Max dans le forum MATLAB
    Réponses: 7
    Dernier message: 11/04/2007, 00h13
  3. Réponses: 3
    Dernier message: 22/03/2007, 07h19
  4. [Fortran 77] Fonction random
    Par ajsd0208 dans le forum Fortran
    Réponses: 1
    Dernier message: 15/07/2005, 12h58
  5. [Fortran 90] Fonction Split()
    Par gchazelle dans le forum Fortran
    Réponses: 2
    Dernier message: 02/03/2005, 10h16

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