Vous êtes sur la page 1sur 63

CHAPITRE 0.

INTRODUCTION À L’ANALYSE

D’ERREURS.

1
1- Introduction.

Dans le titre de ce chapitre, le mot erreur n’est pas pris au sens

faute (raisonnement faux dans la méthode, instruction fausse dans

le programme). Il ne concerne que des erreurs inévitables.

On peut les classer en trois catégories :


2

- Les erreurs sur les données.

Elles peuvent être dues à l’imprécision des mesures physiques ou

au fait que les données proviennent elles mêmes d’un calcul ap-

proché.
3

Elles sont imposées, en quelque sorte, de l’extérieur et nous ne

pouvons agir sur elles. Pourtant, la manière dont elles se propa-

gent au cours des calculs est davantage du ressort du calcula-

teur. L’analyse de cette propagation sera évoquée au cours de

ce chapitre. Elle est liée aux notions de conditionnement et de

stabilité.
4

- Les erreurs d’arrondi. Ce sont des erreurs dues au fait que la

machine ne peut représenter les nombres réels qu’avec un nombre

fini de chiffres.

A chaque opération mathématique élémentaire, il pourra y avoir

une perte de chiffres significatifs. Le calculateur doit être vigilant

quand le nombre d’opérations est très important.


5

- Les erreurs d’approximation ou de discrétisation. Ce sont des

erreurs qu’on commet, par exemple, lorsqu’on calcule une inté-

grale à l’aide d’une somme finie, une dérivée à l’aide de différence

finies ou bien la somme d’une série infinie à l’aide un nombre fini

de ses termes (erreur de troncature).


6

Une situation qu’on rencontrera souvent consiste à approcher une

fonction par une combinaison liné aire finie de fonctions élémen-

taires. Ce type d’erreurs est fortement lié à la méthode employée.

Un des buts de l’analyse numérique consiste à évaluer ces erreurs

de discrétisation pour chaque algorithme mis en place.


7

2 - Evaluation de l’erreur

Pour mesurer l’erreur entre la solution fournie par une méthode

numérique et la solution du problème qu’on cherche à résoudre

(on parle aussi d’estimer la précision de la méthode), on introduit

les notions d’erreur absolue et relative.


8

Définition 1. Soit x
b une approximation d’un nombre réel x. On

définit l’erreur absolue entre ces deux scalaires par

|x − x
b|

qu’on note aussi par |∆x|.


9

Et on définie l’erreur relative par

|x − x b|
|xr |

|∆x|
qu’on note par Er (x) = |xr | , avec xr 6= 0 est une valeur de référence

pour x. En général, on prend xr = x.


10

De ces deux erreurs, c’est souvent la seconde que l’on priviligie

pour évaluer la précision d’un résultat, en raison de son invariance

par changement d’échelle : la mise à l’échelle x 7→ αx et x


b 7→

x, α 6= 0, laisse en effet l’erreur relative inchangée.


αb

Exemple. Si x = 2.224 et x
b = 2.223 alors, si on prend xr = x,

l’erreur relative

|x − x b| |x − xb| 0, 001
Er = = = ≤ 4, 4965 × 10−4.
|xr | |x| 2, 224
11

Cependant, si x est la valeur d’une fonction F (t) avec a ≤ t ≤ b,

on choisira parfois une valeur de référence globale pour toutes les

valeurs de t.


π 2
Exemple. Si x = sin(t) avec 0 ≤ t ≤ 4, on pourra prendre xr = 2 =

sup sin(t).
0≤t≤ π4
12

L’erreur absolue donne une mesure quantitative de l’erreur com-

mise et l’erreur relative en mesure l’importance.

Par exemple, si on fait usage d’un chronomètre dont la précision

est de l’ordre de 0, 1 seconde, l’erreur absolue est bornée par 0,1

s. Mais est-ce une erreur importante ? Dans le contexte d’un

marathon de 2h 20 mn l’erreur relative liée au chronomètre est

très faible :
13

0, 1
≤ 0, 00001191
2 × 60 × 60 + 20 × 60

et ne devrait pas avoir de conséquence sur le classement des

coureurs. Par contre s’il s’agit d’une course de 100 m d’une durée

d’environ 10 s, l’erreur relative est beaucoup plus importante

0, 1
= 0, 01
10

soit 1% du temps de la course ! Précision insuffisante pour dé-


14

partager les coureurs.

Les opérations élémentaires propagent des erreurs. Dans la pra-

tique, on considère que :

- L’erreur absolue sur une somme est la somme des erreurs ab-

solues.

