Vous êtes sur la page 1sur 50

Chapitre 1 [1em] Arithmétique de l’ordinateur

Chapitre 1

Arithmétique de l’ordinateur

M. L-LAHLOU

Filières SMA4/SMI4
Département de Mathématiques
Faculté des Sciences Semlalia
Marrakech

28/02/ 2022

1 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur

1. Sources d’erreurs numériques

2. Représentation des entiers


2.1 Codage des entiers naturels
2.2 Codage des entiers relatifs

3. Représentation des réels


3.1 Représentation dans une base
3.2 Virgule flottante normalisée : v.f.n.
3.3 Erreurs de représentation

4. Arithmétique flottante

5. Instabilité numérique

2 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Sources d’erreurs numériques

1. Sources d’erreurs numériques

2. Représentation des entiers

3. Représentation des réels

4. Arithmétique flottante

5. Instabilité numérique

3 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Sources d’erreurs numériques

Pour résoudre numériquement un problème, on utilise une méthode


numérique et un calculateur.
Les sources d’erreurs sont classées en :
Erreurs dans les données du problème (mesures physiques par ex.)
Erreurs de méthode :
Par exemple, négliger le reste dans le développement de Taylor,
sommation finie pour approcher une somme infinie, ... etc.
Erreurs dues aux opérations arithmétiques dans la machine :Le
système numérique de celle-ci est discret, c.a.d. nombre fini de
nombres. (un sous-ensemble borné de R).

4 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Représentation des entiers

1. Sources d’erreurs numériques

2. Représentation des entiers


2.1 Codage des entiers naturels
2.2 Codage des entiers relatifs

3. Représentation des réels

4. Arithmétique flottante

5. Instabilité numérique

5 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Représentation des entiers
Codage des entiers naturels

1. Sources d’erreurs numériques

2. Représentation des entiers


2.1 Codage des entiers naturels
2.2 Codage des entiers relatifs

3. Représentation des réels


3.1 Représentation dans une base
3.2 Virgule flottante normalisée : v.f.n.
3.3 Erreurs de représentation

4. Arithmétique flottante

5. Instabilité numérique

6 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Représentation des entiers
Codage des entiers naturels

Principe : un entier naturel n est codé dans une base b


Par exemple b = 10 : système décimal
4526 = 4 × 103 + 5 × 102 + 2 × 101 + 6 × 100

n = ap ap−1 · · · a0
= ap × 10p + ap−1 × 10p−1 + · · · + a0 , ai ∈ {0, 1, .., 9}

Les ai sont appelés les digits.


Plus généralement, un entier n s’écrit dans un système numérique de
base b ≥ 2 :
p
X
n= ak bk , ak ∈ {0, · · · , b − 1}
k=0

On note en abrégé
(ap ap−1 · · · a0 )b
Pour b = 2, les ak = 0 ou 1 appelés bits. C’est le système numérique
des machines. 7 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Représentation des entiers
Codage des entiers naturels

b Système
10 décimal
2 binaire
8 octal
16 hexadécimal

Remarque 1
Pour la base héxadécimale, les digits sont ak = 0, 1, · · · , 15. Par
convention, on adopte la notation suivante pour ak = 10, · · · , 15.

10 A
11 B
12 C
13 D
14 E
15 F

8 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Représentation des entiers
Codage des entiers naturels

Changement de base
Ecriture décimale :
L’interaction homme-machine se fait en base 10.
Il est toujours facile de convertir une représentation en base b en
son écriture décimale.
Exemples :

1 × 23 + 0 × 22 + 0 × 21 + 1 × 20 = (1001)2 = 910
3 × 81 + 1 × 80 = (31)8 = 2510

Conversion inverse de base 10 à une base b :


Si on fait la division euclidienne de x écrit en base b,
il existe deux entiers q, r tels que :

x = (ap ap−1 · · · a0 )b = b × q + r

où q est le quotient et r est le reste avec 0 ≤ r < b.


