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 :

Déchiffrage d'un programme FORTRAN sur la méthode de Newton-Raphson


Sujet :

Fortran

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2009
    Messages
    542
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 542
    Points : 187
    Points
    187
    Par défaut Déchiffrage d'un programme FORTRAN sur la méthode de Newton-Raphson
    Bonjour,

    J'ai trouvé ce programme FORTRAN sur l'application de la méthode de Newton-Rapson. Je veux réutiliser la façon dont certaines choses ont été programmées afin de les transposer dans mon programme MAPLE. Par contre, je n'ai jamais programmer en FORTRAN et j'ai du coup quelques questions de base.

    Question1:
    Dans la deuxième image, je comprends pas la commande IF (ICONV) 30,30,20 Est-ce qu'un peut me l'expliquer ? Je pense qu'elle est importante pour comprendre la boucle de la subroutine NEWTON

    Question2:
    A quoi correspondent les quantités B(N1), B(N2), B(N3) dans la commande CALL NEWTON(...) ?

    Question3:
    Quelle valeur on donne à I toujours dans la commande CALL NEWTON(...) ?












    Merci d'avance pour votre aide

  2. #2
    Membre du Club
    Homme Profil pro
    Doctorant Mécanique
    Inscrit en
    Décembre 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant Mécanique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 45
    Points : 46
    Points
    46
    Par défaut
    Bonjour,

    j'ai eu a faire un algorithme sur newton raphson le fichier joint m'a bien aider pour comprendre ce que c'est.

    ca permet de résoudre les système d'équation non linéaire.
    Images attachées Images attachées

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2009
    Messages
    542
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 542
    Points : 187
    Points
    187
    Par défaut
    Merci pour ton aide.
    Par contre, si vous pouviez aussi m'aider pour comprendre les lignes de code de ma boucle permettant d'appliquer la méthode de newton-raphson, çà serait super (voir les questions dans le premier post).

  4. #4
    Membre habitué Avatar de Grame
    Profil pro
    Inscrit en
    Août 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Août 2007
    Messages : 148
    Points : 192
    Points
    192
    Par défaut
    Bonjour

    Question1:
    Dans la deuxième image, je comprends pas la commande IF (ICONV) 30,30,20 Est-ce qu'un peut me l'expliquer ? Je pense qu'elle est importante pour comprendre la boucle de la subroutine NEWTON
    Il s'agit d'une version de FORTRAN ancienne, abandonnée depuis Fortran90.
    Ca signifie, en développant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      IF (ICONV .LT. 0) THEN
        GOTO 30
      ELSEIF (ICONV .EQ. 0) THEN
        GOTO 30
      ELSE IF (ICONV .GT. 0) THEN
        GOTO 20
    Question2:
    A quoi correspondent les quantités B(N1), B(N2), B(N3) dans la commande CALL NEWTON(...) ?
    Il s'agit des valeurs des indices N1, N2, N3 du tableau de réels B.

    Question3:
    Quelle valeur on donne à I toujours dans la commande CALL NEWTON(...) ?
    Aucune. I est un tableau d'entiers de dimension 10 passé en argument à la subroutine NEWTON qui le récupère sous le nom ICOL, puis le passe à la subroutine LINEAR qui le passe à la subroutine LU, où il est (enfin !) initialisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
          DO 10 K=1,N
    10    ICOL(K)=K
    Bon courage !

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Août 2009
    Messages
    542
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 542
    Points : 187
    Points
    187
    Par défaut
    Bonjour,

    Merci beaucoup pour votre aide.

    Il s'agit d'une version de FORTRAN ancienne, abandonnée depuis Fortran90.
    Ca signifie, en développant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    IF (ICONV .LT. 0) THEN
        GOTO 30
      ELSEIF (ICONV .EQ. 0) THEN
        GOTO 30
      ELSE IF (ICONV .GT. 0) THEN
        GOTO 20
    Ok merci. Par contre, il y a encore dans cette Subroutine NEWTON quelques fonctions (notamment CONTINUE et RETURN) que je ne comprends pas et qui font que j'ai encore du mal à comprendre les boucles réalisées.

    Est-ce qu'il vous serez possible de me traduire cette Subroutine NEWTON en langage logique je veux dire en "pseudo code" afin que j'arrive à retranscrire cette fonction dans le langage que j'utilise à savoir Maple.

    Merci d'avance pour votre aide.

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Points : 1 346
    Points
    1 346
    Par défaut
    Le RETURN signifie « sortie de la routine et retour à l'appelant ». C'est la fin normale d'exécution de la routine. Le END marque la fin de la routine pour le compilateur. Ce n'est pas nécessairement la fin logique de la routine : c'est la fin du bloc d'instructions que constitue la routine. Cependant, il y a un RETURN implicite sur un END (un STOP implicite pour le END d'un programme). On utilise le RETURN quand la fin logique d'exécution n'est pas au END, ou pour que le RETURN soit explicite (RETURN puis END).

    Le CONTINUE est une instruction non exécutable. Elle ne fait rien ! En fait, elle était utilisée comme dernière instruction de boucle quand il était requis de faire « Next » ou « Cycle », mais ces instructions n'existaient pas. Dans ta routine, le IF (ICONVR) 30,30,20 fait une sortie de la boucle DO 20 si ICOUVR est <= 0 par un branchement sur 30, et fait « Next I » (Basic) ou « Cycle » (Fortran) si ICONVR est > 0 par un branchement sur 20. La boucle DO 20 .. 20 CONTINUE dans la routine LU est une version plus simple de la même utilisation.

Discussions similaires

  1. programmation en fortran sur mac
    Par Aur_neige dans le forum Fortran
    Réponses: 10
    Dernier message: 09/09/2013, 15h43
  2. Programme de fortran sur win7 64bit
    Par lanto dans le forum Fortran
    Réponses: 3
    Dernier message: 13/09/2011, 21h48
  3. [Débutant] Trouver les zéros d'une équation par la méthode de Newton-Raphson
    Par monamerce dans le forum MATLAB
    Réponses: 4
    Dernier message: 18/02/2011, 23h57
  4. Réponses: 11
    Dernier message: 17/03/2003, 11h56
  5. Lancer un programme, mais sur une autre machine
    Par GOUGOU1 dans le forum Réseau
    Réponses: 12
    Dernier message: 08/12/2002, 21h36

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