- L’erreur relative sur un produit ou un quotient est la somme

des erreurs relatives.


15

3 - Arithmétique machine

Exemple. Calculer la valeur de

(1.111.111.1)2

La valeur fournie par une petite calculatrice à dix chiffres est

1, 234567876 × 1014

Mais la réponse exacte est 123456787654321.

La machine a donc tronqué le résultat à 10 chiffres et l’erreur


16

absolue est 54321 et l’erreur relative est de 0, 000000044%. Cet

exemple montre qu’il faut établir clairement l’objectif visé.

Cet objectif est double :

1) Nous voulons un bon ordre de grandeur (ici 1014) et avoir le

maximum de décimales exactes,

2) Ce maximum ne peut excéder la longueur des mots permis

par la machine et dépend donc de la machine.


17

Représentation machine des nombres réels

Le système de représentation machine de nombres réels le plus

utilisé en calcul scientifique est celui de la représentation en vir-

gule flottante normalisée. Cette notation a été introduite pour

garder une erreur relative à peu prés constante, quelque soit

l’ordre de grandeur du nombre qu’on manipule. En notation flot-

tante, un nombre x 6= 0 à la forme suivante


18

p
x ≈ ± m × b = f l(x)

où b est la base de numération utilisé (entier >= 2)

m est la mantisse : s’écrivant 0, puis une suite de s entiers y1 y2 . . . ys

avec y1 6= 0 et 0 ≤ yi ≤ b − 1, où le nombre des yi est au maximum

de N nombres significatifs (imposé par le choix de la taille des

emplacements reservés au type réel)

p est l’exposant (un nombre entier relatif, lui aussi limité par la
19

machine avec laquelle on travaille)

Dire que la représentation est normalisée, c’est supposer que b−1 ≤

m < 1 et que le premier chiffre de la matisse après la virgule est

non nul.

Exemple. En base 10, on a

2
12, 153 = 0, 12153 × 10
20

Les puissances de 2 sont fréquement utilisées par les constructeurs

d’ordinateurs. Cela signifie par exemple que tous les calculs in-

ternes sont faits en base 2 et seul le résultat affiché est traduit en

base 10.
21

Remarque. Du fait que l’ensemble des réels s’écrivant sous la

p
forme ± m × b est fini et que R est infini, les erreurs d’arrondi

sont inévitables.

1
Exemple. En base 10, x = 15 = 0, 0666666......

Dans le cas d’une représentation tronquée, pour s = 5 :

f l(x) = 0, 66666 × 10−1


22

Ici, nous avons modifié l’exposant afin de respecter la règle qui

veut que le premier chiffre de la mantisse ne soit pas nul. L’erreur

absolue |x − f l(x)| est majoré par 0, 7 × 10−6 et l’erreur relative est

de l’ordre de 10−5.

Dans une représentation tronquée à s chiffres, l’erreur relative

maximale est de l’ordre de 10−s.


23

Dans une représentation arrondie, lorsque la première décimale

négligée est supérieure ou égale à 5, on ajoute 1 à la dernière

décimale conservée.

1
Dans ce cas pour, x = 15 = 0, 0666666....., on a

f l(x) = 0, 66667 × 10−1

L’erreur absolue est majorée par 0, 5 × 10−6 et l’erreur relative

serait 0, 5 × 10−5.
24

Norme IEEE. L’institute for Electrical and Electronic Engineers

(IEEE) a mis en place l’une des représentations standard des nom-

bres flottants les plus utilisées (norme IEEE 754). Il a proposé

une représentation arrondie des nombres réels en simple précision

sur 32 bits et en double précision sur 64 bits.


25

Pour la simple précision, c’est à dire pour celle sur 32 bits, chaque

nombre se décompose de la manière suivante : 24 bits pour la man-

tisse (dont 1 bit pour le signe) et 8 bits pour l’exposant (dont 1 bit

pour le signe). Le plus grand nombre que l’on puisse représenter

est xmax = 1, 7 × 1037 et le plus petit nombre positif que l’on puisse

représenter est 7, 0 × 10−46.


26

Pour la double précision, c’est-à-dire pour celle sur 64 bits,

chaque nombre se décompose de la manière suivante : 53 bits pour

la mantisse (dont 1 bit pour le signe) et 11 bits pour l’exposant

(dont 1 bit pour le signe). Le plus grand nombre que l’on puisse

représenter est xmax = 9 × 10307 et le plus petit nombre positif que

l’on puisse représenter est xmin = 2, 5 × 10−324.


27

Erreurs d’arrondi. Considérons un x ∈ R∗, tel que |x| se trouve