Il est évident que r = a0 et q = (ap ap−1 · · · a1 )b .
On recommence la division de q par b et ainsi de suite.
On arrête les calculs quand le quotient obtenu est nul.
9 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Représentation des entiers
Codage des entiers naturels

D’où l’algorithme :

q = x tant que q 6= 0 faire


q=quotient de x par b;
r=reste de x par b;
x=q
fin

On écrit x en base b en mettant les restes successifs obtenus de droite


à gauche.

10 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Représentation des entiers
Codage des entiers naturels

Exemple. Convertir le chiffre décimal 223 en binaire.


Méthode :
223 2
1 111 2
1 55 2
1 27 2
1 13 2
1 6 2
0 3 2
1 1 2
1 0
Donc 223 = (11011111)2 .
Cas particuiler de la base 16 :
inconvénient de la base 2 est que son écriture est très longue.
L’utilisation de la base 16 est pratique car 16 = 24 .
Pour convertir un nombre de la base 2, il suffit de grouper les bits
en paquets de 4 et écrire chacun des paquets en base 16.
Exemple. (101101101110)2 = (B6E)16 .
11 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Représentation des entiers
Codage des entiers relatifs

1. Sources d’erreurs numériques

2. Représentation des entiers


2.1 Codage des entiers naturels
2.2 Codage des entiers relatifs

3. Représentation des réels


3.1 Représentation dans une base
3.2 Virgule flottante normalisée : v.f.n.
3.3 Erreurs de représentation

4. Arithmétique flottante

5. Instabilité numérique

12 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Représentation des entiers
Codage des entiers relatifs

Entiers relatifs

Comment représenter les entiers positifs ou négatifs tout en


conservant les règles de l’addition ?
Solution : Sur n bits, on garde le bit gauche pour le signe.
Par convention, 0 pour les positifs et 1 pour les négatifs les n − 1 bits
qui restent pour représenter le nombre.

san−2 · · · a0
| {z }
n−1

Conséquence : tout entier relatif x représentable est tel que :


   
1 11 · · · 1 = −2n−1 + 1 ≤ x ≤ 0 11 · · · 1 = 2n−1 − 1
| {z } | {z }
n−1 2 n−1 2

13 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Représentation des entiers
Codage des entiers relatifs

Inconvénient : 0 est représenté 2 fois : 00 · · · 0 et 10 · · · 0 sont resp.


+0 et −0.
L’addition ne s’applique qu’à des nombres de même signe.
En effet, pour n = 8bits :

00000011 = 3
+ 10000100 = −4
10000111 = −7 ← faux

14 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Représentation des entiers
Codage des entiers relatifs

Règle de complément à 2
Pour un entier relatif x < 0, on représente 2n + x à la place de x.
Par exemple x = −105 sur n = 8bits :
on représente 28 − 105 = 151 = 27 + 24 + 22 + 21 + 20 ⇒ (10010111)2 .
Vérifions que 105 − 105 = 0 :
0 1 1 0 1 0 0 1 ← 105
+ 1 0 0 1 0 1 1 1 ← −105
0 0 0 0 0 0 0 0 ←0

15 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Représentation des entiers
Codage des entiers relatifs

Une autre manière d’appliquer la règle :


on inverse les bits de −x (0 ↔ 1) et on ajoute 1.
Par ex. x = −12, n = 5

01100 ← −x = 12
10011
+ 1
10100 ← −12

On a 25 − 12 = 20 = (10100)2

16 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Représentation des entiers
Codage des entiers relatifs

Faisons l’opération 15 − 12, on a

01111 ← +15
+ 10100 ← −12
00011 ← +3

Théorème 1
Une machine qui code les entiers relatifs sur n bits peut représenter en
utilisant la règle de complément à 2 les entiers de −2n−1 à 2n−1 − 1.
Les PC modernes ont un processeurs de 64 bits. Donc on peut coder
les entiers dans [−263 , 263 − 1].

