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 :

[Fortran 77] Problème de matrice


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 34
    Par défaut [Fortran 77] Problème de matrice
    bonsoir,
    j'utilise en ce moment le fortran 77 de cygwin sous windows pour calculer des matrices de triangles numériques d'entiers positifs (exple : triangle de pascal) avec des lois de récurrence du genre :
    A(i+1,j+1)=A(i,j) + (j+1)A(i,j+1)
    Tout semble marcher mais je suis étonné lorsque j'affiche ces triangles de voir que seules les 10 ou 12 premières lignes sont correctes et qu'ensuite apparaissent des entiers négatifs, ce qui est mathématiquement impossible, et les lignes suivantes sont complètement fausses.
    Il y a t-il déjà une instabilité numérique dans fortran même après un calcul de triangles aussi simple ??
    merci beaucoup !

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 34
    Par défaut
    bonsoir,
    dernièrement, je crois avoir compris qu'il s'agissait d'un problème de précision en termes de nombre d'octets utilisés :
    en effet quand je déclare mes variables entieres comme integer*8, j'obtiens plus de lignes exactes (et positives!) qu'avec integer*1.
    Donc il semble que la taille des entiers dans mes matrices jouent beaucoup, or j'ai vraiment besoin de calculer de très grand entiers, comment faire alors pour augmenter la précision avec g77 ??
    merci beaucoup

  3. #3
    Membre émérite
    Avatar de Ladgalen
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2007
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Novembre 2007
    Messages : 466
    Par défaut
    Ce n'est pas un problème de fortran, c'est un problème général de mémoire. Un nombre (qu'il soit entier ou réel) est stocké sur un nombre fini de d'octet (8bits).
    Il en découle obligatoirement un limite du nombre maximum que tu peux enregistrer.

    Avec integer*1 tu enregistre tes entiers sur 1 octet soit 8bit. Le premier étant un bit de signe il te reste 7 bit pour enregistrer ton entier, le nombre max que tu peux enregistrer est donc 256 ! D'où le fait que tu ne peux pas aller très loin dans le tableau de pascal !

    regarde ce post pour plus de détails :

    http://www.developpez.net/forums/d62...ble-precision/

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 34
    Par défaut
    merci Lagdalen,
    j'ai aussi vu ton lien, ma question désespérée est alors : peut-on augmenter de beaucoup la capacité de mémoire des entiers de fortran 77 ( genre integer*32) ou alors... changer carrément de langage ??
    merci !

  5. #5
    Membre émérite
    Avatar de Ladgalen
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2007
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Novembre 2007
    Messages : 466
    Par défaut
    Je ne suis pas le plus qualifié pour répondre à cette question. Cependant il me semble qu'en fortran 90 (ou peut être 95) tu peux donner le nombre d'octet sur lequel tu enregistres tes nombres sans contraintes.

    Sinon je crois que c'est un des atouts de C ... mais là j'y connais encore moins.

    Sinon au passage si tu te mets en réel double précision, tu as un éventail de valeurs entre 10^-300 et 10^+300 ce qui te laisse de la marge !!!!

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 34
    Par défaut
    merci encore Lagdalen,
    je ne suis pas sûr que des fonctions comme mod(a,b) affichent parfaitement zéro en double précision : je vais réessayer.
    Par contre, puis-je trouver le fortran 90 ou 95 dans les mêmes packages cygwin où j'ai extrait le f77 ??
    merci, si d'autres ont plus de précisions...

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/03/2007, 11h13
  2. problème de matrice
    Par micfont999 dans le forum C++
    Réponses: 9
    Dernier message: 07/01/2007, 16h19
  3. [Fortran 90] Problème de fmt
    Par Nours87 dans le forum Fortran
    Réponses: 16
    Dernier message: 12/01/2006, 20h29
  4. Réponses: 8
    Dernier message: 01/06/2005, 10h45
  5. [Fortran 77] Problème de compilation
    Par Kenji dans le forum Fortran
    Réponses: 26
    Dernier message: 23/05/2005, 17h07

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