entre les valeurs positives minimale et maximale s’écrivant de la

p
forme m × b avec N chiffres significatifs. On a alors

p p−1
|x| ≥ 0.1 × b = b

et soit f l(x) la représentation arrondie de x, la différence |f l(x) − x|,


28

l’erreur absolue, vaut au plus la moitié de la distance entre deux

p
éléments consécutifs de la forme m × b avec N chiffres significatifs

entourant x

1 p p 1 −N p
|f l(x) − x| ≤ 0, d1 . . . dN −1dN × b − 0, d1 . . . dN −1 (dN + 1) × b = b b
2 2

et par suite, on a pour l’erreur relative :

−N p 1−N
|f l(x) − x| b b b
≤ p−1 =
|x| 2b 2
29

1−N
b
La quantité 2 est appelée epsilon machine en utilisant l’arrondi

et où b est la base utilisée. Elle est notée εm.

Simple précision ⇒ εm ≈ 6.0 × 10−8

Double précision ⇒ εm ≈ 1.1 × 10−16

Cette erreur est systématiquement présente dans tout calcul arith-

métique sur nombre réel effectué par un ordinateur.


30

Exemple. Si on choisit N = 4, on a alors

f l( 31 ) − 13
 
1 0 1 1 1 −4+0 −4 1 −3
fl = 0, 3333×10 , f l( ) − ≤ 10 = 0, 5×10 et 1 ≤ 10
3 3 3 2 3
2

1 1 −4+1 −3 |f l(π) − π| 1 −3
f l (π) = 0, 3142×10 , |f l(π) − π| ≤ 10 = 0, 5×10 et ≤ 10
2 |π| 2
1
f l (12, 4551) = 0, 1246×102, |f l(12, 4551) − 12, 4551| ≤ 10−4+2 = 0, 5×10−2
2

|f l(12, 4551) − 12, 4551| 1 −3


et ≤ 10
|12, 4551| 2
31

L’arithmétique numérique n’a pas la précision de l’arithmétique

mathématique et peut, si on n’y prend pas garde, conduire à des

résultats inexactes, voire abérrants.


32

Arithmétique en virgule flottante.

Pour effectuer une opérations sur deux nombres réels, on effectue

l’opération sur leurs représentations flottantes et on prend ensuite

la représentation flottante du résultat.

- L’addition flottante : x ⊕ y = f l (f l (x) + f l (y)).

- La soustraction flottante : x y = f l (f l (x) − f l (y)).

- La multiplication flottante : x ⊗ y = f l (f l (x) × f l (y)) .


33

- La division flottante : x y = f l (f l (x) /f l (y)) .

Chaque opération intermédiaire dans un calcul introduit une nou-

velle erreur d’arrondi ou de troncature. On verra que deux expres-

sions algébriquement équivalentes peuvent fournir des résultats

différents et que l’ordre des opérations peut changer les résultats.


34

Pour l’addition et la soustraction, on peut effectuer ces deux

opérations que si les deux exposants sont les mêmes. On trans-

forme le plus petit exposant et alors on ne respecte plus la régle

voulant que le premier chiffre de la mantisse ne soit pas nul. Il est

possible de constater une déviation importante par rapport aux

régles habituelles de l’arithmétique. Ainsi x + (y + z) peut être

différent de (x + y) + z.
35

Exemple. Pour N = 4 chiffres significatifs, on a :

(1 + 0, 0005) + 0, 0005 = 1

Du fait que

0, 1 × 101 + 0, 5 × 10−3 = 0, 1 × 101 + 0, 0000. × 101 = 0, 1 × 101 = 1

et

1 + (0, 0005 + 0, 0005) = 1, 001.


36

Ainsi, l’addition flottante n’est pas associative. On remarquera

que si y est très petit par rapport à x, l’addition de x et y donnera

x.

Remarque. Dans les calculs où interviennent des nombres de

grandeur différentes, il est en général préférable d’effectuer les

opérations en groupant ceux d’ordres de grandeur similaires pour

éviter les pertes de chiffres significatifs.


37

Propagation des erreurs.

Les opérations élémentaires propagent les erreurs. La propagation

des erreurs est un des principaux problèmes en calcul numérique.

Dans le cas de l’addition, les erreurs absolues s’additionnent. Soit

en effet |∆x1| et |∆x2| les erreurs absolues sur x1 et x2.

On peut écrire

(x1 ± |∆x1|) + (x2 ± |∆x2|) = (x1 + x2) ± (|∆x1| + |∆x2|) .


38

En arithmétique flottante, l’erreur relative Er (x) est à peu près

