Université Mohammed V de Rabat Département Génie Électrique
Ecole Mohammadia d’Ingénieurs Méthodes Numériques
AU 2021–2022 Khalil Amine
Handout 1 – Analyse d’erreurs et représentation des nombres sur
ordinateur
1 Introduction à l’analyse numérique
Le calcul scientifique est une discipline des mathématiques appliquées qui consiste à développer, analyser
et appliquer des méthodes relevant de domaines mathématiques tels que l’analyse, l’algèbre linéaire, la
géométrie, la théorie de l’approximation, les équations fonctionnelles, l’optimisation et le calcul différentiel.
Le calcul scientifique trouve ses applications dans de nombreux problèmes de la physique, de la biologie,
des sciences de l’ingénieur, de l’économie et de la finance. Le calcul scientifique se trouve donc au carrefour
de nombreuses disciplines des sciences appliquées modernes, auxquelles il peut fournir de puissants outils
d’analyse, aussi bien qualitative que quantitative. Ce rôle est renforcé par l’évolution permanente des
ordinateurs et des algorithmes.
On distingue entre deux type de calculs, à savoir le calcul formel et le calcul numérique. Le calcul
formel (aussi dit calcul symbolique) s’intéresse à l’étude et au développement d’algorithmes et de logiciels
pour la manipulation symbolique d’objets et d’expressions mathématiques permettant de développer des
outils méthodologiques en sciences appliquées. Le calcul formel met l’accent sur les calculs exacts des
expressions algébriques éventuellement difficile à calculer à la main. Les résultats d’un calcul formel
peuvent être aussi bien des nombres entiers, réels, ou complexes (qui ont éventuellement une représentation
à virgule flottante), que des expressions mathématiques comportant des paramètres (variables) qui peuvent
être aussi inconnues.
Contrairement au calcul formel, le calcul numérique utilise des approximations pour calculer la solution
‘numérique’ d’un problème. Le calcul numérique rentre dans un champs disciplinaire appelé analyse
numérique qui s’intéresse à l’étude et au développement d’algorithmes et de méthodes rapides et
efficaces qui s’adaptent aux mieux à la représentation des données disponibles et à la précision du calcul
requise. Formellement, l’analyse numérique est l’ensemble des outils qui permettent d’obtenir une solution
numérique approchée d’un problème mathématique, ce dernier étant issue d’une modélisation d’une
problématique technique ou scientifique.
Exemple 1 Calcul numérique vs. Calcul formel
2 3
+ = 0.666666 + 0.428571 = 1.095237
3 7
2 3 23
+ = = 1.095238
3 7 21
Les méthodes numériques font face à plusieurs problèmes:
• la taille du problème. En effet, le calcul de la matrice inverse d’une matrice d’ordre 100 et le calcul
de la matrice inverse d’une matrice d’ordre 4 ne sont pas de même ‘complexité’.
1 / 10
• le temps de calcul (ou temps d’exécution). Malgré la convergence théorique de certaines méthodes de
calcul, leur exécution en pratique demeure contraignante, voire irréalisable, à cause leur complexité
en temps.
• la précision. Les méthodes numériques utilisent souvent des approximations au cours du calcul
(par exemple remplacer une dérivée par une différence finie de façon à transformer une équation
différentielle en une équation algébrique). Cela implique un résultat final avec un degré de précision
influencés par les choix des approximations.
Une partie importante de l’analyse numérique consiste à limiter les effets des erreurs ainsi introduites, qui
proviennent de trois sources principales :
• les erreurs sur les données (incertitude sur certaines valeurs)
• les erreurs de modélisation
• les erreurs de représentation sur ordinateur
• les erreurs de troncature
L’accumulation de ces erreurs peut présenter un grand souci pour un numéricien. En guise d’exemple, le
25 février 1991, un missile ‘Scud’ irakien détruit un baraquement américain à Dahran (Arabie Saoudite)
provoquant 28 morts et 100 blessés, en raison d’une erreur d’arrondi sur le calcul du temps. La batterie de
missiles ‘Patriot’ supposée protéger la base déviait de 0.3 secondes résultant en une erreur de position qui
dépasse les 500m et aucun missile anti-missile n’a été lancé.
Exercice 1
Calculer numériquement puis formellement avec une précision 10−2 le produit suivant :
1 2 3 4 5 6 7 8
× × × × × × ×
2 3 4 5 6 7 8 9
Exercice 2
1. Considérant deux variables réelles A et B. Écrire deux algorithmes différents pour permuter les valeurs
respectives de A et B. Comparer la complexité des deux algorithmes en termes du nombre des opérations
élémentaires requises.
2. On dispose maintenant d’une troisième variable C. Donner une généralisation des deux algorithmes
pour transférer à A la valeur de B, à B la valeur de C et à C la valeur de A. Comparer la complexité
des deux algorithmes en termes du nombre des opérations élémentaires requises.
Quelques problèmes typiques de l’analyse numérique sont :
• Interpolation - Extrapolation
• Résolution de systèmes linéaires et non-linéaires
• Intégration et différentiation
• Résolution de systèmes d’équations différentielles
• Résolution de systèmes d’équations aux dérivées partielles
• Transformée de Fourier
• Diagonalisation
• Calcul de valeurs et de vecteurs propres
Une méthode numérique peut être appliquée en utilisant plusieurs algorithmes, qu’il faut pouvoir les
comparer. Un bon algorithme est celui qui est le moins coûteux en mémoire et en temps de calcul, le plus
stable possible (moins sensible aux erreurs d’arrondi par exemple) et le plus précis possible (la solution
approchée obtenue est-elle proche ou loin de la solution exacte).
2 / 10
2 Analyse d’erreurs
Definition 1 Soit x̃ une valeur approchée d’une valeur numériques exacte x. On appelle erreur absolue et
erreur relative respectivement les deux quantités:
| x − x̃ |
∆x = | x − x̃ | δx =
|x|
En pratique, il est difficile d’évaluer les erreurs absolue et relative, car, en général, la valeur exacte de x est
inconnue. Dans le cas des quantités mesurées dont on ne connaît que la valeur approximative, on utilise
une valeur théorique xr dite de référence.
On dispose en revanche d’une borne supérieure pour cette erreur qui dépend de la précision des instruments
de mesure utilisés. Cette borne est aussi appelée erreur absolue, alors qu’en fait on a :
| x − x̃ | ≤ ∆x ⇐⇒ x̃ − ∆x ≤ x ≤ x̃ + ∆x
On note alors x = x̃ ± ∆x et on dit que l’on a estimé la valeur exacte x à partir de x̃ avec une incertitude
de ∆x.
Remarque 1 L’erreur absolue donne une mesure quantitative de l’erreur commise et l’erreur relative en
mesure l’importance (généralement donnée en %).
Proposition 1 (Propagation des erreurs absolues) Soient x et y deux valeur exactes, x̃ et ỹ deux
approximations de x et y, ∆x et ∆y leurs erreurs absolues et δx et δy leurs erreurs relatives. Alors on:
• ∆( x + y) = ∆x + ∆y
• ∆( x − y) = ∆x + ∆y
• ∆( xy) = x̃∆y + ỹ∆x
x x̃∆y + ỹ∆x
• ∆ =
y ỹ2
Proposition 2 (Propagation des erreurs relatives) Soient x et y deux valeur exactes, x̃ et ỹ deux
approximations de x et y, ∆x et ∆y leurs erreurs absolues et δx et δy leurs erreurs relatives. Alors on:
• δ( x + y) ≤ max(δx, δy)
| x̃ + ỹ |
• δ( x − y) ≤ max(δx, δy)
| x̃ − ỹ |
• δ( xy) = δx + δy
x
• δ = δx + δy
y
Exercice 3
Une calculatrice retourne la valeur 1.2345678765 × 1014 pour le calcul de 111111112 , calculer l’erreur
absolue et l’erreur relative de cette approximation.
L’exemple de l’exercice montre un cas ou l’erreur n’est pas liée à des chiffres après la virgule. Toutefois,
la longueur du nombre résultant de calcul dépasse largement la capacité de représentation de la machine.
Ceci montre la nécessité d’avoir d’une part un bon ordre de grandeur (1014 en l’occurrence) et d’autre part
d’avoir le maximum de décimales exactes possible en rapport avec la capacité de la machine.
3 / 10
Definition 2 (Chiffres significatifs) Si l’erreur absolue vérifie
∆x ≤ 0.5 × 10n
alors le chiffre correspondant à la nieme puissance de 10 est dit significatif et tous ceux à sa gauche le sont
aussi. On arrête le compte au dernier chiffre non nul.
Si un nombre est donné avec k chiffres significatifs, on commence à compter à partir du premier chiffre non
nul à gauche et l’erreur absolue est inférieure à 0.5 fois la puissance de 10 correspondant au dernier chiffre
significatif.
Remarque 2 Le nombre de chiffres significatifs correspond en générale au nombre de chiffres connus avec
certitude plus le premier chiffre incertain.
22
Pour une approximation du nombre π par le nombre , l’erreur absolue est:
7
∆π = |π − 3.142857...| = 0.001264...
Cette valeur est inférieure à 0.5 × 10−2 , donc le chiffre des centièmes est significatif, et on retient une
valeur approchée avec 3 chiffres significatifs, soit 3.14.
Pour une approximation du nombre π par le nombre 3.1416, l’erreur absolue est:
∆π = |π − 3.1416| = 0.0000073...
Cette valeur est inférieure à 0.5 × 10−4 , donc le chiffre correspondant à cette puissance de 10 est significatif
(ainsi que tous les chiffres situés à sa gauche).
Remarque 3 Il est donc à remarquer que le chiffre 6 dans l’approximation 3.1416 est significatif même
si la quatrième décimale de π est un 5. Ceci montre l’intérêt de considérer le dernier chiffre significatif
comme incertain.
Lorsque une valeur est donnée avec des chiffres tous significatifs, on peut en déduire l’erreur absolue. Par
exemple, pour une mesure donnée de 70.563 Kg avec 5 chiffres significatifs, l’erreur absolue vérifie
∆x ≤ 0.5 × 10−3
En pratique, on conclut que ∆x = 0.5 × 10−3 Kg.
Definition 3 (Écriture scientifique) Tout nombre réel x peut s’écrire sous une forme dite scientifique:
x = ±m × 10e
tels que e ∈ Z dit l’exposant et m ∈ [0, 10[ dit la mantisse.
Une variante de cette définition consiste à considéré l’écriture:
x = ±men ou x = ±mEn
tels que n ∈ Z l’exposant et m ∈ [0, 10[ la mantisse.
4 / 10
Definition 4 (Écriture scientifique générale) Tout nombre réel x peut s’écrire sous une forme dite
scientifique dans une base b (b étant un entier):
x = ±m × be
tels que e ∈ Z dit l’exposant et m ∈ [0, b[ dit la mantisse.
Exercice 4
Tous les chiffres des nombres suivants sont significatifs. Donner une borne supérieure de l’erreur absolue
et estimer l’erreur relative dans les cas suivants:
1) 0.1234 2) 8.760 3) 3.14156 4) 0.11235 × 10−3 5) 8.000 6) 0.22356 × 108
3 Représentation des nombres sur ordinateur
La structure interne des ordinateurs s’appuie sur le système binaire (contrairement aux calculatrices de
poche qui utilisent la base 10 avec une mantisse généralement d’une longueur entre 8 et 12). L’unité
d’information ou le bit prend la valeur 0 ou 1. Or, très peu d’information peut être accumulée moyennant
un seul bit. Ce qui ramène à considérer un regroupement de bits dit mot d’une certaine longueur (8, 16,
32 ou 64 bits sont les plus courantes). Les nombres (entiers et réels) sont alors représentés (codés) sur des
mots.
3.1 Représentation des nombres entiers signés
Une représentation des nombres entiers signés (positifs ou nuls) consiste à considérer un mot d’une certaine
longueur et de consacrer le premier bit (de la gauche) pour désigner le signe: 0 si positif et 1 si négatif.
Ainsi, on peut considérer la représentation suivante:
pour le nombre 27; et la représentation suivante:
pour le nombre -1307.
Une telle représentation sur n bits permet de coder les nombres compris entre −2n−1 + 1 et 2n−1 − 1.
Toutefois, quelques difficultés peuvent se manifester au niveau des opérations arithmétiques.
Exercice 5
Exprimer les nombres décimaux suivants en représentation binaire classique puis donner une
représentation en 8 bits:
1) 306 2) −537 3) −12 4) 12345678
5 / 10
3.2 Représentation des nombres réels
Pour les nombres réels, une représentation typique se base sur l’idée de considérer l’écriture scientifique
dans la base 2, et de coder ses trois parties, à savoir le signe, la mantisse et l’exposant, sur un mot d’une
certaine longueur. Ce qui revient à faire un codage du genre:
qui représente un codage du nombre −0.40625 sur 8 bits.
Remarque 4 Pour certaines représentations, la mantisse est considérée sous une forme normalisée, soit
1
≤m<1
b
Ceci revient à 0.1 ≤ m < 1 dans la base 10. Cette normalisation permet d’avoir une représentation unique
des nombres. Ainsi pour 80.7 la seule représentation possible est 0.807 × 102 .
Definition 5 Une mantisse est dite normalisée si elle correspond à une considération qui permette l’unicité
de la représentation des nombres.
Dans le cadre d’une telle considération, il semble être non nécessaire de garder le premier chiffre significatif
en mémoire puisque c’est toujours égal à zero. Ainsi, pour le nombre 0.40625, sa conversion en base 2
donne 0.01101 qui est équivalente à 0.1101 × 10−1 avec une mantisse normalisée. Seulement la fraction
1101 (dite pseudo-mantisse) a été gardée en mémoire.
Notons que la méthode de conversion d’une fraction décimale en valeur binaire est similaire à celle utilisée
dans le cas des entiers. Soit f une fraction décimale comprise entre 0 et 1. Il faut donc trouver les Mi tels
que f s’écrit en base 2 comme 0.M1 M2 M3 M4 . . . , ce qui revient à dire que
f = M1 × 2−1 + M2 × 2−2 + M3 × 2−3 + M4 × 2−4 . . .
Pour évaluer la pseudo-mantisse M1 M2 M3 M4 . . . , il faut multiplier f par 2 pour obtenir M1 plus une
fraction, puis multiplier la fraction (2 f − M1 ) par 2 pour obtenir M2 . En poursuivant ce raisonnement
jusqu’à ce que la partie fractionnaire soit nulle ou que le nombre maximal de chiffres de la mantisse est
atteint, on trouve la représentation binaire de la fraction f .
Par exemple, pour le nombre 0.40625 on a:
0.40625 × 2 = 0.81250 =⇒ M1 =0
0.81250 × 2 = 1.62500 =⇒ M2 =1
0.62500 × 2 = 1.25000 =⇒ M3 =1
0.25000 × 2 = 0.50000 =⇒ M4 =0
0.50000 × 2 = 1.00000 =⇒ M5 =1
ce qui signifie que 0.40625 s’écrit 0.01101 en base 2.
6 / 10
Pour une fraction 13 , la représentation en base binaire est aussi infinie, en effet:
1 2
×2 = 0+ =⇒ M1 = 0
3 3
2 1
×2 = 1+ =⇒ M2 = 1
3 3
1 2
×2 = 0+ =⇒ M3 = 0
3 3
2 1
×2 = 1+ =⇒ M4 = 1
3 3
Cette conversion est sans fin, ce qui signifie que 13 s’écrit 0.0101 0101 0101 0101 . . . en base 2. En pratique,
on s’arrête après avoir atteindre le nombre maximal de bits alloué à la mantisse.
Un exemple de conversion intriguant est celui de la fraction finie en base 10, 0.1:
0.1 × 2 = 0.2 =⇒ M1 =0
0.2 × 2 = 0.4 =⇒ M2 =0
0.4 × 2 = 0.8 =⇒ M3 =0
0.8 × 2 = 1.6 =⇒ M4 =1
0.6 × 2 = 1.2 =⇒ M5 =1
0.2 × 2 = 0.4 =⇒ M6 =0
qui donne une représentation infinie 0.00011 0011 0011 0011 . . . en base 2!
Exercice 6
Convertir en forme binaire les fractions décimales suivantes:
3
1) 0.5 2) 0.2 3) 0.35 4) 0.9 5) 0.35 6) 8
3.3 Norme IEEE 754
L’Institute of Electrical and Electronics Engineers (IEEE) propose une représentation des nombres réels
sous la norme IEEE 754 (dernière révision en 2019):
Encodage Signe Exposant Mantisse
Simple précision sur 32 bits 1 bit 8 bits 23 bits
Double précision sur 64 bits 1 bit 11 bits 52 bits
Quadruple précision sur 128 bits 1 bit 15 bits 112 bits
Dans la norme IEEE 754, la mantisse est normalisée de telle sorte que la mantisse commence toujours par
un 1:
x = ±1.M × 2e
où M est la pseudo-mantisse. Le 1 précédant la virgule n’est pas codé en machine et est appelé bit caché
(ou implicite), ce qui permet de gagner un bit en mémoire.
7 / 10
Notant les chiffres de l’encodage en IEEE 754 d1 , d2 , . . . , d p où p = 32, 64 ou 128, les représentations en
base 2 sur 32 bits, 64 bits 128 bits sont données respectivement par:
d1 d2 d3 . . . d31 d32 = (−1)d1 × 2(d2 d3 ...d9 )2 × 2−127 × (1.d10 d11 . . . d31 d32 )2
d1 d2 d3 . . . d63 d64 = (−1)d1 × 2(d2 d3 ...d12 )2 × 2−1023 × (1.d13 d14 . . . d31 d64 )2
d1 d2 d3 . . . d127 d128 = (−1)d1 × 2(d2 d3 ...d16 )2 × 2−16383 × (1.d17 d18 . . . d127 d128 )2
En guise d’exemple, le nombre x = 01000001110100001000000001000000 en base 2 sous la norme IEEE
754 se décompose ainsi:
x = (−1)0 × 2(10000011)2 × 2−127 × (1.10100001000000001000000)2
= (−1)0 × 2131 × 2−127 × (1.10100001000000001000000)2
= 24 × (1.10100001000000001000000)2
= (11010.0001000000001000000)2
= 26.062622
Inversement, l’encodage du nombre y = 24.0625 se fait par conversion des deux parties: 24 et 0.0625 en
base 2, puis par normalisation de la mantisse:
y = 24 + 0.0625
= 11000 + 0.0001
= 11000.0001
= 1.10000001 × 24
L’exposant 4 est décalé de 127 pour devenir 131, ce qui vaut 10000011 en base 2 sur 8 bits (la longueur de
l’exposant). Notant que y est positif, sa représentation en base 2 sous la norme IEEE 754 s’écrit:
0 10000011 10000001000000000000000
Exercice 7
Donner la valeur décimale représentée sous la norme IEEE 754 en simple précision par:
11000001111000000000000000000000
Exercice 8
Convertir les nombres suivants en base 2 sous la norme IEEE 754 en simple précision:
1) 30.0625 2) −52.234375 3) 7112.0 4) 17.3
La représentation sous la norme IEEE 754 comporte quelques exceptions notables. La première exception
importante est la représentation du nombre 0 pour lequel tous les bits de l’exposant et de la mantisse sont
nuls, donc ne peuvent obéir à la normalisation de la forme:
x = ±1.M × 2e
Outre, le zero, la norme prévoit aussi la représentation de +∞, −∞, + NaN et − NaN, NaN (not a
number) étant une représentation signalant une opération arithmétique interdite (p. ex. 00 ) ou un nombre
non-valide:
8 / 10
Signe Exposant Mantisse
+0 0 00000000 00000000000000000000000
−0 1 00000000 00000000000000000000000
+∞ 0 11111111 00000000000000000000000
−∞ 1 11111111 00000000000000000000000
+ NaN 0 11111111 xxxxxxxxxxxxxxxxxxxxxxx
− NaN 1 11111111 xxxxxxxxxxxxxxxxxxxxxxx
où un des x dans la mantisse de + NaN et − NaN est non nul.
Ces exceptions induisent un plus petit nombre positif (valant 2−126 ) et un plus grand nombre positif (valant
2 − 2−23 ) qui se représentent ainsi:
Signe Exposant Mantisse
min 0 00000001 00000000000000000000000
max 0 11111110 11111111111111111111111
Afin de remplir (partiellement) l’intervalle entre 0 et le plus petit nombre positif, une représentation de
nombres non-normalisés était prévu qui correspond à un exposant nul et une mantisse ayant au moins un
bit valant 1:
Signe Exposant Mantisse
Nombre non-normalisé positif 0 00000000 xxxxxxxxxxxxxxxxxxxxxxx
Nombre non-normalisé négatif 1 00000000 xxxxxxxxxxxxxxxxxxxxxxx
Cela permet de d’introduire la représentation d’un plus petit nombre positif non-normalisé: 1.4 × 10−45 .
3.4 Erreurs dues à la représentation
L’utilisation d’un nombre limité de bits pour représenter un nombre réel a des conséquences importantes
sur la précision des résultats:
• représentation limitée: quel que soit le nombre de bits utilisés, il existe un plus petit et un plus grand
nombre positif représentables (de même pour les nombres négatifs);
• représentation approchée: à l’intérieur de cet intervalle fini, seulement un nombre fini de nombres
sont représentables exactement, et on a recourt à la troncature ou à l’arrondi pour représenter les
autres réels.
La représentation en virgule flottante induit une erreur relative qui dépend du nombre de bits de la mantisse,
de l’utilisation de la troncature ou de l’arrondi ainsi que du nombre à représenter. Ainsi, le produit 10n ×
10−n sur Python donne 0.9999999999999999 à partir de n = 21.
Definition 6 On définit la précision machine étant la plus grande erreur relative peuvent être commise en
représentant un nombre réel sur ordinateur en utilisant la troncature.
Théoréme 5 La précision machine ε m vérifie ε m ≤ b−n , où b est la base utilisée et n le nombre de chiffres
(bits si b = 2) de la mantisse.
9 / 10
La précision machine dans le cadre de la norme IEEE 754 est de
2−23 = 0.119 × 10−6
2−52 = 0.222 × 10−15
2−112 = 0.193 × 10−34
en simple, double et quadruple précisions respectivement.
Remarque 6 La convention IEEE 754 impose l’utilisation de l’arrondi dans la représentation binaire des
nombres réels.
La représentation en virgule flottante permet les opérations arithmétiques classiques, à condition de prendre
en considération l’ordre de grandeur dans l’addition et la soustraction. Par exemple:
0.4090 × 10−6 × 0.5647 × 101 = 0.2309623 × 10−5
= 0.2310 × 10−5
0.4090 × 10−6 ÷ 0.5647 × 101 = 0.724278378 × 10−7
= 0.7243 × 10−7
0.4090 × 10−6 + 0.5647 × 101 = 0.4090 × 10 −6
+ 0.00000005647 × 10 −6
= 0.40900005647 × 10−6
= 0.4090 × 10−6
0.4090 × 10−6 − 0.5647 × 101 = 0.4090 × 10 −6
− 0.00000005647 × 10 −6
= 0.40899994353 × 10−6
= 0.4090 × 10−6
Remarque 7 La propriété de distributivité de la multiplication sur l’addition n’est pas toujours respectée
en arithmétique flottante. En effet, comparer les trois façons de calcul suivantes:
1. 122 × (333 + 695)
2. 0.122 × 10−3 × 0.333 × 10−3 + 0.695 × 10−3
3. 0.122 × 10−3 × 0.333 × 10−3 + 0.122 × 10−3 × 0.695 × 10−3
Exercice 9
On propose la convention fictive IEEE-FICT pour les nombres réels normalisés qui utilise exactement les
mêmes principes que la convention IEEE 754, mais sur 8 bits. Le premier bit est le bit de signe, les 3 bits
suivants représentent l’exposant par excès de 3 et les 4 derniers bits sont pour la mantisse normalisée (le
premier bit de la mantisse normalisée n’est pas mis en mémoire). Notons enfin que les exposants 000 et 111
sont réservés aux exceptions (nombres non normalisés) et ne peuvent donc pas être utilisés.
1. Donner les valeurs binaires et décimales de tous les exposants possibles dans cette représentation (en
excluant les exceptions).
2. Donner le plus petit nombre positif possible dans cette représentation (indiquer la représentation binaire
IEEE-FICT sur 8 bits et la valeur correspondante en décimal).
3. Donner la précision machine pour cette représentation.
4. Exprimer le nombre 3.25 avec la convention IEEE-FICT.
10 / 10