CI 2 REPRÉSENTATION DES NOMBRES ET CONSÉQUENCES

Documents pareils
Chapitre 10 Arithmétique réelle

IFT2880 Organisation des ordinateurs et systèmes

Conversion d un entier. Méthode par soustraction

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Représentation des Nombres

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Représentation d un nombre en machine, erreurs d arrondis

Logiciel de Base. I. Représentation des nombres

Codage d information. Codage d information : -Définition-

V- Manipulations de nombres en binaire

Les opérations binaires

Initiation à la programmation en Python

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Représentation d un entier en base b

STAGE IREM 0- Premiers pas en Python

Informatique Générale

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Arithmétique réelle. Introduction à l arithmétique flottante La précision des calculs: analyse et améliorations. Valérie Ménissier-Morain


ASR1 TD7 : Un microprocesseur RISC 16 bits

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Licence Sciences et Technologies Examen janvier 2010

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

TP 1. Prise en main du langage Python

2 Comment fonctionne un ordinateur, dans les grandes lignes

DM 1 : Montre Autoquartz ETA

AC AB. A B C x 1. x + 1. d où. Avec un calcul vu au lycée, on démontre que cette solution admet deux solutions dont une seule nous intéresse : x =

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

1 Introduction au codage

Système binaire. Algèbre booléenne

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

2.4 Représentation graphique, tableau de Karnaugh

1 Recherche en table par balayage

Rappels Entrées -Sorties

Partie 1. Professeur : Haouati Abdelali. CPGE Lycée Omar Ibn Lkhattab - Meknès haouaticpge@gmail.com

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Continuité et dérivabilité d une fonction

as Architecture des Systèmes d Information

Introduction au langage C

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Algorithmique et Programmation, IMA

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

Cours Informatique 1. Monsieur SADOUNI Salheddine

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

Découverte de Python

UE C avancé cours 1: introduction et révisions

Cours 7 : Utilisation de modules sous python

Compléments de documentation Scilab : affichage de texte et formatage de nombres

IFT1215 Introduction aux systèmes informatiques

TD 1 - Transmission en bande de passe

Glossaire des nombres

Solutions du chapitre 4

Logique binaire. Aujourd'hui, l'algèbre de Boole trouve de nombreuses applications en informatique et dans la conception des circuits électroniques.

Cours d Algorithmique et de Langage C v 3.0

Architecture matérielle des systèmes informatiques

INF 321 : mémento de la syntaxe de Java

FONCTION COMPTAGE BINAIRE ET DIVISION DE FRÉQUENCE

Présentation du langage et premières fonctions

ProCod. Manuel d utilisation. Software de programmation pour codeurs absolus TWK modèles CRF et DAF CRF DF 08 / 10

Architecture des Systèmes d Information Architecture des Systèmes d Information

Microprocesseur + Logiciel

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Organigramme / Algorigramme Dossier élève 1 SI

Utilitaires méconnus de StrataFrame

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Architecture de l ordinateur

Compression Compression par dictionnaires

Programmes des classes préparatoires aux Grandes Ecoles

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Recherche dans un tableau

Initiation à LabView : Les exemples d applications :

Programmation en Java IUT GEII (MC-II1) 1

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Priorités de calcul :

Programmation C. Apprendre à développer des programmes simples dans le langage C

Notions fondamentales du langage C# Version 1.0

Algèbre binaire et Circuits logiques ( )

CODAGE DES SMS. 2 Commandes «AT» 25 3 Matériels utilisés 55 4 Interfacer un téléphone GSM 73 5 Réalisations électroniques 101

MPI Activité.10 : Logique binaire Portes logiques

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

Algorithmes et mathématiques. 1. Premiers pas avec Python. Exo Hello world!

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

ALGORITHMIQUE ET PROGRAMMATION En C

Chap17 - CORRECTİON DES EXERCİCES

LA MESURE DE PRESSION PRINCIPE DE BASE

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que

Chapitre 2 Devine mon nombre!

Précision d un résultat et calculs d incertitudes

Calcul scientifique précis et efficace sur le processeur CELL

REALISATION D UNE CALCULATRICE GRACE AU LOGICIEL CROCODILE CLIPS 3.

Plan du cours. Historique du langage Nouveautés de Java 7

LES DIFFÉRENTS FORMATS AUDIO NUMÉRIQUES