constante, qu’on peut noter par u et alors les erreurs absolues

peuvent être approximativement explicitées par

|∆x1| = |x1| × u et |∆x2| = |x2| × u

Si les nombres en présence ont le même signe, l’erreur relative

reste la même que celle qu’avait x1 et x2


39

|∆x1| + |∆x2| (|x1| + |x2|) × u


= = u.
|x1 + x2| |x1 + x2|

Si par contre les nombres sont de signes différents, l’erreur relative

peut être amplifiée de façon spectaculaire si |x1| ≈ |x2|.


40

Dans le cas de la multiplication, les erreurs relatives s’additionnent.

On a, en négligeant certains termes

|(x1 + |∆x1|) × (x2 + |∆x2|) − x1x2| |x |1∆x2| + x2 |∆x1||



|x1x2| |x1x2|

|∆x1| |∆x2|
= + ≤ 2u ≤ 2εm
|x1| |x2|
41

Des formules équivalentes peuvent donner des résultats différents,

on peut améliorer le résultat en utilisant une formule mathéma-

tique équivalente nécessitant des opérations différentes.

√ √
Exemple. Si on considère les nombres 7001 et 7000. En

arithmétique flottante à 8 chiffres, on a

√  √ 
fl 7001 = 0, 83671979 × 102 et f l 7000 = 0, 83666003 × 102
42

Alors

√ √
7001− 7000 ≈ f l (0, 83671979 − 0, 83666003) × 10 = 0, 59760000×10−2.
2


On peut obtenir un résultat plus précis en utilisant l’identité suiv-

ante :

√ √ x−y
x− y=√ √
x+ y

On a alors

√ √ 1 1 −2
7001− 7000 = √ √ ≈ 3 ≈ 0, 59759297×10 .
7001 + 7000 0, 16733798 × 10
43

Conditionnement et de stabilité numérique.

Conditionnement.

Un problème est dit bien (ou mal) conditionné, si une petite vari-

ation des données entraine une petite (une grande) variation sur

les résultats.

Le conditionnement décrit la sensibilité de la sortie ou du résultat

à une petite variation de l’entrée.


44

Cette notion est liée au problème mathématique lui même et est

indépendante de la méthode utilisée pour le résoudre.

Soit x ∈ R 7→ y = f (x) ∈ R, le conditionnement décrit la sensibilité

de f au voisinage de x, on mesure la variation de la sortie yb =

y + ∆y (y = f (x)) en fonction de la perturbation ∆x sur x (b


x=

x + ∆x).
45

Pour f suffisamment régulière, on a

0
yb − y = ∆y = f (x)∆x + o (∆x)

Si la perturbation ∆x est suffisamment petite, alors

0
∆y ' f (x)∆x.
46

Dans le cas où on ne voudrait pas négliger le reste, T. A. F. dans

B(x, ρ) ⇒

0
|∆y| ≤ max f (t) |∆x| .
t∈B(x,ρ)

La dérivée de f en x est donc notre coefficient d’amplification pour

l’erreur absolue.
47

Pour l’erreur relative, on suppose que y 6= 0 et x 6= 0

Dans le cas où le reste est négligé

0
∆y xf (x) ∆x
'
y f (x) x

et dans le cas où le reste n’est pas négligé

 
∆y 0 x ∆x
≤ max f (t)
y t∈B(x,ρ) f (x) x
48

On vient de faire apparaître nos coefficients d’amplification dit

généralement conditionnement de f au point x.

Définition. On appelle conditionnement au point x 6= 0 d’une

fonction f de classe C 1 au point x et telle que f (x) 6= 0, la quantité

0
xf (x)
cond(f )x = .
f (x)
49

La quantité

0 x
cond(f )B(x,ρ) = max f (t)
t∈B(x,ρ) f (x)

est dite conditionnement de f dans le voisinage B(x, ρ) de x.

On dira que le calcul de y = f (x) est mal conditionné si cond(f )x

est grand.
50

Exemple. f (x) = x fonction C +∞ sur R+∗. On a ∀x > 0,

0
xf (x) 1
= .
f (x) 2

On a ici un bon conditionnement, car l’erreur relative sur f sera

au plus moitié d’une erreur relative sur x.

Exemple. f (x) = a − x est C +∞ sur R. Si x 6= 0 et x 6= a

0
xf (x) x
=
f (x) a−x

Ici le conditionnement est très mauvais si x est voisin de a.


51

Stabilité numérique.

Une méthode est dite instable si elle est sujette à une propagation

importante des erreurs numériques de discrétisation et d’arrondi.

