28 avril 2010

8 messages - Retourner à l'article
  • Un ordinateur est-il une parfaite machine à calculer ?

    le 28 avril 2010 à 21:05, par Vincent Hugerot

    Amusez-vous à faire boguer Excel :
    tapez -0,009 en A1, -0,008 en A2,
    sélectionnez ces deux cellules et copiez jusqu’en A10.
    On s’attend à obtenir 0 dans cette cellule, on y trouve -8,6736E-18 ! (version 2007 en ce qui me concerne).

    Répondre à ce message
  • Un ordinateur est-il une parfaite machine à calculer ?

    le 1er mai 2010 à 12:29, par arnolix

    Très intéressant ce programme simple qui dérive de façon vertigineuse dès les premières itérations.
    J’avais réagi à un article similaire en proposant des bogues de la calculatrice de l’iphone/ipodtouch. C’est une calculatrice d’une instabilité extraordinaire : selon le contexte (en début d’utilisation, après qqs calculs, etc.) le simple fait de taper 4096,1 et d’appuyer plusieurs fois sur la touche = produit une suite non-constante divergente !!!!

    Répondre à ce message
  • Un ordinateur est-il une parfaite machine à calculer ?

    le 3 mai 2010 à 08:46, par Pierre Lescanne

    Dans votre article, il y a deux phrases qui me paraissent un peu
    simplificatrices.

    * Fondamentalement [les ordinateurs] ne « savent » faire que les
    quatre opérations arithmétiques élémentaires
    .

    * La plupart des calculs « utiles » qui sont effectués dans les ordinateurs font référence aux nombres réels.

    En fait, les ordinateurs dont je me sers tous les jours, à savoir mon
    ordinateur portable, mon téléphone portable, les serveurs de bases de
    données (par exemple celles de mon fournisseur de mél, de mon
    fournisseur Internet, de la SNCF, de Google, de Wikipédia) utilisent
    assez peu les quatre opérations et, s’ils le font, ils le font
    presqu’essentiellement sur les entiers. En fait, les principales
    opérations que fait un ordinateur sont des opérations de transferts,
    de lecture et d’écriture, de contrôle de l’agencement des opérations
    et très peu d’additions, de soustractions, de multiplications et de
    divisions et la plupart de ces opérations sont faites, comme je le
    disais, sur des entiers qui représentent des adresses mémoires de
    l’ordinateur, des heures, des numéros divers (de train, d’article, des
    notes d’étudiants etc.) et ce sont ces opérations non arithmétiques
    qui donnent à l’ordinateur le caractère universel qu’on lui connaît.
    Quant à l’utilité, j’espère que, comme moi, vous pensez que les calculs
    que font votre ordinateur portable et votre téléphone portable sont « utiles ».

    Je pense que ce que vous vouliez dire, c’est que les opérations
    fondamentales d’un ordinateur sont des opérations extrêmement simples,
    parmi lesquelles figurent les quatre opérations. D’autre part, vous
    vouliez peut-être aussi dire que les opérations sur les réels ne
    servent pas uniquement dans les consoles de jeux ou la simulation et peuvent être des
    opérations « critiques », c’est-à-dire que la vie humaine peut en
    dépendre, quand il s’agit, par exemple, de l’aide au pilotage d’un
    avion ou du contrôle d’un appareil chirurgical. C’est pourquoi nous ne pouvons
    pas nous contenter d’un calcul vaguement approchant, mais que seul le
    calcul exact doit être accepté, j’entends par là qu’il n’est
    pas acceptable qu’un ordinateur nous rende un flottant approximant une
    valeur qu’on lui demande de calculer sans nous garantir que tous les
    chiffres qu’il rend sont exacts et s’il y a un arrondi qu’il omette de nous dire comment il est obtenu, c’est à dire que tous ces chiffres
    sont effectivement les premiers chiffres du développement infini de la
    valeur calculée, sauf le dernier et que celui-ci est arrondi comme
    on l’attend. C’est ce qu’exige pour les quatre opérations et la racine carrée la norme IEEE 754. Je recommande à nos lecteurs de lire à ce sujet
    l’article Le « dilemme du fabricant de tables » ou comment calculer
    juste
    de la revue en ligne Interstices. Je pense que les anomalies révélées par vous et vos lecteurs se réfèrent à des ordinateurs qui ne respectent pas la norme IEEE 754.

    Répondre à ce message
    • Un ordinateur est-il une parfaite machine à calculer ?

      le 24 mai 2010 à 14:27, par Jean-François Colonna

      Permettez-moi les quelques remarques et suggestions suivantes :

      1-Contrairement à ce que vous laissez entendre, les opérations sur les entiers ne sont pas à l’abri, elles-aussi, de problèmes liés à la nature finie des ordinateurs et par exemple, il est évidemment impossible de faire n=n+1 ad vitam aeternam ou encore de multiplier deux entiers « un peu trop grands » (ce qui interdit pratiquement de faire des calculs « utiles » en simulant les rationnels). Or, bien souvent, l’usage des entiers est fait, dans les programmes, sans se soucier de leurs limitations (de nombreux exemples bien réels sont là pour le confirmer).

      2-Vous évoquez les « opérations sur les réels », mais malheureusement les réels n’existent pas dans un ordinateur et leur substitut, les « nombres flottants » ne forment pas un corps, d’où des difficultés possibles, par exemple, lors de l’optimisation automatique des programmes qui fait, en particulier, l’hypothèse de l’associativité de l’addition et de la multiplication.

      3-Enfin, je ne peux que vous suggérer d’essayer les quelques petits programmes que je donne en exemple et pour lesquels les problèmes décrits ne peuvent être résolus par le simple respect de la norme IEEE 754 (respectée évidemment sur nos ordinateurs...) et par exemple le fait que la différence A-B ne soit pas égale à 1 en utilisant la représentation 64 bits (au passage A-B est bien égale à 1 en 32 bits, mais « un peu par hasard »...).

      Répondre à ce message
  • Un ordinateur est-il une parfaite machine à calculer ?

    le 18 octobre 2010 à 07:19, par Marc JAMBON

    Votre affirmation : la base dix ne peut être utilisée par un ordinateur est une contre vérité, en effet, en utilisant 4 bits, vous pouvez représenter 16 caractères, rien ne vous empêche de n’en conserver que dix qui fournissent les dix chiffres de la base dix, les 6 caractères restants sont les bienvenus pour servir, en cas de besoin, de séparation, signe +, signe -, point décimal, parenthèses. Ainsi avec 32 bits vous représentez un nombre entier de 8 chiffres décimaux et même un nombre décimal précédé d’un signe avec le point décimal et 8 chiffres au total.
    Il est possible que certains ordinateurs transforment toutes les représentations en base deux comme vous l’indiquez, mais ce n’est pas ou plus le cas usuel. J’ai essayé sur ma calculatrice de poche « Canon », on trouve dans tous les cas le résultat exact, même chose avec le logiciel « Mathematica ». Ceci me laisse à penser que la représentation utilisée est du type de celle que je propose ci-dessus.
    Ceci dit, il est parfaitement vrai que la distributivité est en défaut dès qu’on fait des calculs approchés, mais vos exemples ne sont pas convaincants.

    Répondre à ce message
  • Un ordinateur est-il une parfaite machine à calculer ?

    le 18 octobre 2010 à 10:05, par Jean-François Colonna

    Concernant l’utilisation de la base 10 dans les ordinateurs, je n’ai pas écrit que cela était impossible, mais tout simplement beaucoup plus difficile à réaliser sur les plans technologique et économique. Votre idée de représenter les chiffres décimaux à l’aide 4 bits a longtemps été utilisée dans les années soixante : c’était le DCB (Décimal Codé Binaire) très utilisé en Cobol ; il a été abandonné depuis bien longtemps...

    Il convient de noter que le problème que je décris dans l’article n’est pas lié fondamentalement à la base 2 (toute autre base aurait les mêmes conséquences et donc le DCB ne résoudrait rien), mais celui de la « finitude » des ordinateurs : quelle que soit leur capacité, elle ne permet pas de stocker et encore moins de manipuler une infinité de chiffres, d’où l’impossibilité de travailler avec les nombres réels en toute généralité (qui sont « non calculables » je le rappelle).

    En ce qui concerne vos expériences « positives », il peut
    s’agir soit d’un coup de chance (notez par exemple que le petit programme C donne bien x0=x1=x2=...=x7=1 en simple précision -32 bits-, parce qu’alors A-B=1, un peu « par hasard »), soit d’un calcul effectué de manière formelle (c’est certainement le cas avec Mathematica pour cet exemple).

    Répondre à ce message
    • Un ordinateur est-il une parfaite machine à calculer ?

      le 18 octobre 2010 à 14:19, par Marc JAMBON

      Non, ce ne peut être au hasard. J’ai essayé de nombreux exemples autres que les vôtres. Je m’intéresse à ces questions depuis des decennies en tant que mathématicien enseignant chercheur et accessoirement utilisateur des ordinateurs. Toutes les fois que les calculs sont exacts avec des nombres décimaux par les méthodes « manuelles », ils le sont avec l’ordinateur ou la calculatrice pourvu qu’il n’y ait pas de dépassement de capacité en écriture décimale. En particulier l’utilisation de nombres décimaux tels 0.2, 0.3 qui n’ont pas de représentation finie en binaire ne pose aucun problème.
      Bien sûr, les ordinateurs sont finis, je le sais depuis longtemps, et les nombres « réels » au sens mathématique ne sont jamais rentrés dans aucun ordinateur, il serait plus pertinent d’appeler ces nombres tels, pi, e, racine de 2, des nombres infinitisimaux, le mot « réel » est trompeur, je soupçonne qu’il a été introduit par opposition aux nombres complexes. Le programme de mathématique des collèges et lycées ne donne aucune idée de ce qu’est un « nombre réel mathématique » et entretient la confusion avec les nombres qualifiés de « réel » dans certains programmes d’ordinateurs, de toute façon, il faudrait utiliser deux mots différents.
      Que ce soit à partir de l’idée que je propose que vous qualifier de DCB (qui serait historiquement la première) ou d’une méthode plus sophistiquée, peu importe, je reste totalement convaincu que les calculs tels que additions, soustractions et multiplications sont effectués dans la base dix, il ne s’introduit aucune erreur tant qu’il n’y a pas de dépassement de capacité en écriture décimale, c’est compatible avec la finitude des ordinateurs, à la condition expresse qu’ils calculent en base dix. Au delà, il y a des arrondis ou des troncatures qui peuvent dépendre du logiciel de l’ordinateur utilisé et dont on aimerait bien connaitre les règles, elles ne sont jamais données !

      Répondre à ce message
  • Un ordinateur est-il une parfaite machine à calculer ?

    le 18 octobre 2010 à 17:54, par Jean-François Colonna

    Il me semble d’abord que le choix de la base de numération n’a aucune importance ici (d’ailleurs, votre idée, celle du DCB depuis longtemps abandonnée, se transposerait à toute base en utilisant des « paquets » de bits de tailles suffisantes), mais il est vrai que la base 10 est plus « naturelle », les bases 2 et 3 étant les plus « économiques » en terme d’information. D’autre part, quelle que soit la base, il est évident qu’il n’y a pas de problèmes tant qu’il n’y pas de débordements or dans les calculs, tels ceux que l’on rencontre en physique mathématique, ces débordements me semblent inévitables (c’est le cas, en particulier, des calculs itératifs qui de plus, mathématiquement, utilisent en général les nombres réels). Enfin, j’ajouterai que la connaissance parfaite (ce qui n’est en général pas le cas comme vous le soulignez) des règles d’arrondis ne résoudrait pas tous les problèmes : je pense évidemment aux systèmes sensibles aux conditions initiales. En effet, dans leur cas, tout résultat intermédiaire X est la condition initiale du calcul suivant et donc toute imprécision concernant X se répercute dramatiquement sur la suite (voir les expériences que j’ai faites sur la dynamique de Verhulst ou encore l’attracteur de Lorenz : http://www.lactamme.polytechnique.f...)...

    Répondre à ce message
Pour participer à la discussion merci de vous identifier : Si vous n'avez pas d'identifiant, vous pouvez vous inscrire.