17 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Représentation des entiers
Codage des entiers relatifs

Dépassement de capacité :
Soit une machine qui code sur 8 bits et effectuons 72 + 59 = 131 en
base 2

0 1 0 0 1 0 0 0 : 72
+ 0 0 1 1 1 0 1 1 : 59
1 0 0 0 0 0 1 1 : −125
Absurde : en effet sur 8 bits les seuls nombres représentables sont
dans [−27 , 27 − 1] = [−128, 127].
Concusion : sur une machine donnée, on ne peut représenter qu’une
partie finie B ⊂ Z.

18 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Représentation des réels

1. Sources d’erreurs numériques

2. Représentation des entiers

3. Représentation des réels


3.1 Représentation dans une base
3.2 Virgule flottante normalisée : v.f.n.
3.3 Erreurs de représentation

4. Arithmétique flottante

5. Instabilité numérique

19 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Représentation des réels
Représentation dans une base

1. Sources d’erreurs numériques

2. Représentation des entiers


2.1 Codage des entiers naturels
2.2 Codage des entiers relatifs

3. Représentation des réels


3.1 Représentation dans une base
3.2 Virgule flottante normalisée : v.f.n.
3.3 Erreurs de représentation

4. Arithmétique flottante

5. Instabilité numérique

20 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Représentation des réels
Représentation dans une base

Représentation des réels

Le nombre réel 4256.25147 en système décimal est une abréviation de


l’écriture :

Partie entière Partie fractionnaire


