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

MATLAB Discussion :

Erreur d'arrondi division


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 33
    Points : 23
    Points
    23
    Par défaut Erreur d'arrondi division
    Bonjour à tous,

    Voici un bout du code que j'exécute:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    y1=table_calib.displ(indice-1)
    y2=table_calib.displ(indice)
    x1=table_calib.coef(indice-1)
    x2=table_calib.coef(indice)
     
    temp1=double(y1-y2)
    temp2=double(x1-x2)
     
    a=double(temp1/temp2)
    b=y1-a*x1
    Il s'agit d'une simple interpolation linéaire. Mon souci est que la valeur de a n'est pas correcte. Voici ce qui s'affiche dans le fenêtre de commande:

    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
    temp1 =
     
       -2.0350
     
     
    temp2 =
     
       -0.0809
     
     
    a =
     
       25.1580
     
     
    b =
     
      -8.0099e-04
     
    >> temp1/temp2
     
    ans =
     
       25.1580
     
    >> 2.0350/0.0809
     
    ans =
     
       25.1545
    J'obtiens un résultat différent si je divise temp1 par temp2 ou si je divise directement leur valeur. A quoi cela est il dû ? Ça ressemble à une erreur de troncature (grosse erreur tout de même!!) mais j'ai pourtant forcé le calcul en double précision.

    Merci d'avance!

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    >> temp1 = -2.0350;
    temp2 = -0.0809;
    temp1/temp2
     
    ans =
     
       25.1545
     
    >> 2.0350/0.0809
     
    ans =
     
       25.1545
    Est tout à fait correct.
    Mais je doute que temp1 et temp2 soient exactement égaux à -2.0350 et -0.0809.
    Dans le doute : doc format.
    Voir aussi la FAQ Pourquoi MATLAB affiche-t-il des valeurs tronquées ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 33
    Points : 23
    Points
    23
    Par défaut
    Au temps pour moi....

    J'étais persuadé d'avoir vérifié les valeurs exactes de temp1 et 2 mais visiblement je n'avais vérifié que temp1 (qui est exactement égal à -2.035). L'erreur venait du fait que temp2 était effectivement affiché tronqué... donc en fat il n'y avait pas d'erreur

    Merci de ton aide

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

Discussions similaires

  1. Réponses: 77
    Dernier message: 04/01/2010, 04h41
  2. erreur 2007 de division par 0
    Par babou466 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 23/03/2009, 14h52
  3. Erreur d'arrondis Excel 2003
    Par Philippe608 dans le forum Excel
    Réponses: 9
    Dernier message: 08/10/2007, 20h00
  4. Conversion : erreur d'arrondi plutôt désagréable.
    Par NicolasJolet dans le forum Framework .NET
    Réponses: 2
    Dernier message: 01/02/2007, 21h39
  5. [langage] Erreur d'arrondi sur petits nombres
    Par Tchetch dans le forum Langage
    Réponses: 7
    Dernier message: 12/01/2005, 10h11

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