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 :

Tableau en fortran


Sujet :

Fortran

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2010
    Messages : 32
    Points : 9
    Points
    9
    Par défaut Tableau en fortran
    Bonjour à tous,

    Je dois transcrire des subroutines de fortran en Delphi. Tous va bien sauf une que je ne comprends pas, En voici une partie que je ne comprends pas :

    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
     
    *
    *      ************************
    *      * minver : inverse of a matrix *
    *      ************************
    *
           SUBROUTINE MINVER(A,N,D,L,M)
    C
           IMPLICIT DOUBLE PRECISION (Z-H, O-Z)
           DIMENSION A(N*N),L(N),M(N)
    C
          D=1.
          NK=-N
          DO 80 K=1,N
          NK=NK+N
          L(K)=K
          M(K)=K
          KK=NK+K
          BIGA=A(KK)
    ...
    la variable A est un tableau de deux dimensions passer un paramètre, donc c'est quoi BIGA=A(KK), il manque une dimension ou elle est traité autrement. Si quelqu'un à une idéee ? Je dois transcrire cette subroutine assez rapidement, c'est le département d'ingénierie qui attends après cette réponse pour un calcule important.

    Merci

  2. #2
    Membre régulier Avatar de Fortran90
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 83
    Points : 82
    Points
    82
    Par défaut
    Ici A(N*N) est un tableau unidimensionnel.

    En fortran, un tableau bidimensionnel NxN peut se voir aussi comme un tableau unidimensionnel N*N

    En fortran le stockage est par colonne ( à l'inverse du C ), cad que les N premiers chiffres correspondent à A(:,1), la première colonne.

    Dans ton code, KK vaut successivement 1, N+2, 2N+3...cad que tu acccèdes les éléments diagonaux de la représentation bidimensionnelle de A.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2010
    Messages : 32
    Points : 9
    Points
    9
    Par défaut
    OK, mais la tu me perd pas a peut près. Dans mon call de la subroutine, le A est bien un tableau a deux dimensions. Suposons que mon tableau est comme suit :

    tableau(1,1) = 1
    tableau(1,2) = 2
    tableau(1,3) = 3

    tableau(2,1) = 4
    tableau(2,2) = 5
    tableau(2,3) = 6

    tableau(3,1) = 7
    tableau(3,2) = 8
    tableau(3,3) = 9

    dans ma fonction minver, que vaut A(2) ? Ça pourrais m'aider a comprendre, je suis un visuel !

    En fait voici la partie du code qui déclare et affecte le tableau a deux dimensions

    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
     
    integer*4     rank
    parameter   (rank = 9)
    real*8        matrix(rank,rank)
    real*8        vector_w1(rank), vector_w2(rank)
    real*8        determinant
     
    matrix(1,1) = 0.d+00
    matrix(1,2) = 0.d+00
    matrix(1,3) = 0.d+00
    ...
     
    *
    * le call pour la fonction minver
    *
     
    call minver(matrix,rank,determinant,vector_w1,vector_w2)
    ...
    Merci

  4. #4
    Membre régulier Avatar de Fortran90
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 83
    Points : 82
    Points
    82
    Par défaut
    Je me répète: fortran stocke par colonne.

    En mémoire, ton tableau sera la première colonne, puis la 2e et la 3e soit

    1 4 7 2 5 8 3 6 9

    cad

    COLONNE 1
    tableau(1,1) = 1
    tableau(2,1) = 4
    tableau(3,1) = 7
    COLONNE 2
    tableau(1,2) = 2
    tableau(2,2) = 5
    tableau(3,2) = 8
    COLONNE 3
    tableau(1,3) = 3
    tableau(2,3) = 6
    tableau(3,3) = 9

    donc A( 2 )...c'est 4.

  5. #5
    Membre régulier Avatar de Fortran90
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 83
    Points : 82
    Points
    82
    Par défaut
    Pour le côté "visuel", regarde les touches de ton téléphone.

    En fortran, tu regardes de haut en bas puis de gauche à droite.
    En C , tu regardes de gauche à droite puis de haut en bas.

    Sauf si tu regardes les touches de ton clavier numérique et alors là ça serait plus de haut en bas mais de bas en haut.

    Enfin. On se comprend.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2010
    Messages : 32
    Points : 9
    Points
    9
    Par défaut
    Merci beaucoup, ça répond très bien à ma question maintenant.

    il est possible que j'ai d'autres questions plus tard sur ce même projet, mais je partirais un autre thread.

    Merci encore

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

Discussions similaires

  1. Inversion de tableau avec fortran
    Par jal13 dans le forum Fortran
    Réponses: 5
    Dernier message: 21/10/2010, 00h47
  2. lecture de tableau en fortran 77
    Par Nulysses dans le forum Fortran
    Réponses: 1
    Dernier message: 07/10/2009, 14h22
  3. Réponses: 7
    Dernier message: 24/06/2008, 23h14
  4. Tableau dynamique en Fortran
    Par fredericsorel dans le forum Fortran
    Réponses: 1
    Dernier message: 11/12/2006, 16h05
  5. Réponses: 8
    Dernier message: 24/11/2006, 12h07

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