z }| { z }| {
4000 + 200 + 50 + 6 + 0.2 + 0.05 + 0.001 + 0.0004 + 0.00007

= 4 × 103 + 2 × 102 + 5 × 101 + 6 × 100


+2 × 10−1 + 5 × 10−2 + 1 × 10−3 + 4 × 10−4 + 7 × 10−5

21 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Représentation des réels
Représentation dans une base

Plus généralement
Définition 1
un réel x en base β est

x = (−1)s (ap ap−1 · · · a0 .b1 b2 · · · )β


 
X p
= (−1)s  aj β j + b1 β −1 + b2 β −2 + · · · (1)
j=0

où s est le signe = 0 ou 1 et les aj , bj ∈ {0, · · · , β − 1}

22 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Représentation des réels
Représentation dans une base

Changement de base :
vers le système décimal :
(11001.01101)2 = 24 + 23 + 1 + 2−2 + 2−3 + 2−5
= (25.40625)10
(1AC.2B)16 = 162 + 10 × 16 + 12 + 2 × 16−1 + 11 × 16−2
= (428.1250000078093)10
vers le système binaire :
(0.5)10 = 2−1 = (0.1)2
3.375 = 3 + 0.375
On a pour la partie entière :
3 = (11)2
méthode pour la partie fractionnaire :
2 × 0.375 = 0.75 → b1 = 0
2 × 0.75 = 1.5 → b2 = 1
2 × (1.5 − 1) = 1.0 → b3 = 1
23 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Représentation des réels
Représentation dans une base

Donc

0.375 = (0.011)2
3.375 = (11.011)2

Plus généralement : convertir x = (0.d1 d2 · · · )10 en son écriture


binaire (0.b1 b2 · · · )2 à l’aide de l’algorithme :

Répéter :
Calculer y = 2 ∗ x
si y < 1 alors
b1 = 0
fin
sinon
b1 = 1 : poser x = y − 1
fin
Ansi de suite ...
jusqu’à x = 0 ou atteindre la limite de précision machine.

24 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Représentation des réels
Représentation dans une base

Attention
un nombre dont la partie fractionnaire est finie dans une base peut
donner lieu à une partie fractionnaire infinie dans une autre.
Convertissons x = (0.1)10 = 10−1 en binaire

2 × 0.1 = 0.2 b1 = 0
2 × 0.2 = 0.4 b2 = 0
2 × 0.4 = 0.8 b3 = 0
2 × 0.8 = 1.6 b4 = 1
2 × 0.6 = 1.2 b5 = 1
2 × 0.2 = 0.4 b6 = 0
..
.

Donc

(0.1)10 = (0.000110011 · · · )2
25 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Représentation des réels
Virgule flottante normalisée : v.f.n.

1. Sources d’erreurs numériques

2. Représentation des entiers


2.1 Codage des entiers naturels
2.2 Codage des entiers relatifs

3. Représentation des réels


3.1 Représentation dans une base
3.2 Virgule flottante normalisée : v.f.n.
3.3 Erreurs de représentation

4. Arithmétique flottante

5. Instabilité numérique

26 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Représentation des réels
Virgule flottante normalisée : v.f.n.

Système à virgule fixe : puisque le nombre de cases mémoires est


limité, une solution pour représenter un réel non nul est de fixer un
nombre total n limite de digits ai , bi dans (1).
Inconvénients : il faut disposer d’une grande plage mémoire n
pour représenter beaucoup de nombres.
idée : écrire un nombre x sous la forme (−1)s m × β e .
Le nombre est déterminé par s, m, e. Par exemple,12.75 s’écrit
1.275 × 101 , ou 0.1275 × 102 , ou 12750 × 10−3 . . . etc.
L’écriture n’est pas unique.
.
On parle de virgule flottante.
Pour uniformiser la représentation on a :

27 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Représentation des réels
Virgule flottante normalisée : v.f.n.

un nombre réel x 6= 0 est représenté en machine dans une base β sous


la forme dite représentation virgule flottante normalisée (v.f.n.) :

t
!
X
s −k
x = (−1) dk β β e = (−1)s (0.d1 d2 · · · dk · · · dt ) × β e (2)
k=1

Définition 2
avec 0 ≤ dk ≤ β − 1, d1 6= 0, m = 0.d1 · · · dt est appelée mantisse et les
dk sont les bits, digits ou chiffres significatifs.
Le stockage se fait de la manière suivante :
un bit pour le signe s
t nombre fini de bits de la mantisse
e est l’exposant, entier relatif borné dans un intervalle
[emin , emax ], emin < 0, emax > 0 représenté aussi en bits (dont un
bit pour le signe).
Les chiffres t, emin , emax sont caractéristiques de la machine.
Le nombre 0 a une représentation à part.
On remarquera qu’en base β = 2 le 1er bit de m est toujours d1 = 1.
28 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Représentation des réels
Virgule flottante normalisée : v.f.n.

Proposition 1
La mantisse m d’une représentation v.f.n. vérifie :
1
≤ m ≤ 1 − β −t < 1
β

Démonstration.
En effet, la plus petite valeur dePtd1 6= 0 est 1 et 0 ≤ dP
k < β pour
t
k = 2, · · · , t. Donc β −1 ≤ m = k=1 dk β −k ≤ (β − 1) k=1 β −k =
β −1 − β −t−1
(β − 1) = 1 − β −t < 1
1 − β −1

29 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Représentation des réels
Virgule flottante normalisée : v.f.n.

Le nombre x est totalement connu en stockant en mémoire s, e et m.


Exemples :
Pour β = 10, t = 5
Nombre est-il normalisé ? Normalisation
0.54432 oui
0.08523 non −→ 0.85230 × 10−1
336.210 non −→ 0.33621 × 10+3

30 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Représentation des réels
Virgule flottante normalisée : v.f.n.

La représentation sur ordinateur des réels est en binaire avec l’une des
deux précisions :
Simple précision sur 32 bits :
s e m
1 bit 8 bits 23 bits
Double précision sur 64 bits :
s e m
1 bit 11 bits 52 bits

31 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Représentation des réels
Erreurs de représentation

1. Sources d’erreurs numériques

2. Représentation des entiers


2.1 Codage des entiers naturels
2.2 Codage des entiers relatifs

3. Représentation des réels


3.1 Représentation dans une base
3.2 Virgule flottante normalisée : v.f.n.
3.3 Erreurs de représentation

4. Arithmétique flottante

5. Instabilité numérique

32 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Représentation des réels
Erreurs de représentation

Erreurs de représentation

Soit F l’ensemble des nombres représentés par (2) qui dépend de


β, t, emin , emax , alors F est un sous-ensemble fini et discret de la
droite réelle R? .
il existe un plus petit nombre xmin > 0 et un plus grand nombre
xmax > 0 (pour les nombres négatifs aussi) représentables.
Par exemple en double précision,
on peut montrer selon les processeurs que les nombres varient
entre environ ±1.7 × 10−308 et ±1.7 × 10+308
Les nombres dans F ne sont pas equirépartis :
plus denses au voisinage de ±xmin ou de ±xmax
Si x < xmin on dit sous-dépassement : underflow
Si x > xmax on parle de débordement : overflow
On ne peut pas représenter un nombre x ∈ / F mais une
approximation notée f l(x) ∈ F proche de x.

33 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Représentation des réels
Erreurs de représentation

L’approximation en v.f.n. f l(x) ∈ F d’un nombre


x = ±(0.d1 d2 · · · dt dt+1 dt+2 · · · ) × β e sur une machine de précision t
digits dans la mantisse se fait selon la règle suivante :
Règle arrondis
f l(x) = ±(0.d1 d2 · · · dt ) × β e si dt+1 < β/2 : troncature
f l(x) = ±(0.d1 d2 · · · dt + β −t ) × β e si
β/2 ≤ dt+1 ≤ β − 1 : arrondi

Exemples sur une machine où β = 10 à 6 digits pour la mantisse :


1/3 est représenté par
0.33333333 · · · ⇒ 0.333333 × 100 : troncature.
22/7 est représenté par
0.3142857 · · · × 101 ⇒ 0.314286 × 101 : arrondi.

34 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Représentation des réels
Erreurs de représentation

Toute machine est en système binaire et on peut perdre la précision


lors du stockage.
Par exemple
x = (0.000110011 · · · )2 = m × 2−3 avec m = (0.110011 · · · )2 .
Le nombre de bits dans m est limité dans toute machine.
Par conséquent, un nombre représenté exactement dans une base
peut perdre la précision lors du stockage.

35 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Représentation des réels
Erreurs de représentation

Erreur absolue et Erreur relative 1


Définition 3
Soit f l(x) une représentation d’un nombre x, on définit :
L’erreur absolue commise sur x par ∆x = |x − f l(x)|.
∆x
L’erreur relative commise sur x 6= 0 par δx = , généralement
|x|
exprimée en pourcentage %.
Exemples. Supposons que t = 1.
x f l(x) ∆x δx
0.2200 × 101 0.2 × 101 0.2 ≈ 0.1
0.2200 × 10−3 0.2 × 10−3 0.2 × 10−4 ≈ 0.1
0.2200 × 105 0.2 × 105 2000 ≈ 0.1
On constate la même erreur relative pour une erreur absolue variable.

Erreur absolue : mesure la quantité d’erreur
Erreur relative : mesure l’importance de l’erreur


1. 7/03/2022
36 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Représentation des réels
Erreurs de représentation

Définition 4
On appelle précision machine M la plus grande erreur relative
commise en représentant un nombre en utilisant la troncature.
La précision machine dépend de l’appareil utilisé et du nombre de
digits de la mantisse.
Théorème 2
Soit une machine de précision t digits pour la mantisse la précision
machine vérifie :
M ≤ β 1−t

37 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Représentation des réels
Erreurs de représentation

Démonstration : Soit x > 0 un nombre positif non nul quelconque


(c’est similaire pour x < 0). Alors sa représentation exacte est :
x = (0.d1 d2 · · · dt dt+1 dt+2 · · · ) × 10e
avec d1 6= 0.
L’erreur absolue est
∆x = |x − f l(x)| = (0.0 · · 0}dt+1 · · · ) × 10e = (0.dt+1 dt+2 · · · ) × 10e−t
| ·{z
t
e−t
∆x ≤ (0.99 · · · ) × 10
∆x (0.99 · · · ) × 10e−t
δx = ≤
x (0.d1 d2 · · · dt dt+1 dt+2 · · · ) × 10e
Mais puisque d1 6= 0 et les di ≥ 0, i = 2, 3, · · · alors
(0.d1 d2 · · · dt dt+1 dt+2 · · · ) × 10e ≥ 0.100 · · · × 10e . Donc
(0.99 · · · ) × 10e−t
δx ≤ ≤ 101−t
0.1 × 10e
Exemple. la précision d’une machine 64 bits est 2−51 ≈ 4.44 × 10−16 .
Remarque : en fait cette dernière valeur est une borne supérieure de
la vraie précision machine qui dépend de chaque processeur (Voir TP).
38 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Arithmétique flottante

1. Sources d’erreurs numériques

2. Représentation des entiers

3. Représentation des réels

4. Arithmétique flottante

5. Instabilité numérique

39 / 50
Arithmétique flottante
Les erreurs de représentations ont des conséquences plus ou moins
graves sur les opérations classiques. On appelle ces opérations :
arithmétique flottante.
Pour simplifier les calculs, on choisit le système décimal.
Opérations élémentaires :
Ces opérations sont effectuées et notées de la manière suivante :
Soient x, y deux nombres réels
x⊕y f l(f l(x) + f l(y)) addition
x y f l(f l(x) − f l(y)) soustraction
x⊗y f l(f l(x) × f l(y)) multiplication
x y f l(f l(x) ÷ f l(y)) division
Exemples sur une machine à t = 4bits
Multiplication
1.429 ⊗ 13 = f l(f l(1.429) × f l(13))
= f l(0.1429 × 101 × 0.1300 × 102 )
= f l(0.018577 × 103 )
= 0.1858 × 102
Chapitre 1 [1em] Arithmétique de l’ordinateur
Arithmétique flottante

Si on fait la multiplication directement par calculatrice on trouve


18.577. Donc
Erreur absolue = 18.577 − 0.1858 × 102 = 0.003
0.003
Erreur relative = ≈ 0.000165 = 0.0165%
18.577
La division se fait de la même manière
0.56789 × 103 0.1234321 × 10−3
= f l(f l(0.56789 × 103 ) ÷ f l(0.1234321 × 10−3 ))
= f l(0.5679 × 103 ÷ 0.1234 × 10−3 )
= f l(4.602106969 × 106 )
= 0.4602 × 107

La multiplication et la division flottante sont des opérations simples à


cause des lois d’addition ou de soustraction des exposants.

41 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Arithmétique flottante

Addition et Soustraction :

Règle :
ajouter des 0 dans la mantisse du nombre qui a le plus petit exposant
(aligner avec le plus grand exposant)

Exemple. pour t = 4

4.0351 × 105 ⊕ 0.1978 × 104


= f l(0.4035 × 106 + 0.1978 × 104 )
= f l(0.4035 × 106 + 0.001978 × 106 )
= f l(0.405478 × 106 )
= 0.4055 × 106

42 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Arithmétique flottante

Prudence !
Il faut faire attention pour les opérations addition ou soustraction :
phénomène d’absorption.
Lorsqu’on effectue x ± y, où l’ordre de grandeur de y est beaucoup
plus petit que celui de x.
Exemple. pour t = 4, x = 0.7654 × 102 , y = 0.4856 × 10−2 .
Calculons en arithmétique flottante x ⊕ y

f l(f l(x) + f l(y)) = f l((0.7654 + 0.00004856) × 102 )


= f l(0.76544856 × 102 )
= 0.7654 × 102 = x

Donc y est complètement absorbée (négligée).


On peut affirmer aussi que la propriété dans IR : x + y = x ⇔ y = 0
n’est pas valable en arithmétique de l’ordinateur.

43 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Arithmétique flottante

Non distributivité :
La distributivité n’est pas toujours vérifiée en arithmétique flottante.
On a : 122 × (333 + 695) = 122 × 333 + 122 × 695 = 125416
Opérations en arithmétique flottante pour t = 3 :

122 ⊗ (333 ⊕ 695) = f l 0.122 × 103 × f l(0.333 × 103 + 0.695 × 103 )


 

= f l 0.122 × 103 × f l(1.028 × 103 )


 

= f l 0.122 × 103 × 0.103 × 104


 

= f l(0.012566 × 107 )
= 0.126 × 106

44 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Arithmétique flottante

122 ⊗ 333 ⊕ 122 ⊗ 695 = f l f l(0.122 × 103 × 0.333 × 103 )




+f l(0.122 × 103 × 0.695 × 103 )




= f l f l(0.040626 × 106 ) + f l(0.08479 × 106 )


 

= f l(0.406 × 105 + 0.848 × 105 )


= f l(1.254 × 105 )
= 0.125 × 106

donc
122 ⊗ (333 ⊕ 695) 6= 122 ⊗ 333 ⊕ 122 ⊗ 695

45 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Instabilité numérique

1. Sources d’erreurs numériques

2. Représentation des entiers

3. Représentation des réels

4. Arithmétique flottante

5. Instabilité numérique

46 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Instabilité numérique

Instabilité numérique

Définition 5
Algorithme : une démarche qui décrit, à l’aide d’opérations
élémentaires, toutes les étapes nécessaires à la résolution d’un
problème spécifique.
Lorsqu’une erreur de donnée, de représentation ou de calcul est
commise dans un algorithme, elle est transmise dans les calculs
suivants :
on parle de Propagation ou accumulation d’erreurs.
Celà peut aboutir à des résultats peu précis, voir aberrants.
La méthode ou l’algorithme qui cause ce type d’erreurs est dit
numériquement instable.
Exemple. Soit à calculer pour n ≥ 0 donné les termes de la suite
récurrente définie par : u0 = 1/3, un+1 = 1 − 2un .
En théorie, c’est une suite stationnaire où tous les termes valent 1/3.

47 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Instabilité numérique

Ecrivons un petit programme C qui affiche les termes de la suite


jusqu’à un certain rang : ⇒ voir programme projeté

n un
1 0.333333
2 0.333333
.. ..
. .
40 0.333313
.. ..
. .
80 -22369621.000000
Explication.
u0 ne peut être calculée exactement,
mais avec une petite erreur 0 .
Cette erreur a des conséquences sur le calcul de un .

48 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Instabilité numérique

En effet,
supposons que un−1 est calculée avec une erreur n−1 ,
alors
un + n = 1 − 2(un−1 + n−1 ), n = 1, 2, · · ·
Les erreurs successives vérifient la relation n = −2n−1 . Donc

n = (−2)n 0

L’erreur augmente de manière exponentielle même si 0 est petit.


Le problème provient de la puissance croissante de 2.
Si la machine est de précision environ 10−16 ,
alors au bout d’une valeur de n, 2−n < 10−16 ⇒ n ≈ 60.
L’erreur explose pour n assez grand.

49 / 50
Chapitre 1 [1em] Arithmétique de l’ordinateur
Instabilité numérique

Reprenons le programme en inversant la récurrence comme ceci :

Soit k > n
1
initialiser uk = valeur proche de
3
un = (1 − un+1 )/2, n = k − 1, k − 2, · · ·

Même si on part par exemple d’une valeur approchée grossière de u100


avec une erreur ,
u99 est calculée à /2 près,
u98 à /4... etc
Et ainsi de suite à chaque étape l’erreur est divisée par 2.
Donc par exemple on commet une erreur de l’ordre de 2−20  sur le
terme u80 .

Concusion : c’est crucial d’utiliser un algorithme


numériquement stable avant de résoudre un problème.

50 / 50

Vous aimerez peut-être aussi