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 :

message d'erreur fortran90


Sujet :

Fortran

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 37
    Points : 26
    Points
    26
    Par défaut message d'erreur fortran90
    Bonjour tout le monde,

    voilà je suis entraine de faire un programme qui calcule le produit matrice vecteur sachant que ma matrice a sept diagonales et quand je compile j'aurai le message d'erreur "Invalid form of array reference" si quelqu'un peut m'expliquer ce message d'erreur je serai vraiment reconnaissante

    merci d'avance

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 388
    Points : 692
    Points
    692
    Par défaut
    Bienvenue the_reward.

    Probablement que ta matrice est mal déclarée. Est-elle bien de rang 2 ?
    Ce serait plus facile si tu postais du code.

    sachant que ma matrice a sept diagonales
    Il faut comprendre une matrice de rang 2 avec 7 éléments sur la diagonale principale ?

    J'ai un exemple en FORTRAN 90 avec allocation dynamique :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    program main
        implicit none
        integer :: i
        integer, parameter :: n= 4
        integer, dimension(:), allocatable :: v, res
        integer, dimension(:,:), allocatable :: m
     
        ! Matrice identite
        allocate( m(n,n), v(n*n), res(n*n) )
        v = 0; v(1:n*n:n+1) = 1
        m = reshape( source= v, shape= shape(m) )
     
        print '(a)', 'La matrice :'
        do i = 1, size(m,1)
            print '(99i2)', m(i,:)
        enddo
     
        ! Le vecteur
        v = (/ (i, i = 1, n) /)
        print '(/a)', 'Le vecteur :'
        print '(i2)', v
     
        ! Le produit matriciel
        res = matmul(m,v)
        print '(/a)', 'Le produit matrice par vecteur :'
        print '(i2)', res
     
        deallocate( v, m, res )
     
    end program main

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 37
    Points : 26
    Points
    26
    Par défaut message d'erreur fortran90
    Merci __dardanos__
    en fait ma matrice est la suivante: (exemple on prend n = 5)
    1 0 0 0 0 0 0 0 0 0
    0 1 0 0 0 0 0 0 0 0
    0 0 1 0 0 0 0 0 0 0
    0 0 0 1 0 0 0 0 0 0
    0 0 0 0 1 0 0 0 0 0
    0 5 -4 0 0 2 -3 0 0 0
    -5 0 5 -4 0 -3 2 -3 0 0
    4 -5 0 5 -4 0 -3 2 -3 0
    0 4 -5 0 5 0 0 -3 2 -3
    0 0 4 -5 0 0 0 0 -3 2

    j'ai stocké la matrice par ligne et voilà mon code

    program matrice
    implicit none

    integer, dimension( : , : ), allocatable :: mat1
    integer, dimension( : ), allocatable :: pmv
    integer, dimension( : ), allocatable :: u
    integer :: n,i
    print*,'entrer une valeure de n:'
    read*, n
    allocate(mat1(2*n,2*n))
    allocate(u(2*n))
    allocate(pmv(2*n))
    !initialisation
    mat1(:, = 0

    mat1(1,n+3:2*n) = 5
    mat1(2,n+2:2*n) = -4
    mat1(3,n+1:2*n-1) = 4
    mat1(4,n+1:2*n-2) = -5
    mat1(6,1:n)=1
    mat1(6,n+1:2*n)=2
    mat1(5,n+2:2*n)=-3
    mat1(7,n+1:2*n-1)=-3

    print*,'la matrice est: ',mat1

    print*,'entrer un vecteur u'
    read*,u
    do i =1,n
    pmv(i) = mat1(6,i)*u(i)
    end do
    pmv(n+1) = mat1(1,n+3)*u(2) + mat1(2,n+2)*u(3) + 4*u(n) + mat1(6,n+1)*u(n+1) + mat1(7,n+1)*u(n+2)
    pmv(n+2) = mat1(4,n+2)*u(1) + mat1(1,n+3)*u(3) + mat1(2,n+2)*u(4) + mat1(5,n+2)*u(n+1) + mat1(6,n+2)*u(n+2) + mat1(7,n+2)*u(n+2)
    do i = n+3, 2*n-2
    pmv(i) = mat1(3,i)*u(i-n-2) + mat1(4,i)*u(i-n-1) + mat1(1,i)*u(i-n+1) + mat1(2,i)*u(i-n+2) + mat1(5,i)*u(i-1) + mat1(6,i)*u(i) + mat1(7,i)*u(i+1)
    end do
    pmv(2*n-1) = mat1(3,2*n-1)*u(n-3) + mat1(4,2*n-2)*u(n-2) + mat1(1,2*n-1)*u(n) + mat1(7,2*n-1)*u(2*n-2) + mat1(6,2*n-1)*u(2*n-1) + mat1(5,2*n-1)*u(2*n)
    pmv(2*n) = (-4)*u(1) + mat1(3,2*n-1)*u(n-2) + mat1(4,2*n-2)*u(n-1) + mat1(5,2*n) * u(2*n-1) + mat1(6,2*n)*u(2*n)

    print*,'produit = ',pmv
    deallocate( mat1, u, pmv )
    end program matrice

  4. #4
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 37
    Points : 26
    Points
    26
    Par défaut message d'erreur fortran90
    délosée la matrice est la suivante
    1 0 0 0 0 0 0 0 0 0
    0 1 0 0 0 0 0 0 0 0
    0 0 1 0 0 0 0 0 0 0
    0 0 0 1 0 0 0 0 0 0
    0 0 0 0 1 0 0 0 0 0
    0 5 -4 0 4 2 -3 0 0 0
    -5 0 5 -4 0 -3 2 -3 0 0
    4 -5 0 5 -4 0 -3 2 -3 0
    0 4 -5 0 5 0 0 -3 2 -3
    -4 0 4 -5 0 0 0 0 -3 2

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 37
    Points : 26
    Points
    26
    Par défaut message d'erreur fortran90
    C bon j'ai trouvé mon erreur en tous cas merci __dardanos__

  6. #6
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 388
    Points : 692
    Points
    692
    Par défaut lignes trop longues
    J'ai le même message d'erreur.

    C'est du format libre, mais il y a quand même un nombre limité de caractères par ligne.

    Remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        do i = n+3, 2*n-2
            pmv(i) = mat1(3,i)*u(i-n-2) + mat1(4,i)*u(i-n-1) + mat1(1,i)*u(i-n+1) + mat1(2,i)*u(i-n+2) + mat1(5,i)*u(i-1)   + mat1(6,i)*u(i) + mat1(7,i)*u(i+1)
        end do
        pmv(2*n-1) = mat1(3,2*n-1)*u(n-3)   + mat1(4,2*n-2)*u(n-2)   + mat1(1,2*n-1)*u(n) + mat1(7,2*n-1)*u(2*n-2) + mat1(6,2*n-1)*u(2*n-1) + mat1(5,2*n-1)*u(2*n)
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        do i = n+3, 2*n-2
            pmv(i) = mat1(3,i)*u(i-n-2) + mat1(4,i)*u(i-n-1) + mat1(1,i)*u(i-n+1) &
                   + mat1(2,i)*u(i-n+2) + mat1(5,i)*u(i-1)   + mat1(6,i)*u(i) + mat1(7,i)*u(i+1)
        end do
        pmv(2*n-1) = mat1(3,2*n-1)*u(n-3)   + mat1(4,2*n-2)*u(n-2)   + mat1(1,2*n-1)*u(n) &
                   + mat1(7,2*n-1)*u(2*n-2) + mat1(6,2*n-1)*u(2*n-1) + mat1(5,2*n-1)*u(2*n)

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 37
    Points : 26
    Points
    26
    Par défaut message d'erreur fortran90
    oui c'était ça le problème j'ai fait la même chose que vous j'ai utilisé le &
    merci une autre fois

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

Discussions similaires

  1. [TSocket] Message d'erreur
    Par rgz dans le forum Web & réseau
    Réponses: 6
    Dernier message: 04/07/2003, 09h16
  2. Surcharger le message d'erreur après un OnException
    Par Tirlibibi dans le forum XMLRAD
    Réponses: 2
    Dernier message: 24/04/2003, 11h42
  3. Réponses: 4
    Dernier message: 04/03/2003, 01h05
  4. [CR] Message d'erreur
    Par nono1 dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 11/09/2002, 14h54
  5. Réponses: 2
    Dernier message: 27/05/2002, 19h46

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