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 :

Méthode de dichotomie


Sujet :

Fortran

  1. #1
    Débutant
    Inscrit en
    Juillet 2007
    Messages
    386
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 386
    Points : 119
    Points
    119
    Par défaut Méthode de dichotomie
    Bonjour, j'ai fait un programme en utilisant la méthode de dichotomie pour approcher une solution d'une équation f(x)=b
    Ma solution est amoy, amax et amin sont les bornes de l'intervalle,
    j'ai un pris un exemple concret avec amax=1,amin=3,b=8 et f(x)=x^3 et ma solution théorique serait 2. Mon programme me donne 2.5, malgré que j ai mis un do while avec une condition de décalage entre la solution théorique et numérique est de 0.001, alors où est le truc ? svp
    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
     
     
            program dich
            integer i
            real amax, amin, amoy, b
            print*,'donner amax'
            read*, amax
            print*,'donner amin'
            read*, amin
            print*,'donner b'
            read*,b
            amoy=(1./2.)*(amin+amax)
            i=1
            do while(abs(b-f(amoy)).lt.0.001)
              if((f(amin).LT.f(amax)).AND.(beta.LT.f(amoy))) then
              amax=amoy
              else if((f(amin).LT.f(amax)).AND.(beta.GT.f(amoy))) then
             amin=amoy
             else if((f(amin).GT.f(amax)).AND.(beta.GT.f(amoy))) then
                             amax=amoy
                  else
                     amin=amoy
             end if
            amoy=0.5*(amin+amax)
            i=i+1
            enddo
            print*,'alpha=',amoy
            end
     
     
     
            real function f(x)
            real x
            f=x**3
            return
            end

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 79
    Points : 89
    Points
    89
    Par défaut
    Apparement les conseils que tu as reçu n'ont pas servis à grand chose
    http://www.developpez.net/forums/sho...d.php?t=442076
    (cf. 1er message de Ehouarn.)
    Il serait peut-être utile de :
    utiliser la déclaration Implicit none !
    déclarer toutes les variables que tu utilises (e.g. beta)
    ...surtout si tu les utilises !

    Ensuite, en ce qui concerne l'algorithme que tu as écris je n'ai pas pris le temps de le regarder, mais commence par le vérifier le B.A.BA avant de poster sur le forum, car plus tes questions seront pertinentes plus elles recevront de réponses.

Discussions similaires

  1. [Débutant] Problème méthode dichotomie
    Par marie-charline dans le forum MATLAB
    Réponses: 6
    Dernier message: 12/04/2012, 18h56
  2. Algorithme qui calcule la racine de F(x) par la méthode de dichotomie
    Par autoin dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 09/01/2008, 14h28
  3. [Singleton] Différences avec méthodes statiques
    Par Franche dans le forum Design Patterns
    Réponses: 1
    Dernier message: 26/02/2003, 17h10
  4. Probleme d'impression avec la méthode TForm->Print()
    Par Kid Icarus dans le forum C++Builder
    Réponses: 13
    Dernier message: 31/07/2002, 14h26
  5. Cryptage en C selon la méthode de césat
    Par shenron dans le forum C
    Réponses: 2
    Dernier message: 31/05/2002, 08h22

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