Un problème peut être bien conditionné alors que la méthode

numérique choisie pour le résoudre est instable. Dans ce cas, il

est impératif de changer de méthode numérique.


52

Par contre, si le problème de départ est mal conditionné, au-

cune méthode numérique ne pourra y remédier. Il faudra alors

essayer de trouver une formulation mathématique différente du

même problème, si on sait que le problème physique sous-jacent

est stable.
53

Soit un problème dont la solution (exacte) y est une fonction f

des données x : y = f (x). x et y peuvent être des scalaires, des

vecteurs, des matrices, etc...En arithmétique finie ou flottante,

un algorithme ne peut fournir qu’une solution approchée yb (qui

dépend de cet algorithme !). La différence yb − y est appelée erreur

directe.

Si cette erreur est petite (en norme), l’algorithme est dit stable.
54

Définition. (Stabilité directe) Soit f une fonction et fb une fonction

approchée. Un algorithme est dit stable si ∀x

fb(x) − f (b
x)
= O(εm)
|f (b
x)|

avec

|b
x − x|
= O(εm)
|x|

Un problème est stable, si pour une donnée x


b pas très loin de x

on obtient une solution fb(x) pas très loin de f (b


x).
55

Définition. (Stabilité amont) Soit f une fonction et fb une fonction

approchée. Un algorithme est dit stable amont si pour tout x

|b
x − x|
f (x) = f (b
b x) avec = O(εm)
|x|

Un problème est stable amont, si pour une donnée x


b pas très loin

de x on obtient une solution fb(x) qui vaut exactement f (b


x).
56

Exemple. Soient +, −, × et / les opérations arithmétiques basiques

dans R notées collectivement par (◦) et ⊕, , ⊗, les opérations

arithmétiques flottantes correspendantes notées elles collective-

ment par (}).

Les opérations ⊕, , ⊗, sont stables amont

1) ∀x ∈ R, ∃ε avec |ε| ≤ εm tel que f l(x) = x (1 + ε).

2) Pour tout x, y nombres flottants, il existe ε avec |ε| ≤ εm tel que

x } y = (x ◦ y) (1 + ε).
57

Exemple de la soustraction : f (x1, x2) = x1 − x2.

1) En utilisant le calcul en nombre flottant, on a

fb(x1, x2) = f l(x1) f l(x2)

2) En utilisant la première propriété,

f l(x1) = x1 (1 + ε1) et f l(x2) = x2 (1 + ε2)

3) En utilisant la seconde propriété,

f l(x1) f l(x2) = (f l(x1) − f l(x2)) (1 + ε3)


58

4) En combinant l’ensemble de ces équations, on obtient

f l(x1) f l(x2) = x1 (1 + ε4) − x2 (1 + ε5) = x


b1 − x
b2.

On a bien

k(b b2) − (x1, x2)k


x1 , x
f (x1, x2) = f (b
b x1 , x
b2) avec = O (ε) .
k(x1, x2)k
59

Exemple.

√ √
f (x) = x+1− x

Le conditionnement de cette fonction au point x 6= 0 est égal à :

0 r
xf (x) 1 x
cond (f )x = =
f (x) 2 x+1

1
cond(f )x est proche de 2 quand x est grand. Donc si x est grand,

le conditionnement de f est bon. Cependant, dans un calcul à 6

chiffres significatifs, on a
60

√ √
f (12345) = 12346 − 12345 ' 111, 113 − 111, 108 = 0, 5 × 10−2.

Or, un calcul précis donne f (12345) ' 0, 4500033 × 10−2.

L’erreur relative est de l’ordre de 10% ce qui est important et peu

en accord avec le bon conditionnement de f .


61

Ceci est dû à l’algorithme utilisé :

√ √
x0 = 12345, x1 = x0 + 1, x2 = x1, x3 = x0 , x 4 = x2 − x3 .

Dans cet algotithme, la fonction x3 7→ x2 − x3 (x2 est supposé fixe),

a un mauvais conditionnement pour x3 voisin de x2, bien que f a

un bon conditionnement pour x grand.


62

En conclusion, le choix d’un bon algorithme numérique est es-

sentiel. Dans notre cas ici, un meilleur algorithme est obtenu en

utilisant :

√ √ 1
f (x) = x+1− x=√ √
x+1+ x

Dans ce cas, toujours avec 6 chiffres significatifs :

1 1
f (12345) = √ √ ' ' 0, 450002 × 10−2.
12346 + 12345 222, 221

ce qui donne une erreur relative de 3 × 10−4%.

Vous aimerez peut-être aussi