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 :

Stabiliser des résultats ?


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 28
    Par défaut Stabiliser des résultats ?
    Bonjours à tous,

    Je suis en train d'élaborer un programme qui contient deux variables principales X et Y. J'utilise des équations qui relie X à Y et vis versa, ces variables sont calculées à chaque instant t. Dans ce programme je résous plusieurs équations dont des équations du second degré.

    A chaque résolution, le résultat change à 10^-6 (ex : 10.000001 devient 10.0000015). Le problème c'est que je fais des itérations par rapport au temps, donc ce petit changement répété influence au bout d'un certain temps le résultat que j'obtiens.

    J'aimerai donc savoir quels sont les moyens de réduire ces fluctuation pour stabiliser mes résultats ?

    En vous remerciant par avance,

    Yu Cloud

  2. #2
    Membre éprouvé 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
    Par défaut
    Bonjour,

    Est-ce que tu travailles en simple ou en double précision ? Tu peux forcer la précision au niveau de la compilation avec les bons flags.

    Avec gfortran l'option fdefault-double-8, plus d'infos :
    http://linux.die.net/man/1/gfortran
    Avec ifort l'option -r8, plus d'infos :
    http://docs.notur.no/uit/files-uit/i...rt-9-x-options

    Il y a également des options qui "améliorent" les calculs semble-t-il. L'option -mp1 pour ifort notamment. Après si tu fais des mélanges de simple et de double précision ça peut également jouer sur la précision des tes calculs. Une autre idée est de regarder si certaines opérations peuvent être réalisée de façon différentes

    ( 10E42 + 1 ) - 10E42 = 0

    Bonne soirée.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 28
    Par défaut
    En effet j'utilise des mélanges entre simple et double précision. Certain de ces mélanges me permet d'éliminer des erreurs en 19^-19 que j'obtenais.

  4. #4
    Membre éprouvé 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
    Par défaut
    Quand je parlais de mélange double-simple pour jouer sur la précision, c'était plutôt dans le sens négatif du terme, je te conseilles donc d'utiliser soit la simple, soit la double mais pas les deux en même temps.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 28
    Par défaut
    Quand je parlais de mélange double-simple pour jouer sur la précision, c'était plutôt dans le sens négatif du terme
    Je sais mais je n'ai pas trouvé d'autres solutions afin d'enlever les erreurs numériques en 10^-19 que j'obtenais. J'ai passé le reste de mes variables qui n'étaient pas touchées par l'erreur numérique en double précision. Par contre si tu as d'autres solutions à me proposer, je suis preneur !

    De plus, je fais appelle à des fichiers extérieurs dont certains points varie légèrement (de l'ordre 10^-5). Et tout ceci rajoute des légère erreurs numériques.

    D'où l'importance de pouvoir stabiliser le programme lorsque j'ai des légères variations. Donc tous conseils est le bienvenue

    Bonne journée,

    Yu Cloud

  6. #6
    Membre éprouvé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 27
    Par défaut
    Chaque opération de calcul introduit une erreur et les erreurs se multiplient entre elles. Plus tu as d'opérations, plus l'erreur augmente.
    A partir de cela tu peux:
    • Soit minimiser le nombre d'opérations pour diminuer l'erreur (optimisation méthodologique)
    • Soit considérer qu'à chaque étape une partie de ta précision est superflue. Par exemple pour le nombre 10.00015000004 on pourrait ne garder que 10.00015 ou 10.0 (tout dépend de la précision voulue). Par cette approche on corrige manuellement les valeurs, mais il faut faire très attention aux données que l'on manipulent pour ne pas introduire un effet inverse.

    En tout état de cause, il faudrait en savoir un peu plus sur ton programme pour pouvoire t'aider un peu plus.

Discussions similaires

  1. remplir une table en fonction des résultats
    Par Psychomantis dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 19/10/2004, 12h22
  2. DBCC SQLPERF ( LOGSPACE ) Interprétation des résultats
    Par Labienus dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 20/07/2004, 15h50
  3. Grouper et concatener des résultats
    Par Koo dans le forum Langage SQL
    Réponses: 3
    Dernier message: 07/07/2004, 10h09
  4. Select, union, éliminer des résultats.
    Par franculo_caoulene dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 10/06/2004, 09h42
  5. Réponses: 3
    Dernier message: 18/05/2003, 00h16

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