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 :

création de matrice


Sujet :

Fortran

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 5
    Points : 4
    Points
    4
    Par défaut création de matrice
    Bonjour,

    j'ai écrit un programme pour créer des matrices en donnant les éléments de la matrice.

    C.....Déclarations
    implicit none
    integer i,j,k,nl1,nc1
    integer nl3,nc3
    integer mat1(10,10)
    character*3 test
    C.....Saisie des matrices
    open(7,file='mat1.dat')
    1000 call lect (nl1,nc1,mat1)
    print*, 'donner les valeurs des éléments de la matrcice 1 '
    do i=1,nl1
    print*, (mat1(i,j),j=1,nc1)
    end do
    write(7,*) mat1
    close(7)
    end
    C.....Subroutine de lecture de matrices
    subroutine lect(NL,NC,MAT)
    integer mat(10,10)
    print*, 'nombres de lignes et de colonnes de la matrice'
    read*, NL,NC
    print*, 'donner les valeurs des ‚l‚ments de la matrice'
    do i=1,NL
    read*, (mat(i,j),j=1,NC)
    end do
    return
    end

    Je voudrais maintenant que les éléments de la matrice s'inscrivent automatiquement à partir d'un unique nombre k. Ce même nombre k défini le nombre de ligne et de colonne de la matrice tel que:
    nl=k+1
    nc=k

    La matrice a cette forme:

    0 0 0 0 ....
    a b b b ...
    b a b b ...
    b b a b ....
    b b b a ....

    Les éléments a et b sont calculés à partir du nombre demandé.
    J'ai essayé avec des boucles DO WHILE, DO et IF mais rien ne fonctionne.
    Petite précision qui peut avoir son utilité, je travail en FORTRAN 77.

    Si vous avez des idées, je suis preneur.

    Yvan

  2. #2
    Membre régulier Avatar de rogue-spectre
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 104
    Points : 122
    Points
    122
    Par défaut
    Salut,

    Il semble que tu ais besoin d'allocation dynamique pour ton programme, puisque tu ne connais pas la taille à la compilation du coup
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
        ! déclaration de notre matrice, on peut aussi utiliser "pointer" à la place d'allocatable
        ! 
        REAL, DIMENSION(:,:), ALLOCATABLE :: matrix
     
        ! on alloue de l'espace pour notre matrice en fonction des 
        !*paramètres lus
        ALLOCATE(matrix(nl, nc))
     
        ! on utilise la matrice
     
        ! on libère la mémoire quand on en a plus besoin
        DEALLOCATE(matrix)
    En espérant que ça puisse aider,

    Bon we
    Libérez vos documents http://fr.libreoffice.org/ et vos doigts en tapant en BÉPO http://bepo.fr/wiki/Accueil:, rangez les cartes perforées dans une armoire et GOTO work

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 5
    Points : 4
    Points
    4
    Par défaut allocate
    Le problème c'est que la fonction "allocate" ne fonctionne pas en FORTRAN 77.

    Mais j'ai réussi à me dépatouiller.

    Yvan

  4. #4
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    salut Yvan,

    la question que tu as posé concernant l'écriture de la matrice était vraiment intéressante, apparemment tu as trouvé le moyen de le faire, pourrais-tu m'en dire un peu plus.

    merci d'avance

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    En faite, ça ne me présent pas les résultats sous forme de matrice mais de blocs de données qui correspondent à chaque ligne de la matrice.
    Vu l'utilisation que j'en fait derrière, ça me suffit largement.
    Voici le bloc de programmation:

    C.....Cr‚ation de la matrice d'essais
    print*, 'cr‚ation de la matrice d''essai'
    OPEN(3,FILE='matessai.dat')
    DO i=1,nbessai
    WRITE(3,'(a)')' Valeurs des variables pour l''essai'
    WRITE(3,*) i
    DO v=1,k
    j=i-1
    IF(i.EQ.1)THEN
    var=val_init(v)
    ELSE IF(v.EQ.j)THEN
    var=val_init(v)+pas(v)*p
    ELSE
    var=val_init(v)+pas(v)*q
    END IF
    WRITE(3,6) var
    WRITE(*,'(2(a,X,I2,2X),2X,F8.3)') 'essai',i,'var',v,var
    END DO
    END DO

    Tu t'en sors avec le simplex? Je présente le 26 mars...ça arrive trop vite.

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

Discussions similaires

  1. Création image matrice niveau de gris
    Par juliefournet dans le forum Calcul scientifique
    Réponses: 5
    Dernier message: 03/05/2013, 18h01
  2. Création de Matrice dynamique
    Par cobra150 dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 16/04/2012, 15h48
  3. [Débutant] Création de Matrice 123. . .
    Par Mat32 dans le forum MATLAB
    Réponses: 8
    Dernier message: 04/10/2009, 12h54
  4. Création de matrice.
    Par Lartiste007 dans le forum Débuter
    Réponses: 6
    Dernier message: 22/12/2008, 10h37
  5. Création de matrice
    Par bg56 dans le forum MATLAB
    Réponses: 3
    Dernier message: 19/11/2007, 11h16

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