INF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies

Programmation en langage C

Transcription:

CI 2 REPRÉSENTATION DES NOMBRES ET CONSÉQUENCES PARTIE 3 CONSÉQUENCES DE LA REPRÉSENTATION LIMITÉE DES NOMBRES RÉELS EN MACHINE 1 Problèmes de précision......................................................................... 1 2 Précision machine [2].......................................................................... 2 2.1 Mise en évidence de l'inuence du codage sur la précision................................... 2 3... et Python.................................................................................. 4 3.1 Premiers exemples........................................................................ 4 3.2 Dépassement de capacité................................................................. 5 3.3 Erreurs de comparaisons.................................................................. 5 3.4 Problèmes liés à la conversion de décimal en ottant....................................... 5 4 Conclusion.................................................................................... 6 1 Problèmes de précision A cause de la base utilisée, il est impossible de représenter exactement la plupart des nombres décimaux. Des nombres qui habituellement ne posent pas de problème dans les calculs en mathématiques deviennent ainsi une source d erreurs multiples. On désire représenter le nombre 0,4 en virgule flottante au format simple précision. 1 Convertir en binaire la partie fractionnaire du nombre 0,4 x 2 = 0,8 = 0 + 0,8 0,8 x 2 = 1,6 = 1 + 0,6 0,6 x 2 = 1,2 = 1 + 0,2 0,2 x 2 = 0,4 = 0 + 0,4 0,4 x 2 = 0,8 = 0 + 0,8... Par conséquent : 0, 4 (10) = 0, 0110 0110 0110 0110... (2). Le nombre 0,4 admet pour développement en base 2 un développement infini périodique. Page 1 sur 6

2 Décaler la virgule vers la gauche pour le mettre sous la forme normalisée (IEEE 754) : 0, 4 (10) = 1, 1001100110... (2) x 2 2 : -2 : décalage de 2 bits vers la droite 3 Codage du nombre réel avec les conventions suivantes : signe = 0 : nombre positif ; Exposant décalé : 2 + 127 = 125 (10) = 0111 1101 (2) La représentation en virgule flottante sera donc forcément une valeur approchée de ce nombre. D après ce codage, la valeur approchée choisie pour 0,4 est : 0, 4000000059604644775390625 Si la dernière valeur de la mantisse prenait la valeur 0, comme le suggèrerait l item 1, on aurait : 0, 39999997615814208984375 Remarque Pour vérifier vos calculs, on peut se reporter aux sites : http://babbage.cs.qc.cuny.edu/ieee-754/ http://www.binaryconvert.com/result_float.html 2 Précision machine [2] 2.1 Mise en évidence de l'inuence du codage sur la précision Soit F l ensemble des nombres en virgule flottante que l on peu représenter. Si l on représente la mantisse avec un mot de t bits, les éléments f F sont définis par Page 2 sur 6

Si l exposant peut prendre les valeurs entières de l intervalle [L,U ] on a : m f M avec m = 2 L 1 et M = 2 U t 1 2 Construction de l ensemble F pour t = 3 (nombre de bits de la mantisse) et e [ 1, 2] (exposant). En reportant ces nombres sur une droite on observe que les nombres en virgule flottante ne sont pas également espacés. que Pour décrire l ensemble des nombres réels qui trouvent une représentation dans F on définit l ensemble G tel G = {x tel que m x M } {0} Pour arrondir un nombre on utilise la fonction float G F qui peut avoir deux expressions différentes : f l o a t (x ) = plus proche f F à x qui satisfait f x (chopping) ou f l o a t (x ) = plus proche f F à x (perfect rounding). Soit l ensemble F défini pour t = 3 et e [ 1, 2] dans l exemple précédent, alors avec chopping on a float (3.4) = 3 et float (0.94) = 0.875 et avec perfect rounding le résultat est float (3.4) = 3.5 et float (0.94) = 1. Page 3 sur 6

