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 :

Résultat bizarre d'une fonction numérique simple


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 Résultat bizarre d'une fonction numérique simple
    Bonjour,
    j ai définit une fonction numérique qui vant 1 au dehors de [-3/4,3/4] et une fonction numérique dans cette interval , j ai ecrit le program, mais j ai obtenu que ma fonction vaut toujours 1!!!!!!!!!!!!!!!
    Alors pouvez m aider et dire ou est ce truc génant?

    voila 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
               program ess
             integer i,j
             parameter(N=16)
             real gama(N-1),h
             h=1/N
             do i=1,N-1
                gama(i)=gamma(i*h)
             enddo
             do j=1,N-1
                print*, j,gama(j)
             enddo
             end
     
              real function gamma(x)
              real x
              if(x.GT.-3/4.AND.x.LT.3/4) then
                  gamma =(10*((x**2-0.75**2)**4)*cos(2*pi*x)+1)**2
              else
                  gamma =1.
              end if
              return
              end
    meercci

  2. #2
    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
    3/4 est une division entiere qui vaut 0. Ta condition ne risque pas d'etre verifiee... 3.0/4.0 par contre vaut 0.75.

  3. #3
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    386
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 386
    Par défaut
    Bah j ai remplacé 3/4 par 3.0/4.0 et j ai obtrenu :


    1 4.00451803
    2 4.00451803
    3 4.00451803
    4 4.00451803
    5 4.00451803
    6 4.00451803
    7 4.00451803
    8 4.00451803
    9 4.00451803
    10 4.00451803
    11 4.00451803
    12 4.00451803
    13 4.00451803
    14 4.00451803
    15 4.00451803
    ce qui est toujours bizare!

  4. #4
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    386
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 386
    Par défaut
    Sayez c est résolu , tout le truc était ce 1.0/n au lieu de 1/N :@

  5. #5
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    386
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 386
    Par défaut
    Mais quand meme je ne suis pas convaincu des résultats,
    en comparant la fonction avec scilab je n obtient pas la meme chose
    alors pourquoi?

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 5
    Par défaut bizarre bizarre
    Bonjour,

    As tu résolu ton problème?

    Loin de moi la prétention d'avoir LA solution. Cela fait une décennie que je n'ai pas fait de FORTRAN et je m'y remet pour le accelerer des codes Matlab. Ton post m'a intrigué et c'est typiquement un bon exercice pour se replonger dans le sujet.

    J'ai d'abord joué sous Matlab pour avoir les bons résultats. J'ai ensuite revu le source pour obtenir les mêmes résultats.

    Je pense que le soucis vennait de ce qui est en argument de "gamma". (h est toujours égal à zéro). me trompe je?

    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 ess
     
    integer i
    parameter(n=16)
    real gama(n-1),h
     
    h=1/real(n)
    do i=1,n-1
          	gama(i)=gamma(i*h)
           	print*, i*h,gama(i)
    enddo
    end
     
    function gamma(x)
    real x,pi
    pi=3.14159265359
     
    if(x.GT.-0.75.AND.x.LT.0.75) then
           	gamma =(10*((x**2-0.75**2)**4)*cos(2*pi*x)+1)**2
    else
          	gamma =1.
    end if
    return
    end

Discussions similaires

  1. Résultat bizarre d'une requête
    Par yesil08 dans le forum Bases de données
    Réponses: 19
    Dernier message: 07/05/2008, 17h18
  2. Réponses: 6
    Dernier message: 24/11/2007, 18h48
  3. [MySQL] Résultat bizarre pour une requête
    Par masseur dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/05/2007, 11h46
  4. Lire une fonction numérique sur le clavier
    Par ladognon dans le forum Langage
    Réponses: 3
    Dernier message: 08/04/2006, 19h07
  5. Passer le résultat (tableau) d'une fonction
    Par coyote90 dans le forum Access
    Réponses: 3
    Dernier message: 10/11/2005, 19h56

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