Précédent   Forum du club des développeurs et IT Pro > Autres langages > Autres langages > Fortran
Fortran Forum d'entraide sur la programmation en Fortran. Avant de poster -> FAQ Fortran
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 24/12/2012, 18h43   #1
bendesarts
Invité régulier
 
Inscription : août 2009
Messages : 119
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 119
Points : 6
Points : 6
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
bendesarts est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/12/2012, 11h13   #2
Bob_Tom
Membre à l'essai
 
Homme Thomas Chauve
Étudiant
Inscription : décembre 2012
Messages : 25
Détails du profil
Informations personnelles :
Nom : Homme Thomas Chauve
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2012
Messages : 25
Points : 22
Points : 22
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.
Fichiers attachés
Type de fichier : pdf résolution_nulérique_système_équation.pdf (159,9 Ko, 12 affichages)
Bob_Tom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2012, 10h27   #3
bendesarts
Invité régulier
 
Inscription : août 2009
Messages : 119
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 119
Points : 6
Points : 6
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).
bendesarts est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2012, 15h41   #4
Grame
Membre actif
 
Avatar de Grame
 
Inscription : août 2007
Messages : 147
Détails du profil
Informations personnelles :
Âge : 57
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : août 2007
Messages : 147
Points : 186
Points : 186
Bonjour

Citation:
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 :
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
Citation:
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.

Citation:
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 :
1
2
3
      DO 10 K=1,N
10    ICOL(K)=K
Bon courage !
Grame est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2012, 17h40   #5
bendesarts
Invité régulier
 
Inscription : août 2009
Messages : 119
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 119
Points : 6
Points : 6
Bonjour,

Merci beaucoup pour votre aide.

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

Code :
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.
bendesarts est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2012, 03h05   #6
Sylvain Bergeron
Modérateur
 
Inscription : août 2006
Messages : 781
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : août 2006
Messages : 781
Points : 1 028
Points : 1 028
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.
Sylvain Bergeron est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 23h56.


 
 
 
 
Partenaires

Hébergement Web