Dénition La précision machine d une arithmétique en virgule flottante est définie comme le plus petit nombre positif eps tel que f l o a t (1 + e p s ) > 1. Regardons quelle est la valeur de eps pour une machine avec des mots dont la mantisse comporte t bits et lorsqu on arrondit selon la technique dite chopping. Représentons le nombre 1 et le plus proche nombre suivant : La distance qui sépare le nombre 1 du plus proche nombre suivant est égale à 2 1 t. Ainsi pour une mantisse comportant t bits on a : e p s = 2 1 t On peut montrer que pour une mantisse comportant t bits et si on arrondit avec la fonction float() selon la technique dite "perfect rounding" on a e p s = 2 t. Si on utilise des mots en double précision, qui utilise t = 52b i t s pour la mantisse et perfect rounding, la précision machine est alors e p s = 2 52 2.2210 16. Pour déterminer directement la précision machine en utilisant python on peut utiliser "np.finfo" : >>> np.nfo(np.oat64). eps 2.2204460492503131e 16 >>> np.nfo(np.oat32). eps 1.1920929e 07 Au final l épsilon machine est ici de : Simple précision Double précision e p s 1, 2.10 7 e p s 2, 2.10 16 (On retrouve bien la valeur déterminée par le calcul.) 3... et Python 3.1 Premiers exemples On donne les lignes de codes suivantes : a,b,c=3,2,1 while c<20: print (" Iter. ",c," : ",a) a,b,c=a*b,a,c+1 a,b,c=3.,2., 1 while c<20: print (" Iter.",c," : ",a) a,b,c=a*b,a,c+1 >>> a =0.1 >>> a =3*a >>> if (a==0.3) : print ("Gagne! ") else : print ("Perdu! ") Page 4 sur 6

Comment peut-on expliquer ce comportement? Dans python, il est possible d accéder aux informations suivantes : >>> import sys >>> sys.oat_info.max >>> sys.oat_info.min >>>2.0**(1023) >>>2.0**(1024) >>>2**(1024) 3.2 Dépassement de capacité >>> a=9 >>> a=9. En python, le dépassement de la capacité maximale peut se manifester sous les aspects inf ou OverflowError.Les nombres flottants sont limités à 10 308. A l inverse, les nombres très petits peuvent être arrondis à zéro. >>> 10.**309 >>> a=10.**( 323) >>> a==0, a/10==0 3.3 Erreurs de comparaisons La comparaison de deux nombres de type float peut générer des erreurs. >>> a,b=1.,1e 16 >>> b>0,a+b>a 3.4 Problèmes liés à la conversion de décimal en ottant >>> 0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1 >>> a,b=1+10**( 15),1 >>> (a b)*10**15 Page 5 sur 6

4 Conclusion Il faut toujours se rappeler qu un calcul sur système informatique n est toujours précis qu avec une certaine précision et qu un mauvais codage des nombres peut poser de graves problèmes. L'explosion du Vol Ariane 501 Le 4 juin 1996, lors de son premier vol, la fusée européenne Ariane 5 explose 40 secondes après son décollage causant la perte de la fusée et de son chargement estimé à 500 Millions de $. Le système de guidage de la fusée s est arrêté à la suite de l arrêt des deux unités flottantes qui contrôlaient son programme. Après deux semaines d enquête, un problème est trouvé dans le système de référence inertiel : la vitesse horizontale de la fusée par rapport au sol était calculée sur des flottants 64 bits et dans le programme du calculateur de bord, il y avait une conversion de cette valeur flottante 64 bits vers un entier signé de 16 bits. Malheureusement, le nombre en question était plus grand que 32767 (overflow), le plus grand entier que l on peut coder sur 16 bits, et la conversion a été incorrecte. Rien n était fait pour tester que cette conversion était bien possible mathématiquement (sans dépassement de capacité). Les tests ont été effectués pour Ariane 4 qui, étant moins puissante qu Ariane 5, avait une vitesse horizontale suffisamment faible pour tenir sur un entier 16 bits ce qui n était pas le cas d Ariane 5. Remarque Un float, comme on peut les utiliser sur les calculatrices TI, est compris entre 1E-999 et 9.999999999999999E999, avec une précision de 16 chiffres significatifs. Pour les curieux, le format d encodage de flottants sur TI n est pas celui généralement utilisé sur PC, qui demande trop de calculs pour l encodage et le décodage, mais SMAP II BCD. Références [1] Christophe François, Représentation de l information, représentation des nombres. [2] Manfred GILLI, Méthodes numériques, Département d économétrie Université de Genève, 2006. [3] Cours d informatique de PCSI. Lycée Bertran de Born. Page 6 sur 6