• Aucun résultat trouvé

Télécharger le pdf à compléter du TD

N/A
N/A
Protected

Academic year: 2022

Partager "Télécharger le pdf à compléter du TD"

Copied!
12
0
0

Texte intégral

(1)

http://tsi.ljf.free.fr/ATS/

Représentation des données TP

v3.2

Lycée Jules Ferry - 82 Bd de la République - 06400 CANNES

(2)

http://tsi.ljf.free.fr/ATS/

Table des matières

1 Conversion 3

1.1 Programme de conversion décimal vers binaire et hexadécimal . . . 3

1.2 Exploitation de l'information d'un codeur absolu . . . 3

2 Précision de la représentation des nombres 4 2.1 Représentation des entiers . . . 4

2.2 Représentation des réels : mantisse et exposant . . . 5

3 Erreurs de représentation 6 3.1 Première analyse . . . 6

3.2 Seconde analyse : erreur d'absorption . . . 7

3.3 Troisième analyse . . . 9

3.4 Quatrième analyse : erreur d'annulation . . . 10

(3)

http://tsi.ljf.free.fr/ATS/

1 Conversion

1.1 Programme de conversion décimal vers binaire et hexadécimal Question 1

Ecrire un programme qui demande à l'utilisateur un nombre entier, et qui ache sa conversion en binaire et en hexadécimal.

Le programme doit acher les phrases :

• "La conversion de (valeur) en binaire est : (conversion)"

• "La conversion de (valeur) en hexadécimal est : (conversion)"

Outre les fonctions de saisie et d'achage que vous connaissez (input()etdisp()), vous utiliserez les fonctions de conversion dec2bin(valeur) etdec2he(valeur).

1.2 Exploitation de l'information d'un codeur absolu

Figure 1 Codeur absolu

Un codeur absolu est un capteur angulaire qui délivre une infor- mation binaire proportionnelle à l'angle du capteur.

La précision de ce codeur dépend du nombre de pistes, traduisant le nombre de bits codant l'angle, cet angle allant de 0° à 360°.

On s'intéresse ici à un codeur à 12 pistes, qui fournira donc une information angulaire theta sous la forme d'un nombre binaire à 12 bits.

Question 2

Quelle est la précision de ce codeur ?

Les 360° du codeur sont codés sur 12 bits. 12 bits codent 212−1 positions. La précision est donc égale à 360

212−1= 0.0879.

(4)

http://tsi.ljf.free.fr/ATS/

Ecrire un programme dans lequel l'utilisateur rentrera la valeur binaire (variable theta) fournie par le capteur, et qui lui fournira la valeur angulaire correspondante.

2 Précision de la représentation des nombres

2.1 Représentation des entiers On considère le nombre entier N=1534.

Question 4

Comment s'écrit ce nombre en binaire ?

>dec2bin(1534) ans = 10111111110

Question 5

Combien de bits sont nécessaires pour la représentation de ce nombre ? 11 bits

La fonction int16() permet de convertir un nombre en entier codé sur 16 bits.

Question 6

Quel est le résultat de la conversion en entier sur 16 bits du nombre 1534 ?

>int16(1534) ans = 1534

(5)

http://tsi.ljf.free.fr/ATS/

La fonction int8()permet de convertir un nombre en entier codé sur 16 bits.

Question 7

Quel est le résultat de la conversion en entier sur 8 bits du nombre 1534 ?

>int8(1534) ans = -2

La fonction int8() ne conserve que les 8 premiers bits de la conversion, et le convertir en entier signé.

Question 8

Quel est le nombre b0inaire à 8 bits correspondant à la conversion du réel 1534 ? 11111110

On remarque que les 3 bits de poids fort ont été tronqués : (101) 11111110

On rappelle que int8()eectue une conversion en entier signé.

Question 9

Quel est le signe de ce nombre ? En déduire la valeur correspondante en base 10.

Le bit de poids le plus fort est égal à 1 : signe négatif Le complément +1 vaut000000012 + 1

=000000102 =210

>int8(1534) ans = -2

2.2 Représentation des réels : mantisse et exposant

Scilab représente les réels en virgule ottante avec un signe, une matisse et un exposant.

La fonction frexp ([réel]) fournit les valeurs de la mantisse et de l'exposant du réel.

Par exemple :

Lignes de commande

>[f,e]=frexp([10.32]) e = 4.

f = 0.645

Ainsi, Scilab code le réel 10,32 par f∗2e= 0.645.24.

(6)

http://tsi.ljf.free.fr/ATS/

