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 :

Stockage diagonale de matrice dans un vecteur


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 4
    Par défaut Stockage diagonale de matrice dans un vecteur
    Bonsoir tout le monde

    pour mon TP de calcul scientifique, je dois écrire un programme (en fortran) qui factorise une matrice A tridiagonale en LU. J'ai donc voulu stocker chacune des trois diagonales dans un vecteur (respectivement up, low et diag). Par contre, au moment de la compilation j'ai des erreurs du type:
    error: rank mismatch in array reference
    lorsque j'avais écrit par exemple
    do i=1,n
    diag(i)=A(i,i)
    end do.

    Je débute en fortran, pourriez vous me donner une piste pour comprendre mon erreur ?
    Peut être que j'ai mal utilisé allocate.
    Merci beaucoup !

  2. #2
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut
    Salut!
    Pour pouvoir te répondre, il nous faudrait voir comment tu as déclaré tes variables.
    Jean-Marc Blanc

  3. #3
    Invité de passage
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1
    Par défaut
    Comment tu as déclaré "A" dans ton programme?

    Sinon tu peux demander au gens de la classe, ils ne mordent pas ...

  4. #4
    Membre émérite Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Par défaut
    attention toute fois: après factorisation LU, une matrice tridiagonale ne reste pas nécéssairement tridiagonale... une méthode classique consiste à déclarer A comme pleine et de la modifiée en LU: L est une matrice triangulaire inférieur avec des 1 sur la diag (on stoke pa les "1" on se souvien seullement qu'ils sont là) et on stoque le tout dans la partie triangulaire inférieur de A. U7 est une matrice triangulaire suppérieur (avec valeur sur la diag) que l'on stoke dans la partie triangulaire suppérieur de A (diag incluse cette fois)

  5. #5
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut
    Salut!
    je dois écrire un programme (en fortran) qui factorise une matrice A tridiagonale en LU
    1. Pourquoi? Que veux-tu faire avec tes matrices L et U?
    2. Tes matrices L et U sont-elles définies par la relation L+U=A ou par L*U=A ?
    3. Ta matrice A est-elle symétrique, et, si oui, est-elle définie positive?
    4. Stocker une matrice tridiagonale dans un tableau à 2 indices est un gaspillage pur et simple de place.

    Quand tu auras répondu à ces questions, on pourra aller un peu plus loin.
    Jean-Marc Blanc

  6. #6
    Membre émérite Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Par défaut
    Citation Envoyé par FR119492
    1. Pourquoi? Que veux-tu faire avec tes matrices L et U?
    2. Tes matrices L et U sont-elles définies par la relation L+U=A ou par L*U=A ?
    3. Ta matrice A est-elle symétrique, et, si oui, est-elle définie positive?
    4. Stocker une matrice tridiagonale dans un tableau à 2 indices est un gaspillage pur et simple de place.
    c'est marrant: c'est toujours les mêmes questions (pertinentes) qui reviennent au fil des topics...

Discussions similaires

  1. [Débutant] afficher les valeurs d'une matrice dans un vecteur ?
    Par Imène_23 dans le forum MATLAB
    Réponses: 3
    Dernier message: 21/08/2011, 12h39
  2. Matrice dans un vecteur
    Par ArnaudFu dans le forum C++
    Réponses: 12
    Dernier message: 07/04/2011, 17h10
  3. [Débutant] Stockage de plusieurs valeurs dans un vecteur
    Par milanoran dans le forum Signal
    Réponses: 3
    Dernier message: 06/02/2010, 17h43
  4. Réponses: 12
    Dernier message: 17/05/2009, 15h21
  5. Réponses: 14
    Dernier message: 28/07/2006, 10h20

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