Calcul incorrect à cause de la précision
Bonjour,
Auriez-vous un exemple de calcul mêlant additions et multiplications qui donne un résultat totalement faux quand on l'effectue dans un ordinateur, avec des nombres "double" ? Le but est d'illustrer un type de nombres avec précision arbitraire.
Auriez-vous un exemple de calcul mêlant additions et multiplications qui donne un résultat totalement faux quand on l'effectue dans un ordinateur, avec des nombres "double" ? Le but est d'illustrer un type de nombres avec précision arbitraire.
Réponses
-
Avec la recherche "erreur arrondi bourse float" sur Google, j'obtiens par exemple https://www.math.univ-paris13.fr/~japhet/Doc/Handouts/RoundOffErrors.pdf
-
Merci, mais je n'ai que l'addition/soustraction et la multiplication/division, pas de sinus, pas de racine carrée, rien d'autre.
-
Bonjour.
Sur les calculettes, je donnais
(1+10^20)-10^20
dont le résultat est faussement 0. À adapter.
Cordialement. -
Il y a aussi le classique $u_0=\frac{1}{7},$ $u_{n+1}=8u_n-1$ (suite constante égale à $\frac{1}{7}$). Le calcul des 40 premiers termes avec un tableur est assez éloquent.
-
@Rebellin,
Impressionnant.
On peut ajouter 2 colonnes dans le tableur : $v_n = u_n-u_{n+1}$
Et $w_n = \dfrac {v_{n+1} }{ v_n}$
Et on constate que cette suite $w_n$ est constante, égale à $8$.
Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends. Benjamin Franklin
L'hypocrisie est pire qu'une vérité qui fait mal. Franck Ntasamara. -
Un exemple que j'aime bien :
$\begin{array}{rcl}
u_0 & = &4\\
u_1 & = &\dfrac{17}{4}\\
u_{n+1} & = &108 - \dfrac{815 - \frac{1500}{u_{n-1} }}{u_n} \\
\end{array}$
Calculé avec 38 décimales (les tableurs c'est de l'ordre de 15 ou 16)
$u_{62}=99.99999999999999999999999999999999999995$
et pour $n >62, u_n = 100$ alors qu'il est facile de montrer que la limite de $u_n$ est 5 (on peut exprimer $u_n$ en fonction de $n$)
Pire :Autre exemple (calculs faits avec un tableur) :
$(10000003 + (-10000000)) + 7,501 = 10,501 $
$10000003 + ((-10000000) + 7,501) = 10,5010000001639 $Autrement dit, l'addition des réels dans ce tableur n'est pas associative !Il ne faut pas respirer la compote, ça fait tousser.
J'affirme péremptoirement que toute affirmation péremptoire est fausse -
Génial, merci. Je vais prendre l'exemple de la suite constante.
-
On a aussi comme pour l’exemple de Gérard : $1+10^{-20}$ qui renvoie $1$.J’ai déjà posté un cliché tiré du livre du CNED pour la préparation au CAPES (il commence à dater…) qui proposait une suite et qui expliquait les erreurs.
C’était un peu comme l’exemple de Médiat_Suprème (n’est-ce le même d’ailleurs ? je me souviens que ça convergeait de manière erronée vers $100$ également). -
J'avoue que je ne sais plus où j'ai trouvé cet exemple, sauf que c'était en étudiant les axiomatiques constructives.Il ne faut pas respirer la compote, ça fait tousser.
J'affirme péremptoirement que toute affirmation péremptoire est fausse -
J’ai retrouvé 😀
La construction de cette suite est bien la même. -
Le terme "erreur" ici n'est pas correct. L'ordinateur fait des calculs corrects. Le seul problème est qu'on fait des calculs avec des flottants sur la machine alors qu'on manipule des nombres réels sur le papier. Mais à proprement parler il n'y a pas d'erreur !
-
Zut, je ne comprends pas.Il s’agit bien d’erreurs d’affichage de mon point de vue. Cependant j’utilise le terme « erreur » dans un sens courant et je ne sais pas s’il a une acception spécifique dans ce cadre.Aussi je ne comprends pas quand tu dis que « l’ordinateur fait des calculs corrects ».
Quand je demande à Google $3^{-1345}+2^{-2734}$, que fait-il de correct ? (Ce n’est pas une question piège ou rhétorique, je n’y connais fichtre rien). -
Je ne comprends pas non plus : si l'ordinateur fait des calculs corrects, pourquoi l'affichage ne le serait-il pas ?? Ou alors c'est que la représentation flottante d'un nombre réel ne lui est pas forcément égal ? Oui, je crois que c'est ça. Alors donnons un exemple d'un nombre différent de sa représentation flottante.
-
Facile : 4/3-1/3-1/3-1/3-1/3 n'est pas égal à 0 pour un ordinateur.Autrement dit, les nombres (4/3-1/3-1/3-1/3) et 1/3 n'ont pas la même représentation.
-
Bonsoir,
Pour Matlab: 4/3-1/3-1/3-1/3-1/3=1.1102e-16
Cordialement,
Rescassol
-
Oui mais (4/3-1/3-1/3-1/3) résulte d'un calcul sur plusieurs nombres.. Et tous ces nombres ont chacun leur représentation flottante qui leur est égale non ? Alors, si l'ordinateur calcule correctement il n'y a pas de raison que le résultat soit faux ! Bon j'ai trouvé une page qui devrait éclairer :
https://leria-info.univ-angers.fr/~jeanmichel.richer/ensl1i_base_de_l_info_1_flottants.php
-
Ben les flottants sont décimaux !
-
4/3-1/3-1/3-1/3-1/3 n'est pas égal à 0 pour un ordinateur.Autrement dit, les nombres (4/3-1/3-1/3-1/3) et 1/3 n'ont pas la même représentation.
Quand le programme chargé de traiter les entrées de l'utilisateur humain représente la saisie du caractère 1 puis du caractère solidus puis du caractère 3 par un dit "flottant" afin qu'il soit traité par un programme informatique chargé de faire les calculs en utilisant directement les instructions du microprocesseur faites pour, c'est ce qui arrive.
Si le programme chargé de traiter les entrées de l'utilisateur humain représente la saisie du caractère 1 puis du caractère solidus puis du caractère 3 par une structure de données conçue pour représenter imparfaitement un nombre rationnel et qu'il l'envoie à un programme informatique conçu pour faire des calculs simples dessus, il n'est pas sûr qu'on ait le même résultat que précédemment.
-
Le fait que les ordinateurs ne peuvent pas représenter tous les nombres réels et qu'il en résulte obligatoirement des approximations dans les calculs faits à partir de la représentation qu'ils ont des réels (sous le forme de nombre nommés "flottants") est désormais au programme du lycée.En théorie, "tout le monde" connaîtra cela dans quelques années.
-
Bonjour
sur certaines calculatrices (dont la mienne ! ) (1+10^20)-10^20 renvoie bien 1
-
Oui, cela dit en le faisant pas à pas, ça coince j’imagine.
-
Bonjour,
Pour $1+10^n-10^n$, Matlab répond $0$ à partir de $n=16$.
Cordialement,
Rescassol
Connectez-vous ou Inscrivez-vous pour répondre.
Bonjour!
Catégories
- 165.1K Toutes les catégories
- 59 Collège/Lycée
- 22.1K Algèbre
- 37.5K Analyse
- 6.3K Arithmétique
- 58 Catégories et structures
- 1.1K Combinatoire et Graphes
- 13 Sciences des données
- 5.1K Concours et Examens
- 20 CultureMath
- 51 Enseignement à distance
- 2.9K Fondements et Logique
- 10.7K Géométrie
- 83 Géométrie différentielle
- 1.1K Histoire des Mathématiques
- 79 Informatique théorique
- 3.9K LaTeX
- 39K Les-mathématiques
- 3.5K Livres, articles, revues, (...)
- 2.7K Logiciels pour les mathématiques
- 24 Mathématiques et finance
- 337 Mathématiques et Physique
- 5K Mathématiques et Société
- 3.3K Pédagogie, enseignement, orientation
- 10.1K Probabilités, théorie de la mesure
- 801 Shtam
- 4.2K Statistiques
- 3.8K Topologie
- 1.4K Vie du Forum et de ses membres