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 :

Aide pour une fonction


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 Aide pour une fonction
    Bonjour,
    j ai a programé la fonction suivante:
    f(x)=2 si -03<x<0.3
    f(x)=1si -0.7<x<-0.3 et 0.3<x<0.7
    et f(x)=1 ailleurs

    j ai écrit mon code mais j arrive pas a trouver l erreur, pouvez vous m aider svp?
    merci


    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
        program dd
          integer i
          print*,'g(0.9)=',gamma(0.9d0)
          end
     
     
     
          function gamma(x)
          double precision x
          if((x.le.0.3).and.(-0.3.le.x)) then 
             gamma=2.
          elseif((x.ge.0.7).and.(-0.7.ge.x)) then
             gamma=1.
          else
              gamma=0.5
          endif
          return
          end

  2. #2
    Membre émérite Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Par défaut
    alors déjà c'est f(x)=0.5 entre 0.3 et 0.7 (vu ta fonction)

    sinon quelle est exactement ton résultat qui n'est pas le bon???

    ensuite il faut faire gaffe à tes conditions:

    si x=0.1, alors (x.le.0.3) sera vrai et (-0.3.le.x) aussi,

    mais pour ta seconde condition: elle se traduit en math par: x>0.7 et x<-0.7 => c'est ce que tu appelle "partout ailleur"

    cela dit vu que c'est symétrique autour de 0 je te conseille l'écriture:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if (abs(x)<0.3) then
      gamma=2
    else if (abs(x)<0.7) then
      gamma=0.5
    else
      gamma=1
    end if

  3. #3
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Par défaut
    bonjour,

    genteur slayer a déjà fait tout le boulot feynman, que te manque t'il ?

    Citation Envoyé par genteur slayer Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if (abs(x)<0.3) then
      gamma=2
    else if (abs(x)<0.7) then
      gamma=0.5
    else
      gamma=1
    end if

  4. #4
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    386
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 386
    Par défaut
    ok merci, ca marche bien

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 45
    Par défaut
    Citation Envoyé par feynman Voir le message
    Bonjour,
    j ai a programé la fonction suivante:
    f(x)=2 si -03<x<0.3
    f(x)=1si -0.7<x<-0.3 et 0.3<x<0.7
    et f(x)=1 ailleurs
    deja la deuxieme condition n'est pas possible. Tu ne peux pas trouver un x tel que
    -0.7<x<-0.3 ET 0.3<x<0.7
    je pense donc que ce n'est pas ET mais OU.
    en plus je ne vois pas la prise en compte de cette condition dans ton code .
    Bref voici le code qu'il faut en fonction de ce que je crois avoir compris:

    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
     
     
     
          program dd
          double precision x
          write(*,*) ' valeur de x ? '
          read(*,*) x
     
          write(*,*)'g(',x,')=',gamma(x)
     
          end
     
     
     
          function gamma(x)
          double precision x
     
          gamma=0.5    !  c'est 0.5 ou 1 ?      
     
          if((x.gt.-0.3).and.(x.lt.0.3)) gamma=2.
     
          if(   ((x.gt.-0.7).and.(x.lt.-0.3)).OR.
         &      ((x.gt.0.3).and.(x.lt.0.7))    ) gamma=1.
     
          return
          end


    tu dis que "f(x)=1 ailleurs" c'est 1 ou 0.5 ? (dans ton code tu prends 0.5)
    Si c'est 1 alors ca revient a:

    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
     
     
     
          function gamma(x)
          double precision x
     
     
     
          if((x.gt.-0.3).and.(x.lt.0.3)) then
     
                  gamma=2.
     
           else
     
                  gamma = 1.
     
          end if
     
          return
          end

  6. #6
    Membre émérite Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Par défaut
    atention aussi à un truc: lorsque x=0.3 que lui arrive-t-il??

    si toute les condition sont des .lt. .gt. ou toute des .le. .ge. il y a un vide dans le premier cas et un chevauchement dans le second....

    donc faire gaffe à la limite à gauche et à droite...

    et leflix, il n'est pas absolument nécéssaire de faire une seconde condition où aparait le 0.3, en effet si tu fait un "else if" on exclus alors la zone entre -0.3 et 0.3 ....

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 45
    Par défaut
    Oui c'est vrai. J'ai ecris le code pour repondre exactement aux conditions que feynman a enoncees voila pourkoi il n'y a que des lt ou gt. Mais en tout etat de cause tu as raison !
    Mais je en comprends pas ta deuxieme remarque....la deuxieme condition fait partie du cahier des charges. Elle n'a cependant pas d'interet si effectivement f(x)=1. partout ailleurs auquel cas uniquement la 1ere condition est utile (voir deuxieme code)
    Mais bon je pense que feynman arrivera a s'en sortir maintenant

  8. #8
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    386
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 386
    Par défaut
    je me suis trompé , en fait
    j ai a programé la fonction suivante:
    f(x)=2 si -03<x<0.3
    f(x)=0.5si -0.7<x<-0.3 et 0.3<x<0.7
    et f(x)=1 ailleurs

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

Discussions similaires

  1. Aide pour une fonction
    Par vincent62149 dans le forum Excel
    Réponses: 1
    Dernier message: 06/07/2007, 17h38
  2. [FPDF] Besoin d'aide pour une fonction publipostage..;
    Par dark$hadow dans le forum Bibliothèques et frameworks
    Réponses: 10
    Dernier message: 10/02/2007, 15h39
  3. Réponses: 15
    Dernier message: 26/03/2006, 12h10
  4. Aide pour une fonction
    Par mimi060101 dans le forum Scheme
    Réponses: 1
    Dernier message: 24/02/2006, 16h59

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