snowball a écrit 168 commentaires

  • [^] # Re: Il faut bien lire ce qu'on lit!

    Posté par  (site web personnel) . En réponse au journal Le retour de la vengeance de la virgule flottante. Évalué à 3.

    C'est tout à fait juste. Je mettrais juste un bémol quand tu dis ça:

    Si, enfin, tu te restreins à des langages où le nombre de décimales est fixe et dans lesquels on ne peut faire que des additions, des soustractions ou des multiplications, alors il suffit de travailler en virgule fixe

    Pour les multiplications ça marche pas (à moins que tu fasses un entier fois un décimal et que ça ne sorte pas de la plage). Pour les matheux, la structure algébrique qui sous-tend la virgule fixe c'est le \mathbb{Z}-module pas l'anneau.

  • [^] # Re: Il faut bien lire ce qu'on lit!

    Posté par  (site web personnel) . En réponse au journal Le retour de la vengeance de la virgule flottante. Évalué à 1.

    On prouve qu'un angle est toujours subdivisible dans les proportions entières que l'on veut

    Tu veux dire que dans les Éléments de Géométrie d'Euclide tu as une preuve de la trisection de l'angle ? Es-tu certain ou j'ai mal compris ?

    Quel théorème classique de la géométrie euclidienne utilises-tu pour démontrer l'existence de n points uniformément répartis sur le cercle ?

  • [^] # Re: Il faut bien lire ce qu'on lit!

    Posté par  (site web personnel) . En réponse au journal Le retour de la vengeance de la virgule flottante. Évalué à 2.

    Heu, à bac+1, des étudiants plutôt forts (choisis parmi les 10% meilleurs d'une classe d'âge post bac S), sortis du bac, ne comprennent pas la définition formelle d'une limite qu'on donnait dans toutes les classes de première S il y a 20 ans, ne savent pas dériver une composée, ne savent pas manipuler les ensembles (confondent éléments, parties, même dans les cas les plus simples), ne se souviennent pas souvent de la formule permettant de calculer un produit scalaire dans un r.o.n, n'ont jamais vu la définition d'une rotation, et j'en passe. Ils savent que l'aire sous la courbe entre a et b correspond à une intégrale de a à b. A bac+1, après quelques mois, ils savent faire des changements de variables linéaires et apprennent ce qu'est une somme de Riemann. C'est pour ça que j'ai autant limité mon papier (j'ai fait un effort d'accessibilité bac+1).

    Imagine un peu si tu t'amuses à construire l'aire d'une partie A de R2 par le sup en e>0 des inf des séries de terme les aires des disques de diamètre au plus e dont la réunion recouvre A !!!! La notion de sup, tu oublies (inf, idem), la notion de série tu oublies, la notion de recouvrement dénombrable les achève définitivement et la tentative de comprendre l'ensemble de la construction les enterre :) :) Et puis il faudra leur faire admettre l'additivité d'une telle mesure (pas facile du tout. Même l'invariance par translation leur demanderait un effort monstrueux alors l'homothétie qui multiplie les aires par le carré du rapport, t'imagines !!!) Surtout si à la fin tu leur dis fièrement avoir démontré que l'aire d'un disque de rayon r est \pi r^2 !! :) :)

  • [^] # Re: Il faut bien lire ce qu'on lit!

    Posté par  (site web personnel) . En réponse au journal Le retour de la vengeance de la virgule flottante. Évalué à 2.

    Ceci étant ce processus est (partiellement ?) constructible à la règle et au compas,

    Il n'est quasiment jamais constructible (sauf quand n est un produit d'une puissance de deux par des nombres premiers de Fermat c'est à dire de la forme 1+2^{(2^m)}).
    C'est justement la remarque de Michaël: le raisonnement s'appuie (inutilement) sur une figure non constructible règle et compas. Si on y pense bien, la preuve de l'existence de n points uniformément répartis sur le cercle n'a rien d'évident à l'aide des théorèmes de la géométrie euclidienne classique.

  • [^] # Re: Il faut bien lire ce qu'on lit!

    Posté par  (site web personnel) . En réponse au journal Le retour de la vengeance de la virgule flottante. Évalué à 2.

    C'est vrai qu'on peut se contenter de faire le calcul mais remarquer que la surface de quelque chose change en \lambda2 lorsque cette chose subit une homothétie de rapport \lambda est quand-même une remarque importante. ;)

    Bin le calcul illustre l'homothétie de rapport r le long des deux axes (dx devient r dt par homothétie sur les abscisses, et f(rt)=rf1(t) montre l'homothétie sur les ordonnées). Avec la mesure produit issue de la mesure de Lebesgue sur R2, tu fais finalement la même chose. Certes, je te l'accorde, mon papier c'est plus artisanal (je précise au début que c'est volontairement niveau bac+1) et ça évite de sortir l'artillerie lourde (l'existence de la mesure de Lebesgue sur R, c'est du lourd, et la mesure produit sur R2 en rajoute une couche). Avec l'âge, j'évite de sortir le marteau piqueur pour écraser une mouche, sûrement pour économiser mes lombaires :)

    Et puis c'est vraiment un point de détail d'expression mais je pense que c'est quand-même plus satisfaisant si on se donne la peine de dire quelque part que “Pi est la surface d'un disque unité.”

    Dans mon papier, si tu regardes bien, je précise dès le début que Ar est la surface du disque de rayon r (et je note pi celle du disque de rayon 1).

    À la fac on avait tout fait avec la fonction exponentielle, du genre “regardez ma belle fonction analytique” puis on déroule tout pour définir pi comme le premier zéro positif de la fonction sinus, puis on calcule le périmètre (facile) et l'aire en faisant le changement trigo adéquat dans ton intégrale.

    Oui !!! C'est le développement proposé par W.Rudin dans son (génial) Analyse Réelle et Complexe. De mémoire, ça constitue les 2 première pages: il définit l'exponentielle complexe ez via la complétude de C et la convergence normale de la série des z^n/n!, il en déduit les fonctions trigo usuelles et les formules de développement usuelles (en se servant la série produit et des propriétés de convergence commutative par convergence absolue de la série définissant e^z). Il définit alors pi comme le double du plus petit réel >0 annulant la fonction cosinus. Ce bouquin est une merveille de clarté, propose des exercices super intéressants (mais difficiles et non corrigés) et va quand même très loin en moins de 300 pages, avec des preuves très belles et très efficaces: un must !

  • [^] # Re: Il faut bien lire ce qu'on lit!

    Posté par  (site web personnel) . En réponse au journal Le retour de la vengeance de la virgule flottante. Évalué à 1.

    Bien vu pour TeX. Je n'y avais pas du tout pensé.

  • # Un papier intéressant sur l'arithmétique flottante et la comparaison avec celle des intervalles

    Posté par  (site web personnel) . En réponse au journal Le retour de la vengeance de la virgule flottante. Évalué à 3.

    Pour ceux qui sont intéressés, entre autres, par les coûts liés à l'implantation du système dont il est question dans ce journal: http://perso.ens-lyon.fr/nathalie.revol/talks/sieste-NR-11.pdf

  • [^] # Re: Il faut bien lire ce qu'on lit!

    Posté par  (site web personnel) . En réponse au journal Le retour de la vengeance de la virgule flottante. Évalué à 2.

    Allez, j'y mets mon grain de sel pour rester niveau bac+1. Comme le LaTeX passe assez mal chez certains lecteurs: https://i.imgur.com/MhtPmwt.png

  • [^] # Re: Il faut bien lire ce qu'on lit!

    Posté par  (site web personnel) . En réponse au journal Le retour de la vengeance de la virgule flottante. Évalué à 4.

    Très sympa ton com'.

  • [^] # Re: Il faut bien lire ce qu'on lit!

    Posté par  (site web personnel) . En réponse au journal Le retour de la vengeance de la virgule flottante. Évalué à 0.

    Lol !!!!
    Ils l'ont peut-être dit tous les deux sans savoir que ni l'un ni l'autre l'avait déjà dit :)

  • [^] # Re: Il faut bien lire ce qu'on lit!

    Posté par  (site web personnel) . En réponse au journal Le retour de la vengeance de la virgule flottante. Évalué à 6.

    L'informatique est une branche des mathématiques. On peut faire tourner un programme avec sa tête, à la main, avec un boulier, avec de l'électronique etc. On peut faire de l'informatique sans ordinateur. L'ordinateur n'est qu'une moyen technique de pratiquer du calcul rapidement. Une citation que j'aime à ce sujet:

    "La science informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes" (Hal Abelson)

    Quant aux mathématiques, elles n'ont ni plus, ni moins de réalité tangible que l'informatique. Ce que tu vois à l'écran, tu pourrais le voir sur une feuille en dessinant ou en écrivant ou même en pensant; ce que fait l'ordinateur est du calcul que tout humain peut faire (en théorie) dans sa tête.

  • [^] # Re: Il faut bien lire ce qu'on lit!

    Posté par  (site web personnel) . En réponse au journal Le retour de la vengeance de la virgule flottante. Évalué à 5.

    Un centime, c'est un centime. Je veux pas qu'il prenne son indépendance même si "il y a une bonne raison mathématique" derrière. Je veux que le langage (le compilateur ou l'interpréteur) me force à me poser la question dès que je risque de créer un problème d'arrondi ou de dépassement.

    Si tu veux un langage qui répond à tes besoins, il va falloir les spécifier précisément ces besoins. Commençons donc par quelques questions basiques:

    1. Quand tu augmentes un employé qui gagne 2101.35€ de 10%, tu veux que ton langage te donne quoi comme résultat ? 2311.49€ ou 2311.48€ ?
    2. Quand tu dois répartir 100€ d'augmentation de façon égale sur 3 employés, tu veux que ton langage te donne quoi comme résultat ?
    3. Quand tu as effectué une remise de 10% à un client sur toute une série de produits puis que que le mois d'après il faut annuler cette remise, tu attends quoi de ton langage si tu ne lui autorises que des décimaux ?

    (exemple: je pars de 13.55, j'applique la remise et j'obtiens 12.195, je la stocke comment déjà ? avec deux décimales ? Si oui je garde quoi 12.20 ou 12.19 ? Et quand bien même on aurait gardé 3 décimales (en coupant des centimes en deux), comment le langage va faire pour annuler la remise initiale puisque qu'il faudrait multiplier par 10/9 mais que ce nombre n'est pas un décimal et que de toute façon il n'a pas de représentation exacte en machine ? Dans quoi le langage va t-il stocker ce 10/9 ? Si on fait des approximations au décimal le plus proche, sur 10 unités ça se verra pas trop, mais sur 100 000 unités, ça va faire un sacré écart…

    Comment répondait le COBOL à tous ces problèmes ? Aucun langage ne peut deviner comment arrondir ce qui ne tombe pas juste. Ce n'est pas au langage de décider des règles d'arrondi mais à l'utilisateur.

    De toute façon, il y a une solution à toutes questions si tu veux rester le plus juste possible: tu calcules tout en float (donc tu ne perds qu'à 1e-17 près en erreur relative) et tu arrondis en sortie au décimal le plus proche. Tu auras ainsi exactement ce que tu voulais. C'est d'ailleurs ce que fait une calculatrice.

  • [^] # Re: Il faut bien lire ce qu'on lit!

    Posté par  (site web personnel) . En réponse au journal Le retour de la vengeance de la virgule flottante. Évalué à 5.

    Même dans le monde de la finance, tu as très rapidement besoin des floats. Le monde de la finance ne se contente pas d'additionner/soustraire des décimaux.

    • On a besoin de diviser par autre chose que des puissances de 10 (par 3, par 7 etc).
    • On utilise le logarithme (dans toutes les situations où on applique un taux répété, donc dans toutes les situations à progression exponentielle).
    • On a également besoin d'utiliser des régressions linéaires nécessitant des méthodes de moindres carrés où la racine carrée arrive au bout de deux ou trois lignes).

    Pour toutes ces opérations l'ensemble des décimaux n'est pas stable (i.e dès que tu appliques l'une de ces opérations à un type décimal tu n'obtiens plus un type décimal)

    Le cadre naturel de ces opérations n'est pas l'ensemble des décimaux: quand bien même les données en entrée seraient décimales, les résultats ne le sont plus dans 99.999999% des cas et donc exiger, par défaut, de travailler chez les décimaux est absurde (c'est pour ça que ça n'est pas le cas, et c'est pourquoi quand on a besoin, dans de petits intervalles d'additionner ou soustraire des décimaux, on a conçu des librairies ad hoc.

    Tout cela a déjà été discuté dans le journal précédent.

  • [^] # Re: Il faut bien lire ce qu'on lit!

    Posté par  (site web personnel) . En réponse au journal Le retour de la vengeance de la virgule flottante. Évalué à 1.

    Je te demandais ça parce que tu l'as écrit plusieurs fois du coup j'ai cru que c'était volontaire.

  • [^] # Re: Ne règle pas le "problème" du journa précédent

    Posté par  (site web personnel) . En réponse au journal Le retour de la vengeance de la virgule flottante. Évalué à 7.

    Commence déjà par TE normaliser, te calmer, clarifier ta pensée et donner des exemples précis de ce que tu tentes d'exprimer à travers des expressions tellement raccourcies qu'elles n'ont absolument aucun sens.

    En calcul numérique on utilise des flottants car ils permettent de la dynamique. Cette notion est essentielle. Si tu ne vois pas ce qu'en calcul numérique on appelle la dynamique tu peux toujours aller lire ce document http://perso.univ-perp.fr/guillaume.revy/teaching/201516/ValidationNumerique/C1-ValidationNumerique.pdf (page 23/37) ou ici http://perso.ens-lyon.fr/jean-michel.muller/Ecole_PRCN_Muller.pdf (page 2). Tu y apprendras ce qu'on appelle la dynamique, à quoi ça sert, pourquoi c'est indispensable en calcul numérique.

    Je ne retire pas un iota (ni un ulp :) ) de ce que j'ai dit depuis le début sur ces sujets, tout simplement parce que ce ne sont pas mes convictions personnelles, mais
    juste des maths basiques que tu trouveras dans n'importe quel cours d'introduction ou d'approfondissement d'analyse numérique. Ces idées basiques se fichent bien de quelconques considérations hystérico-égotiques vers lesquelles tu veux systématiquement emmener les discussions.

    Je ne suis responsable ni de des frustrations ni de ton mal être. Trouve toi un autre camarade sur qui passer tes nerfs. Fin de partie pour moi concernant tes interventions/agressions.

  • [^] # Re: Ne règle pas le "problème" du journa précédent

    Posté par  (site web personnel) . En réponse au journal Le retour de la vengeance de la virgule flottante. Évalué à 1.

    C'est une des raisons pour lesquelles je préfère firefox à chromium :)

  • [^] # Re: Ne règle pas le "problème" du journa précédent

    Posté par  (site web personnel) . En réponse au journal Le retour de la vengeance de la virgule flottante. Évalué à 1.

    Sous firefox j'ai ça: https://i.imgur.com/AYr9bjO.png

  • [^] # Re: Ne règle pas le "problème" du journa précédent

    Posté par  (site web personnel) . En réponse au journal Le retour de la vengeance de la virgule flottante. Évalué à 2.

    Pour ta deuxième question (comparaison virgule fixe/virgule flottante):

    Chaque approche a un intérêt propre directement lié à ce que veut faire l'utilisateur.

    En gros la virgule fixe sert à représenter uniformément les réels d'un intervalle fixe a;b. C'est donc du "râteau fixe" où les nombres sont uniformément répartis (de la forme a+ (b-a) k 2^{-f}k est un entier compris entre 0 et 2^f-1). Bref, manipuler de la virgule fixe, c'est quasiment comme manipuler des entiers k avec des ulp constants égaux à (b-a)2^{-f}. L'avantage c'est que ça fournit de l'exactitude dans [a;b] pour des additions/soustractions (c'est super pour les manipulations monétaires).

    Par contre, tu n'as aucune dynamique ni vers 0+ ni vers +\infty. Par exemple, la moitié d'un ulp donnera directement 0. Et tu resteras coincé entre a et b. En science, la dynamique est essentielle, l'exactitude sur une machine, est une illusion: on choisit naturellement les floats. Le banquier choisir naturellement la virgule fixe.

    La plupart des langages évolués ont des modules pour gérer la virgule fixe (d'ailleurs souvent à partir des flottants !).

  • [^] # Re: Ne règle pas le "problème" du journa précédent

    Posté par  (site web personnel) . En réponse au journal Le retour de la vengeance de la virgule flottante. Évalué à 1.

    https://en.wikipedia.org/wiki/Unit_in_the_last_place

    En gros, un flottant s'écrit sous la forme 2^e (1+k.2^{-f}) où e est un entier (l'exposant) et k est un entier compris entre 0 et 2^f - 1. Chez les double, on prend f=52 (52 bits de mantisse pour représenter k, 11 bits pour représenter l'exposant et 1 pour le signe).

    Par définition, 1ulp =2^{e-f} c'est à dire l'écart minimal entre deux flottants de même exposant.

    Quand tu écris x=1.5, tu as e=0 et donc, pour les flottants correspondants, 1ulp=2^{-52} soit environ 2e-16.

    Si maintenant tu considères x=3, tu as e=1 et donc pour les flottants correspondants, 1ulp=2^{1-52}=2^{-51} soit environ 4e-16. Etc.

    La valeur d'un ulp dépend directement de l'exposant.

    Une bonne façon de voir les flottants est le "râteau réglable". Je m'explique: le nombre de dents c'est 2^f (où f désigne toujours le nombre de bits de la mantisse), c'est donc fixé. Par contre, en jouant sur la valeur de e, tu peux modifier l'écart entre deux dents successives (en multipliant/divisant cet écart successivement par 2). Un ulp c'est l'écart entre deux dents pour un réglage e du râteau donné.

    En espérant avoir été clair.

  • [^] # Re: Ne règle pas le "problème" du journa précédent

    Posté par  (site web personnel) . En réponse au journal Le retour de la vengeance de la virgule flottante. Évalué à 4.

    J'ai choisi un cas "violent" pour montrer ce qu'apporte ce système à l'utilisateur (il est très agréable de connaître l'intervalle de confiance d'un résultat).

    L'évaluation de "la" borne est également soumise aux problèmes d'approximation, évidemment. Mais comme tu cherches des majorants de l'erreur, le calcul exact d'un "meilleur" majorant n'est pas nécessaire (à chaque fois on peut arrondir au dessus si on ne peut pas faire mieux).
    Il n'y a évidemment aucune promesse d'exactitude dans ce système, juste des indications de confiance correctes, mais c'est pas mal (à condition que ça soit fait par le FPU lui-même évidemment).

  • [^] # Re: Ne règle pas le "problème" du journa précédent

    Posté par  (site web personnel) . En réponse au journal Le retour de la vengeance de la virgule flottante. Évalué à 2.

    Pas de souci.

  • [^] # Re: Ne règle pas le "problème" du journa précédent

    Posté par  (site web personnel) . En réponse au journal Le retour de la vengeance de la virgule flottante. Évalué à 3.

    Bah, en l'occurrence, le système dont il est question dans cet article prévient l'utilisateur que le résultat qu'il donne est vrai à … 2 près :)

    De son côté IEEE754 donne le même résultat et c'est à l'utilisateur d'anticiper que la réduction modulo pi de 2^{64} dans l'intervalle -pi/2…pi/2 engendre des erreurs d'approximation tellement grandes sur l'argument que le résultat donné ne pourra être vrai qu'à … 2 près.

    En gros les deux donnent le même résultat, avec, évidemment aucun chiffre significatif exact, mais le premier ne le fait pas silencieusement à la différence du second.

  • [^] # Re: Ne règle pas le "problème" du journa précédent

    Posté par  (site web personnel) . En réponse au journal Le retour de la vengeance de la virgule flottante. Évalué à 3.

    J'ai dit le contraire de ce que tu dis puisque je viens justement d'expliquer que la taille de l'intervalle d'encadrement obtenue avec des flottants classiques (pour le calcul de 2-1.8-0.2) est supérieure à 3 ulp (et donc cet encadrement contient 0).
    Ce n'est pas la peine d'être un spécialiste, puisque ça s'apprend dès le premier cours d'arithmétique flottante. C'est bien d'ailleurs pour cela que, dans le journal précédent, les intervenants ont précisé à plusieurs reprises que "le résultat donné par python était juste car conforme à ce que stipule la norme en terme de précision".
    Comme je n'ai pas envie de repartir dans une conversation trollesque et que tout a déjà été dit, je m'arrête là dans la lutte d'égo vers laquelle tu sembles à nouveau te diriger.
    Bonne continuation.

  • [^] # Re: Ne règle pas le "problème" du journa précédent

    Posté par  (site web personnel) . En réponse au journal Le retour de la vengeance de la virgule flottante. Évalué à 1.

    C'était déjà le cas avant comme le stipule IEEE754 (elle te dit que tu perds au maximum 1ulp par addition sur des flottants de même exposant et au minimum 3ulp si tu additionnes 3 flottants distants de 1 au niveau de l'exposant). L'avantage de ce système n'est pas pour trois additions mais plutôt pour des calculs du genre \sin(2^{64}) où il faut pas mal se casser la tête pour trouver un majorant de l'erreur.

  • [^] # Re: Il faut bien lire ce qu'on lit!

    Posté par  (site web personnel) . En réponse au journal Le retour de la vengeance de la virgule flottante. Évalué à 3.

    Sympa !
    PS
    Pourquoi écris-tu un "réelle" plutôt qu'un "réel" ?