1.2 Nombres réels
7
−1
−0.5
0
0.5
1
1.5
x 10
−14
Figure 1.1. Oscillations de la fonction (1.3) dues aux erreurs d’annulation
>> x = 1.e-15; ((1+x)-1)/x
ans =
1.1102
Ce résultat est très imprécis, l’erreur relative étant supérieur à 11% !
Un autre cas d’annulation numérique est rencontré quand on évalue
la fonction
f(x) = x
7
− 7x
6 + 21x
5
− 35x
4 + 35x
3
− 21x
2 + 7x − 1
(1.3)
en 401 points d’abscisses équirépartis dans [1 − 2 · 10
−8 , 1 + 2 · 10
−8 ]. On
obtient le graphe chaotique représenté sur la Figure 1.1 (le comportement
réel est celui (x − 1)
7 , qui est essentiellement constant et proche de la
fonction nulle dans ce petit voisinage de x = 1). A la Section 1.5, nous
verrons les commandes qui ont permis de construire ce graphe.
Notons enfin que des quantités indéterminées comme 0/0 ou ∞/∞,
n’ont pas leur place dans F : ils produisent ce qu’on appelle un NaN dans NaN
MATLAB et dans Octave (pour not a number). Les règles habituelles
de calcul ne s’appliquent pas à cette quantité.
Remarque 1.1 Il est vrai que les erreurs d’arrondi sont généralement petites,
mais quand elles s’accumulent au cours d’algorithmes longs et complexes, elles
peuvent avoir des effets catastrophiques. On peut citer deux exemples marquants : l’explosion de la fusée Ariane le 4 juin 1996 était due à une erreur
d’overflow dans l’ordinateur de bord ; l’échec de la mission d’un missile américain Patriot pendant la guerre du Golfe en 1991 résultait d’une erreur d’arrondi
dans le calcul de sa trajectoire.
Un exemple aux conséquences moins catastrophiques (mais néanmoins dérangeant) est donné par la suite
z2 = 2, zn+1 = 2
n−1/2
1 −
√
1 − 4 1−n z 2
n , n = 2, 3, . . .
(1.4)
qui converge vers π quand n tend vers l’infini. Quand on utilise MATLAB
pour calculer zn, l’erreur relative entre π et zn décroît pendant les 16 premières
itérations, puis augmente à cause des erreurs d’arrondi (comme le montre la
Figure 1.2).
7
−1
−0.5
0
0.5
1
1.5
x 10
−14
Figure 1.1. Oscillations de la fonction (1.3) dues aux erreurs d’annulation
>> x = 1.e-15; ((1+x)-1)/x
ans =
1.1102
Ce résultat est très imprécis, l’erreur relative étant supérieur à 11% !
Un autre cas d’annulation numérique est rencontré quand on évalue
la fonction
f(x) = x
7
− 7x
6 + 21x
5
− 35x
4 + 35x
3
− 21x
2 + 7x − 1
(1.3)
en 401 points d’abscisses équirépartis dans [1 − 2 · 10
−8 , 1 + 2 · 10
−8 ]. On
obtient le graphe chaotique représenté sur la Figure 1.1 (le comportement
réel est celui (x − 1)
7 , qui est essentiellement constant et proche de la
fonction nulle dans ce petit voisinage de x = 1). A la Section 1.5, nous
verrons les commandes qui ont permis de construire ce graphe.
Notons enfin que des quantités indéterminées comme 0/0 ou ∞/∞,
n’ont pas leur place dans F : ils produisent ce qu’on appelle un NaN dans NaN
MATLAB et dans Octave (pour not a number). Les règles habituelles
de calcul ne s’appliquent pas à cette quantité.
Remarque 1.1 Il est vrai que les erreurs d’arrondi sont généralement petites,
mais quand elles s’accumulent au cours d’algorithmes longs et complexes, elles
peuvent avoir des effets catastrophiques. On peut citer deux exemples marquants : l’explosion de la fusée Ariane le 4 juin 1996 était due à une erreur
d’overflow dans l’ordinateur de bord ; l’échec de la mission d’un missile américain Patriot pendant la guerre du Golfe en 1991 résultait d’une erreur d’arrondi
dans le calcul de sa trajectoire.
Un exemple aux conséquences moins catastrophiques (mais néanmoins dérangeant) est donné par la suite
z2 = 2, zn+1 = 2
n−1/2
1 −
√
1 − 4 1−n z 2
n , n = 2, 3, . . .
(1.4)
qui converge vers π quand n tend vers l’infini. Quand on utilise MATLAB
pour calculer zn, l’erreur relative entre π et zn décroît pendant les 16 premières
itérations, puis augmente à cause des erreurs d’arrondi (comme le montre la
Figure 1.2).