Quelle est la représentation (mantissem1et exposante1) du réel 3.583 ? (on utilisera la fonction format('v',15)pour forcer l'achage des décimales et éviter les arrondis).

> format('v',15)

>[m1,e1]=frexp(3.583) e1 = 2.

m1 = 0.89575

Question 11

Retrouver le résultat en eectuant l'opérationm1.2e1. Que remarquez-vous ?

> m1*2^e1 ans = 3.583

3 Erreurs de représentation

3.1 Première analyse Mathématiquement, √

6 =√ 2.√

3. Nous allons chercher à voir comment Scilab eectue ces opéra- tions et les précisions associées.

Question 12

Calculer a=sqrt(6), b=sqrt(2) et c=sqrt(3).

Calculer a-b*c. Commenter ce résultat.

> a=sqrt(6) ;b=sqrt(2) ;c=sqrt(3) ;

> a-b*c

ans = -4.44089210D-16

L'erreur provient probablement du codage en double précision.

(7)

http://tsi.ljf.free.fr/ATS/

Recongurer le format d'achage par défaut des nombres décimaux : format('v',10).

Question 13

Déterminer la mantissem6et l'exposant e6du codage de√ 6.

Déterminer la mantissem2et l'exposant e2du codage de√ 2. Déterminer la mantissem3et l'exposant e3du codage de√

3.

Nombre Mantisse Exposant

√6 0.6123724 2

√2 0.7071068 1

3 0.8660254 1

Question 14

Calculer alorsm6∗2e6−(m3∗2e3)∗(m2∗2e2). Conclure.

>m6*2^e6-(m3*2^e3)*(m2*2^e2) ans = - 4.441D-16

Le problème provient donc bien du codage en double précision.

3.2 Seconde analyse : erreur d'absorption 3.2.1 Premier exemple

On pose X = 1.1030 etY = 1.1010.

Sous Scilab, dénir ces constantes puis eectuer les opérations suivantes :

• S1=X+Y-X

• S2=X-X+Y

Lignes de commande

>X=1D30 ;Y=1D10 ;

>S1=X+Y-X

>S2=X-X+Y

(8)

http://tsi.ljf.free.fr/ATS/

Qu'attendiez-vous comme résultat ? Qu'observez-vous ?

On attend dans les deux cas la valeur de Y comme résultat

>S1=X+Y-X >S2=X-X+Y

S1 = 0 S2 = 1.000D+10

Il s'agit là d'une erreur d'absorption de Y par X dans le premier calcul.

Question 16

Déterminez la mantisse et l'exposant de X, de Y et de X+Y Conclure sur le résultat de X+Y-X fourni par Scilab.

> [m,e]=frexp(X) e = 100.

m = 0.7888609

> [m,e]=frexp(Y) e = 34.

m = 0.5820766

> [m,e]=frexp(X+Y) e = 100.

m = 0.7888609 Lorsque X

Y <2−53alors1 +X Y = 1

(9)

http://tsi.ljf.free.fr/ATS/

3.2.2 Associativité

L'associativité des opérations élémentaires comme par exemple l'additivité : (x+y) +z=x+ (y+z)

n'est plus valide en mathématiques nies.

Question 17

On considère les trois nombres ci-dessous, avec 6 chires signicatifs : X=1.23456e-23 , Y=1.000000e13 , Z=-Y

Calculer X+(Y+Z), puis (X+Y)+Z. Que constatez-vous ? Quelle conclusion tirez-vous ?

>X+(Y+Z) ans =

1.235D-23 (X+Y)+Z ans = 0.

Il y a absorption de X par Y dans le deuxième calcul. Il est donc très important de faire at- tention à l'ordre des opérations.

3.3 Troisième analyse

Mathématiquement, on vérie bien évidemment (√

2)2−2 = 0. Exécuter les opérations suivantes sous Scilab :

Lignes de commande

>sqrt(2)

>ans^2

>ans-2

(10)

http://tsi.ljf.free.fr/ATS/

Qu'observez-vous ?

>sqrt(2) ans = 1.4142136

>ans^2 ans = 2.

>ans-2

ans = 4.441D-16

L'erreur de précision de la racine se répercute dans l'élévation au carré :(√

2)2−26= 0 Notons qu'il s'agit de la même erreur qu'à la question 12 :4.41.10−16= 2.%eps.

3.4 Quatrième analyse : erreur d'annulation 3.4.1 Mise en évidence

On considère la fonction y= 1 1−√

1−x2.

Dénir la fonction y =f(x) dans Scilab comme suit : Lignes de commande

>functiony=f(x)

> y=1/(1-sqrt(1-x^2))

> endfunction

Question 19

Pour quelle valeur de x le dénominateur de f(x) s'annule-t'il ? Calculer avec Scilab les valeurs de f(1),f(1.10−5) etf(1.10−8).

Calculer ensuite la valeur def(1.10−9). Pourquoi obtient-on ce résultat ? f(x) s'annule pour x=0, donc pour√

1−x2 = 1.

Scilab fournitf(1) = 1,f(1e−5) = 2.000D+ 10,f(1e−8) = 9.007D+ 15.

Si x2 < %eps, donc si |x| < p

%eps, alors le calcul numérique de √

1−x2 fournira la valeur 1.

Ainsi, pour toute valeur x <

p%eps

2 Scilab va considérer le résultat√

1−x2= 1

(11)

http://tsi.ljf.free.fr/ATS/

3.4.2 Correction de l'erreur

Il faut donc dénir une fonction équivalente àf(x)qui ne fasse plus intervenir le terme 1 1−√

1−x2 Question 20

Multiplier le numérateur et le dénominateur def(x) par1 +√

1 +x2, et en déduire une nouvelle expression def(x).

Programmer une nouvelle fonction f2 avec cette expression, et vérier le résultat de f2(1.10−9) et def2

1 2%eps

. f(x) = 1

1−√ 1−x2

1 +√ 1 +x2 1 +√

1 +x2 = 1 +√ 1 +x2

1−(1−x2) = 1 +√ 1 +x2 x2

> function y=f2(x)

> y=(1+sqrt(1-x^2))/x^2

> endfunction

f2(1e−9) = 2.000D+ 18 f2(0.5∗%eps) = 1.623D+ 32

3.4.3 Exemple de correction de l'erreur d'annulation

On cherche à estimer le nombreπ par l'algorithme de calcul par les polygônes inscrits. On considère un cercle de rayon r = 1, et on note An l'aire associée au polygône inscrit àn côté.

En notantαn= 2π

n ,An est égale à n fois l'aire du triangle ABC :

An = ncosαn 2 sinαn

2 = n

2(2 cosαn 2 sinαn

2 )

= n

2sinαn= n 2 sin2π

n

(12)

http://tsi.ljf.free.fr/ATS/

Par ailleurs sinαn

2 =

r1−cosαn

2 =

s 1−p

1−sin2αn

2 .

Ainsi, en prenant n= 2k, on dénit une équation de récurrence qui permet de calculerπ : xk=A2k= 2k

2 sk avecsk= sin2π 2k =

r1−√

1−sk−1

2 , etπ = lim

k→+∞A2k

Question 21

Programmer et exécuter l'algorithme ci-dessous :

s←1;n←4 (Initialisations)

Tantque s >1e−10 faire

s←sqrt((1−sqrt(1−s∗s))/2) (nouvelle valeur de sin(α/2)

n←2∗n (nouvelle valeur de n)

A←(n/2)∗s (nouvelle valeur de l'aire du polygone) Fin Tantque

Qu'observez-vous ? Comment peut-on expliquer ce résultat ?

L'algorithme converge initialement versπ, puis nalement délivre la valeur 0 ! !

Commme αn →0, le numérateur est de la forme1−√

1−2 avec = sinαn petit : il y a eu d'erreur d'annulation.

Question 22

Pour remédier à ce problème, il faut reformuler les équations de façon à ne plus risquer les erreurs d'annulation.

Nous allons multiplier numérateur et dénominateur par(1 +p

1−sin2αn) : sinαn

2 = s

1−p

1−sin2αn

2 =

s 1−(1−sin2αn)

2(1 +p

1−sin2αn) = sinαn q

2(1 +p

1−sin2αn)

Question 23

Réécrire le programme de récurrence en prenant en compte la correction. Exécuter ce programme et conclure.

L'algorithme converge cette fois vers12k→3.1415927, soitπ

Références

Documents relatifs

CHAP N5 Fiche D’Exercices N°3 : valeurs approchées et arrondis d’un nombre1.

Ecrire un programme dans lequel l’utilisateur rentrera la valeur binaire (variable theta ) fournie par le capteur, et qui lui fournira la valeur angulaire correspondante. 2 Précision

TD Systèmes à évènements discrets - capteur position angulaire page 1/3.. CPGE – PTSI

Pour cela, il a à sa disposition deux planches de longueur 2m et de largeur 1m qui constitueront les côtés latéraux de la maie et une troisième planche de mêmes dimensions

Un signal peut avoir une valeur moyenne nulle et une valeur efficace non-nulle. La valeur efficace d’un signal continu U

Sur cet ensemble, il va être nécessaire de disposer, en plus des constructeurs et accesseurs habituels, d’un certain nombre d’opérations comme ajouter une plaque, retirer une

Différence entre la valeur des biens et services produits par une entreprise ou une branche et celle des biens et services utilisés pour la production, dite des..

Ecrire un programme qui lit le prix HT d’un article, le nombre d’articles et le taux de TVA, et qui fournit le prix total TTC correspondant:. Faire en sorte que des