Les erreurs d'arrondis en informatique peuvent causer des drames. En 1991, 28 soldats américains furent tués à cause d'un problème de ce type durant la guerre du Golfe : un système antimissile américain échoua à intercepter un missile irakien du fait d'une accumulation d'erreurs d'arrondis conduisant à un décalage de 0,34 seconde sur le calcul de la trajectoire du missile. Peu de temps, mais suffisamment pour que l'anti-missile rate sa cible de 500 mètres.
Tous les commentaires (57)
Ce qu'il y a de bien c'est que l'humain à des mots pour tout ses erreurs: dommage collatéral ou le célèbres tire amies
Les docteurs ne sont pas des serials Killers !
Un nombre binaire (base 2) est composé de 0 et de 1 (appelé un bit).
Un nombre binaire est composé d'octets (une suite de 8bits). Donc 3 octets = 24bits.
Pour convertir en décimale (base 10), la position des 1 dans le nombre binaire représente une puissance de 2.
Par exemple 00001001 = 2^3 + 2^0 = 8 + 1 = 9
Pour les nombres à virgule, c'est un peu le même principe, les puissances de 2 devenant négatives (donc des divisions par des puissances de 2).
Essayons simplement pour 0.1 :
2^-1 = 1/2 = 0.5 (trop grand)
2^-2 = 1/4 = 0.25 (trop grand)
2^-3 = 1/8 = 0.125 (trop grand)
2^-4 = 1/16 = 0.0625 (trop petit !)
Il faut donc utiliser d'autres bits pour compléter jusque 0.1.
Soit :
2^-4 + 2^-5 = 0.09375
Peut mieux faire :
2^-4 + 2^-5 + 2^-6 = 0,109375
Trop grand !
On essaye donc
2^-4 + 2^-5 + 2^-7 = 0,1015625
Trop grand ...
on continue
2^-4 + 2^-5 + 2^-8 = 0,09765625
On s'approche, mais il y a une erreur.
Avec ce système on peut continuer très longtemps, on n'arrivera jamais à 0.1
Soit sur 24bits :
0.0001100110011001100110011001100 avec une erreur de 0.000000095 sur la conversion décimale
Cette erreur humaine a été avancée au départ, plus tard on s'est aperçu que les missiles patriotes n'ont jamais fait explosé un autre missile en vol... Israël en a été doté, mais ils ont été inefficaces la aussi.
Au vu des résultats et de l'argent investi, les militaires ont été sommé de s'expliquer, effectivement ils ont toujours dit que les patriotes "interceptent" bien les missiles... C'est a dire les croisent de très près, mais jamais ils n'ont dit que les missiles "neutralisaient" c'est a dire détruisent ces missiles, le problème technique étaient que les patriotes explosaient trop tard... Bref des pertes humaines et beaucoup d'argent pour un problème de mot...
Comme précisé précédemment, l'"erreur" de calcul n'est pas dû à une arrondie volontaire des physiciens, mais plutôt à un défaut du codage des nombre et donc des calculs en informatiques. En effet, comme expliqué plus haut, le décompte en binaire (puissances de 2) est plus pratique en informatique/physique car il peut être chiffré par une succession de 1 et de 0 (représenté par des creux ou des non-creux sur nos cd/blue-ray par exemple). Mais en ce qui concerne les nombres réels (tels que pi, e, etc...) intervenant dans les calculs de trajectoire (de surcroit très souvent en complexe) le binaire n'est pas la meilleure manière d'aborder le sujet. Les erreurs sont pourtant estimables et appréhendables par les mathématiciens, et dans le cas contraires peuvent être carrément grossières. Avec un simple calcul tel que 3*0.1-0.3 le logiciel Python (utile à la programmation de quelques fonctions mathématiques) ne renvoie pas 0!
Ben en binaire c'est pareil, 1/2 s'écrit 0.1, 1/4 s'écrit 0.01... mais on ne peut pas écrire 1/3 ou 1/10 en un nombre fini de décimale (enfin la, ça serait plutôt des binairales ^_^).
Et en base 3, on peut très bien écrire 1/3 : 0.1 ; mais pas 1/10 : 0.0022... etc
(y'a sûrement des erreurs dans mon commentaire, mais si je le souviens bien c'est ca^^)
Source : Mon ancien BTS IG.
Pour répondre à ta question edb25, il faut savoir que les calculs de ce genre ne sont presque jamais des nombres finis, il y a alors une montagne de calcul d'incertitude ( bisous à tout ceux qui ont fait de la métro ) qui peuvent expliquer cela : même un arrondi au 8ème chiffre après la virgule peut déjà constituer une erreur. C'est verifiable de nos jours juste avec votre gps : un décalage d'une seconde et le gps vous localise à plus de 1km de votre position donc ça ne m'étonne pas pour ce resultat qui doit tenir compte du déplacement du missile.
Drame de mes fesses! Au début je pensais que c'était des calculs qui on fait qu'un ordi ait mal calculer des trucs ce qui a produit une défaillance et qui a surchauffé la tour et qui a brûler ma maison... Et qui a fait des morts
Mais là on parle de gens partis pour tuer! Et ajoudhuis on trouve dommage qu'ils soient morts, mais c'est la guerre, et en face ça m'étonnerait qu'ils aient les mêmes armes...
Je charrie mais c'est effectivement une bonne explication, l'ordinateur ne verra pas "1" mais une valeur très proche.
c'est pareil pour la NASA (et autres) qui envoient des fusées, satellite, etc.. dans l'espace, tout est calculé au 1/100000 de nanomètre près par des super-ordinateurs, on ne peut pas se permettre de faire des arrondis sinon c'est le désastre, surtout à l'échelle du système solaire ^^
Moi ça me rappelle le naufrage du Sheffield qui coula parce qu'un autre navire ciblé par un exocet activa sa protection électronique. Du coup, l'exocet cibla le Sheffield qui au même moment avait abaissé sa protection électronique afin de communiquer par radio.