AnumII Ch1 Bases
AnumII Ch1 Bases
AnumII Ch1 Bases
SUR LES
BASES DU CALCUL SCIENTIFIQUE
NDONG NGUEMA E.-P. (18 avril 2016)
I - Généralités.
1◦ ) Introduction.
a) Définition.
L’Analyse Numérique est la branche des Mathématiques qui développe et étudie les outils et les
méthodes mathématiques pertinents pour la résolution numérique des problèmes issus des divers domaines
de l’activité humaine et susceptibles d’une modélisation mathématique. Un outil essentiel à cet égard
de nos jours, pour l’efficacité de cette discipline scientifique, est l’outil informatique dans ses 2 com-
posantes : ordinateur et programmation. La mise en œuvre effective sur ordinateur des méthodes
numériques développées en Analyse Numérique constitue le Calcul Scientifique, bien que, parfois, la
démarcation exacte entre ces 2 disciplines soit difficile à établir.
Composante essentielle des Sciences de l’Ingénieur , et bien que finalement aussi ancienne que
la civilisation humaine (cf. les calculs nécessaires pour construire les pyramides égyptiennes), l’Analyse
Numérique (et son corollaire qu’est le Calcul Scientifique) est ainsi aujourd’hui indissolublement liée aux
performances des ordinateurs contemporains. Celles-ci s’améliorant sans cesse (aussi bien pour la quantité
des informations stockables en mémoire que pour la vitesse de leur traitement par l’unité
centrale), ceci est à l’origine du développement considérable qu’on observe pour cette discipline depuis
une soixantaine d’années. Développement également tiré par la grande variété et la complexité toujours
croissante des problèmes auxquels l’être humain est confronté, et pour lesquels la compétence de l’ingénieur
(et d’autres spécialistes) est requise. Les méthodes numériques mises au point en Analyse Numérique sont
alors partie intégrante de ce qu’il est convenu d’appeler Mathématiques de l’Ingénieur , ou, plus
généralement, Mathématiques Appliquées ou Ingénièrie Mathématique.
1
2 I - Généralités
↓
Problème Modèle Solution Sinon Revoir le modèle
du monde réel → mathématique → théorique ? → mathématique
↑ ↓ Si Oui
Sinon Solution calculable Si Oui Calcul de la solution
« à la main » ? → « à la main »
↓ ↓
Discrétisation du problème (si nécessaire)
↓
Mise en place d’une méthode numérique
↓
Algorithmisation de la méthode numérique
↓
Programme informatique traduisant l’algorithme
dans un langage de programmation évolué
↓
Exécution du programme sur ordinateur
↓
Interprétation ← Résultats numériques ←
n
X ∂f
f (X0 + h) = f (X0 ) + (X0 ) · hi + O k h k2 ,
∂xi
i=1
L’objectif étant ici d’utiliser les mathématiques pour traiter des problèmes concrets, il apparaı̂t donc
immédiatement la nécessité, au moins pour les résultats à fournir à l’utilisateur pour in-
terprétation, de sortir de l’aspect abstrait des objets mathématiques.
Z 1
dx π
Ainsi, il sera déraisonnable de fournir I = 2
= comme résultat définitif pour la résolution
0 1 + x 4
d’un problème issu du monde réel. Il est plutôt souhaitable de dire, par exemple, que I = 0, 785 à 10 −3
près, ou, si I représente une variation dans une proportion ou un taux, I ≃ 78, 5 %.
√
De même, au lieu de dire « la solution > 0 de x2 − 2 = 0 est x = 2 » , il sera préférable de dire « la
solution sous la contrainte x > 0 de x2 − 2 = 0 est x = 1, 4142 à 10 −4 près » .
grande pertinence de l’erreur relative comme mesure d’erreur provient du fait qu’elle est une mesure
de comparaison entre l’erreur absolue d’une approximation et la valeur exacte de la quantité inconnue
approchée. Il est ainsi souvent adapté, comme dans les exemples ci-dessus, de l’exprimer en pourcentage.
Et il est plus aisé d’avoir une base de comparaison universelle pour son ordre de grandeur : il suffit de
comparer sa valeur absolue (i.e. l’incertitude relative) au nombre 1. Une incertitude relative2 ≪ 1 traduit
une très bonne approximation de la quantité inconnue, alors qu’une incertitude relative proche ou excédant
1 (voire 33 %) traduit une approximation tout bonnement aberrante.
• • • N.B. Autant que faire se peut, il faut faire très attention à la manière de rendre des résultats
numériques (issus de mesures ou de calculs). En effet, le nombre de décimales fournies pour un
résultat numérique implique a priori la précision qu’on lui accorde par rapport à la vraie
valeur. Ainsi, par exemple, fournir comme résultat α e = 887, 0920146 sous-entend que la vraie valeur
inconnue α satisfait :
887, 09201455 6 α 6 887, 09201465, i.e. − 5 · 10 −8 6 δ αe 6 5 · 10 −8 .
On écrit : α ≃ 887, 0920146 . Dans ces conditions, « x ≃ 6, 4 » n’est pas équivalent à « x ≃ 6, 4000 » ! 3
••• Remarque : Dans les calculs sur les erreurs numériques, les 2 écritures suivantes d’une approximation
e de α ∈ IR∗ permettent de reconnaı̂tre directement, respectivement, les erreurs absolue et relative
α
associées à α
e:
α
e = α + d ⇐⇒ δ αe =d ; α
e = α · (1 + u) ⇐⇒ ε αe =u . (1)
k f − g k∞ 6 ε ⇐⇒ ∀ x ∈ [ a , b ] , | f (x) − g(x) | 6 ε,
∀x ∈ [a, b], f (x) − ε 6 g(x) 6 f (x) + ε,
ce qui signifie qu’en tout point x ∈ [ a , b ] , les valeurs prises par les fonctions f et g diffèrent de
pas plus que ε . Ceci se traduit, au niveau des graphes de ces 2 fonctions sur [ a , b ] , par le fait que
plus ε est petit, plus ces 2 graphes tendent à se superposer. Il en est ainsi lorsqu’on a une suite de
fonctions (fn ) qui converge uniformément vers la fonction f sur [ a , b ] , car alors :
k fn − f k∞ −−−−→ 0 .
n −→ +∞
Ce mode de convergence signifie que, pour tout ε > 0 (aussi petit qu’on puisse le prendre), à
partir d’un certain rang, toutes les fonctions fn sont, en tout x ∈ [ a , b ] , à une distance de f qui
n’excède pas ε . Ceci n’est pas réalisé simultanément pour tous les x ∈ [ a , b ] quand on n’a qu’une
convergence simple des fonctions fn vers f sur [ a , b ] . •
2
« ≪ » se lit « très petit(e) par rapport à » ; « ≫ » se lit « très grand(e) par rapport à » .
3
On distinguera alors ≃ du symbole ≈ qui dénote une approximation sans indication de précision numérique.
GEN. ET ELEMENTS SUR LES BASES DU CALCUL SCIENTIFIQUE (ND/NG, 18 avril 2016) 5
• • • Signification : (2) ⇐⇒ N = ∗ cn b n + cn−1 b n−1 + · · · c1 b + c0 . (3)
Conventionnellement, pour les entiers (comme pour les réels) > 0, le signe est généralement omis.
La notation (2) est l’écriture de l’entier N en base b ou développement de N suivant les puissances de
b. Ceci est une manière de représenter l’entier N . Comme pour toute représentation, se pose le problème
de son existence et de son unicité. Or, il est clair, d’après sa signification (3), que, sans contrainte sur le
chiffre le plus à gauche cn , cette unicité ne saurait être réalisée. En effet, on peut intercaler autant de 0
qu’on veut entre le signe et cn sans que la représentation de N ne reste valable. D’où l’utilité de :
• • • Unicité de l’écriture (2) de l’entier N sous la contrainte :
(N 6= 0 =⇒ cn 6= 0) et (N = 0 =⇒ n = 0) , (4)
qu’on peut regrouper en :
cn = 0 =⇒ n = 0 . (5)
i.e. le chiffre le plus à gauche ne peut être nul que s’il s’agit du chiffre des unités c0 .
Cette contrainte est admise dans l’écriture de tous les entiers dans la suite.
Pour N = 0, même sous (5), il restera toujours une ambiguı̈té pour ce qui est du choix du signe.
Par contre, pour N 6= 0, on peut démontrer que, sous (5), il y a existence et unicité de l’écriture (2) de
l’entier N . En effet, pour le signe, on a : si N > 0, le signe est + ; sinon, c’est −. Ensuite, pour prouver
l’existence et l’unicité de c0 , c1 , · · · , cn , on peut remplacer N par sa valeur absolue puisque :
4
Pour le vocabulaire, lorsque b = 2, on parle de système binaire ; b = 3 : système ternaire ; b = 4 : système quaternaire ;
b = 8 : système octal ; b = 10 : système décimal ; b = 16 : système hexadécimal .
5
Lorsque la base dans laquelle on travaille est claire, on peut se contenter de la notation implicite usuelle des nombres
(entiers ou réels) qui ne spécifie pas la base. Par contre, si ce n’est pas le cas, et spécialement si au moins 2 bases différentes
sont en jeu, alors il est utile de faire apparaı̂tre, pour chaque écriture de nombre, la base correspondante.
6
Pour a, b, h ∈ IR, [ a (h) b ] dénote l’ensemble (fini) des nombres allant de a à b, par pas de h.
6 II - Nombres et opérations arithmétiques sur ordinateur
Posons donc : N0 = | N |. L’existence et l’unicité de c0 sont alors facilement obtenues par (6) en notant
que c0 est le reste de la division euclidienne de N0 par b. Une fois c0 calculé, on a 2 possibilités :
– Si c0 = N0 (i.e. N0 < b), alors n = 0 et c’est terminé ;
– Sinon, on remplace N0 par N1 = (N0 − c0 )/b,
lequel est, en fait, le quotient de cette même division euclidienne de N0 par b. On a :
N1 = cn cn−1 · · · c2 c1 = cn b n−1 + cn−1 b n−2 + · · · c2 b + c1 .
Par conséquent, c1 est le reste de la division euclidienne de N1 par b. On peut donc répéter la
procédure. On s’arrête au premier quotient Nk < b. On a alors : n = k et cn = Nk . On notera que
l’ensemble de la procédure est clairement algorithmique et aisément programmable. On retrouve ainsi
l’algorithme classique, connu depuis le Lycée, pour convertir un entier dans la base b.
⊲ Exercice A1 . Ecrire un algorithme qui trouve l’écriture d’un entier N dans une base b donnée.
⊲ Exercice A2 . Trouver les écritures en base 7, 15, 67 et 100 de l’entier 741 236 798| 10 .
(ou ∗ cn cn−1 · · · c0 , c−1 c−2 c−3 · · · b , ou ∗cn cn−1 · · · c0 , c−1 c−2 c−3 · · · | b ),
où :
∗ ∈ { +, −} est le signe de x, n ∈ IN et ( ck )k = n, n−1, ··· , 1, 0, −1, −2, ··· ⊂ { 0, 1, · · · , b − 1 }.
+∞
!
X
• • • Signification : (7) ⇐⇒ x= ∗ cn b n + cn−1 b n−1 + · · · + c1 b + c0 + c−k b−k . (8)
k=1
⊲ Exercice A3 . Montrer que la somme infinie apparaissant dans (8) est un nombre réel bien défini.
La notation (7) est l’écriture du réel x en base b ou développement de x suivant les puissances de b.
Ceci est une manière de représenter le réel x. La possibilité d’intercaler des zéros entre le signe et le chiffre
le plus à gauche cn dans (7) fait que le même problème d’unicité rencontré pour l’écriture d’un entier se
retrouve ici. D’où la nécessité d’imposer, ici aussi, la contrainte (5). Cependant, contrairement au cas des
entiers, celle-ci ne suffit pas, pour certains réels non nuls, à assurer l’unicité de leur écriture du type (7).
En effet, il peut également se poser un problème d’unicité pour les chiffres c−1 , c−2 , c−3 , · · · . Pour s’en
convaincre, traiter l’exercice suivant :
⊲ Exercice A4 . Montrer que le réel qui s’écrit 0, 999 · · · (i.e. des 9 jusqu’à l’infini) en base 10 s’écrit
aussi 1, 000 · · · (i.e. des 0 jusqu’à l’infini) dans la même base.
Un phénomène du même genre que celui observé dans cet Exercice se produit en base 10 pour tout
réel x dont tous les chiffres sont égaux à 9 à partir d’un certain rang (en allant vers la droite).
⊲ Exercice A5 . Trouver la 2ème écriture en base 10 du réel x = 53145, 9881 1041 879999 · · · .
Ce phénomène se retrouve dans une base b quelconque en remplaçant 9 par b − 1. D’où l’utilité de :
• • • Unicité de l’écriture (7) du réel x sous la contrainte :
Cette contrainte est admise dans l’écriture de tous les réels dans la suite.
Comme dans le cas des entiers, (9) ne lève pas l’ambiguı̈té dans le choix du signe pour x = 0.
Pour x 6= 0, par contre, la condition nécessaire (9) suffit à garantir l’existence et l’unicité de la
représentation (7) du réel x. En effet, le signe se traite comme dans le cas des entiers. Pour les chiffres
ck , examiner d’abord l’exercice suivant :
7
« ∃ ∞ » se lit « il existe une infinité de » .
GEN. ET ELEMENTS SUR LES BASES DU CALCUL SCIENTIFIQUE (ND/NG, 18 avril 2016) 7
Cet Exercice montre que pour établir l’existence et l’unicité des chiffres ck , on peut remplacer x par
| x |, et traiter séparément les parties entière et fractionnaire de | x |. Plus précisément, (11) entraı̂ne :
1. cn cn−1 · · · c0 est aussi l’écriture en base b de l’entier E ( | x | ). L’existence et l’unicité des chiffres
c0 , c1 , · · · , cn s’ensuivent alors d’après a), ainsi que la façon de les calculer ;
2. 0, c−1 c−2 c−3 · · · est l’écriture en base b du nombre réel u1 = pf ( | x | ) ∈ [ 0 , 1 [ . D’après (11), on a :
c−1 = E ( b · u1 ). Ayant obtenu c−1 , les chiffres suivants c−2 , c−3 , · · · se calculent en notant que :
Par conséquent, on peut ré-itérer la procédure pour obtenir successivement c−2 , c−3 , · · · . Ceci fournit
en même temps une méthode algorithmique pour calculer ces chiffres. Avec une restriction évidente
cependant : le processus est a priori infini.
⊲ Exercice A7 . Ecrire un algorithme qui trouve l’écriture d’un réel x dans une base arbitraire b
jusqu’au p ième chiffre après la virgule, où p est un entier > 0. On admettra qu’on dispose d’une fonction
Ent(x) qui calcule la partie entière d’un réel donné.
⊲ Exercice A8 . Trouver les écritures en base 7, 15, 67 et 100 du réel 78 541, 534 908|10 , respective-
ment jusquà 15, 12, 7 et 4 chiffres après la virgule.
• • • Exemple a2 . Considérons, en base b = 10, le réel x = 1000 π = 1000 × 3, 1415 9265 3579 89 · · · .
Alors toutes les égalités suivantes sont valables :
x = 3141, 5926 5357 989 · · · = 3, 1415 9265 3579 89 · · · × 10 3 = 3141 5926, 5357 989 · · · × 10 −4
= 0, 00000314 1592 6535 7989 · · · × 10 9 = 0, 3141 5926, 5357 989 · · · × 10 4 .
•
8 II - Nombres et opérations arithmétiques sur ordinateur
Ce sont des ecritures en virgule flottante de x en base 10 (par opposition au type d’écriture des
nombres réels examiné en b) qui est dit écriture en virgule fixe car celle-ci se trouve toujours entre
la partie entière et la partie fractionnaire de x). Pour le même nombre réel x, il y en a évidemment une
infinité de ce genre (en fait autant qu’il y a d’exposants possibles, i.e. d’entiers).
Il est alors intéressant d’imposer une contrainte dans le choix de ce type d’écriture pour un nombre réel
pour en garantir l’unicité, au moins pour x 6= 0. On privilégie ainsi, parmi toutes les écritures en
virgule flottante d’un même réel non nul x en base 10, celle pour laquelle n’apparaı̂t aucun
chiffre non nul à gauche de la virgule et le 1er chiffre à droite de la virgule est non nul. Cette
écriture particulière de x est appelée écriture en virgule flottante normalisée en base 10 du réel
x. Dans l’Exemple a2 , l’écriture en virgule flottante normalisée en base 10 du nombre 1000 π est la
dernière à apparaı̂tre.
Ces notions d’écriture en virgule flottante et en virgule flottante normalisée se généralisent de manière
évidente pour une base b quelconque en remplaçant les puissances de 10 par celles de b. Ainsi, l’écriture
en virgule flottante normalisée en base b d’un réel x non nul quelconque est de la forme :
x = ∗ m × bn , (12)
où :
1. ∗ ∈ { +, −} est le signe de x, noté signe (x) ;
2. m est un nombre réel dont l’écriture en base b est de la forme :
m = 0, c1 c2 c3 · · · , avec c1 6= 0 (condition de normalisation) ; (13)
m est appelé mantisse de x en base b et noté mant b (x). On notera alors que (13) entraı̂ne
l’encadrement suivant de m :
b−1 6 m < 1 ; (14)
3. n est un entier appelé exposant de x en base b, noté expo b (x), et caractérisé dans ZZ par la
propriété (conséquence immédiate de (12) et (14)) :
b n−1 6 | x | < b n . (15)
⊲ Exercice A10 . Montrer que, pour tout réel x 6= 0 et tout entier b > 1, il existe un unique entier
n ∈ ZZ vérifiant (15).
Il faut alors comprendre l’expression « sans erreur » ci-dessus comme étant valable tant qu’il n’y a pas
de débordement dans les calculs, i.e. résultat final ou intermédiaire 6∈ I. Ainsi, dans le Pascal standard,
si N = 32767 et M = 1, toute tentative de calculer N + M se soldera, de la part de la machine, par le
renvoi d’un message du type : overflow ou out of range, suivi d’un arrêt du programme.
b) Les réels-machine.
Pour un ordinateur travaillant en base b, l’ensemble des nombres réels qu’il peut manipuler est une
partie R de IR définie par :
r ∈ R ⇐⇒ r = ∗ M × b E , (16)
avec :
1. ∗ = signe (r) ∈ { +, −} ;
3. E = expo b (r) ∈ ZZ, avec emin 6 E 6 emax , où emin , emax ∈ ZZ tels que emin < 0 < emax ;
8
Dans ce Cours introductif sur le Calcul Scientifique, la façon dont les nombres (réels ou entiers) sont stockés en mémoire
d’ordinateur est intentionnellement simplifiée pour en faciliter la compréhension. Dans la réalité, les concepteurs d’ordinateurs
utilisent diverses astuces pour optimiser l’espace mémoire occupé par les nombres, notamment pour ce qui est du stockage
du signe, ainsi que de l’exposant pour les nombres réels. Les ouvrages spécialisés donnent davantage de précisions à ce sujet,
à l’instar du classique de Donald E. Knuth :
The Art of Computer Programming, Vol. 2, 3ème édition, 1997, Addison-Wesley.
Cependant, quelle que soit la représentation effectivement utilisée pour les entiers, elle reste exacte comme indiquée, de
même que l’arithmétique entière qui en découle.
10 II - Nombres et opérations arithmétiques sur ordinateur
R = R (b ; L, emin , emax ) .
Notons que R est un ensemble fini. C’est un système de représentation des nombres réels
en virgule flottante normalisée en base b sur L chiffres. L’arithmétique réelle de notre ordinateur
est ainsi dite arithmétique en virgule flottante normalisée en base b sur L chiffres. Par abus
de langage, on dit qu’il calcule en base b sur L chiffres significatifs. Remarquons alors que :
1. Du fait de la condition de normalisation c1 6= 0, on a : 0 6∈ R . Pour faire des calculs, ceci est
clairement ennuyeux. Alors on ajoute (d’autorité . . . ) 0 dans R en posant :
signe(0) = +, mant b (0) = 0, 0 · · · 0 (L zéro(s) après la virgule), expo b (0) = emin .
b
2. Par contre, 1 ∈ R , car : 1 = b 0 = b −1 × b 1 = 0, 1 × b 1 . Ainsi, 1 est l’élément de R donné par :
signe(1) = +, mant b (1) = 0, 10 · · · 0 (L − 1 zéro(s) après le 1), expo b (1) = 1.
⊲ Exercice A11 .
1◦ ) Quel est le cardinal de R ? Son plus grand élément ? Son plus petit élément > 0 ?
2◦ ) Quel est le successeur d’un élément > 0 de R dans l’ordre numérique naturel ?
3◦ ) Comment varie la distance entre 2 éléments > 0 consécutifs de R lorsqu’on va de 0 vers max R ?
⊲ Exercice A12 . (Convention du bit caché)
1◦ ) La majorité des ordinateurs calculent en base 2. Leur ensemble de réels-machine est donc de la forme
R = R (2 ; L, emin , emax ). Cependant, sur une telle machine, dans la plupart des cas, la mantisse
d’un réel-machine est stockée en mémoire sur L − 1 bits seulement.
Comment ceci est-il possible sans perte d’information sur la valeur exacte de cette mantisse ?
◦
2 ) On considère : L = 7, emin = − 100, emax = 100.
a) Trouver r, le représentant dans R du nombre qui s’écrit 1327 en base 10.
b) Suivant la convention du bit caché, comment r sera-t-il conservé en mémoire-machine ?
− max R
| | | | | | | | | | | | | | | | | | | |||||||||||||||||||||||||||||||||||||||| | | | | | | | | | | | | | | | | | | |
max R
→IR
0
Fig. 2 – Le système R de représentation des nombres réels sur ordinateur.
••• Mais Problème : Quand on rentre un réel x en machine (par exemple à travers l’instruction Read(x)
du langage Pascal), on tape x au clavier : il y a très peu de chances que x ∈ R . Concrètement, 3 cas
peuvent se présenter lorsque x 6∈ R :
1. Si | x | > max R , alors il y a overflow, i.e. débordement ;
2. Si 0 < | x | < min R∗+ , alors il y a underflow ;
⊲ Exercice A13 . Certains, dans ce cas, arrondissent systématiquement à zéro. En termes d’er-
reur d’approximation, ceci n’est, généralement, pas une bonne idée. Pourquoi ?
3. Si min R∗+ 6 | x | 6 max R∗+ , alors le mieux qu’on puisse faire est de remplacer x par l’élément
de R le plus proche de x, qu’on notera dans toute la suite x ou x R .
Dans ce dernier cas, on dit qu’on a arrondi x dans R au plus près9 .
9
D’autres modes d’arrondi que l’arrondi au plus près sont également rencontrés dans les ordinateurs. L’un des plus
populaires est ainsi l’arrondi par troncature. Celui-ci consiste à tronquer l’écriture de la mantisse en base b de tout réel x
après son L ième chiffre. Cependant, dans ce Cours, l’attention ne portera que sur l’arrondi au plus près.
GEN. ET ELEMENTS SUR LES BASES DU CALCUL SCIENTIFIQUE (ND/NG, 18 avril 2016) 11
• • • Propriétés :
1. x = x ⇐⇒ x ∈ R ;
⊲ Exercice A16 . (Arrondi d’un réel au plus près dans un système de réels-machine)
On souhaite arrondir un réel donné x > 0 au plus près dans R = R (b ; L, emin , emax ), sachant
que min R ∗+ 6 x < max R ∗+ . Considérons alors r = 0, c1 c2 · · · cL | b × b E , le réel-machine vérifiant :
r 6 x < succR (r). On pose : s = (r + succR (r))/2.
1◦ ) Avec ces hypothèses, l’écriture de x en virgule flottante normalisée en base b a quelle forme ?
NOTA : Préciser, notamment, les chiffres de la mantisse mant b (x) dont on est sûr de la valeur.
2◦ ) Utiliser l’ Exercice A9 pour trouver l’écriture de s en virgule flottante normalisée en base b
lorsque : a) b est paire = 2 q ; b) b est impaire = 2 q + 1.
3◦ ) Pour x 6= s, déduire, de 1◦ ) et 2◦ ),la règle précise pour arrondir x au plus près dans R , à partir
de l’écriture de x en virgule flottante normalisée en base b, et ce suivant la parité de b.
r2 + r3 = r2 + r3 = 10 70 + (−10 70 ) = 0 = 0 ;
Les propriétés négatives (P2.3), (P2.4), (P2.5), (P2.6) et (P2.7) sont particulièrement embêtantes.
En effet, elles ont comme conséquence le fait fâcheux suivant : sur ordinateur, le résultat d’un calcul
sur les nombres réels dépend de l’ordre dans lequel on exécute les opérations. Ainsi, deux
expressions mathématiques rigoureusement équivalentes peuvent produire des résultats ra-
dicalement différents lorsqu’elles sont évaluées par ordinateur. Dans cet ordre d’idées, on a la
notion importante d’epsilon-machine :
c) Notion d’epsilon-machine.
• • • Exemple a7 . Dans R (10 ; 5, −999, 999), calculons 1 + r1 et 1 + r2 , pour :
r1 = 0, 00004 et r2 = 0, 0000507 .
• • • Propriétés :
b−L+1
1. Pour L 6 −emin , on a : εR ≈ , avec une incertitude relative < b−L+1 /2.
2
⊲ Exercice A18 . Le mettre en évidence pour b = 10, puis pour b quelconque.
2. ∀ r ∈ R∗+ , r < εR =⇒ 1 + r = 1 .
h
• • • Conséquence : Soient r et h ∈ R∗ tels que < εR . Heuristiquement, on a :
r
h
r + h ≈ r 1 + = r ×1 = r.
r
lorsque : ∀ r ∈ R tel que f (r) existe et min R∗+ 6 | f (r) | 6 max R∗+ , f (r) = f (r) .
f (r) − f (r) b−L+1
On a alors : < . Mais ceci n’est pas toujours vrai pour toutes les fonctions
f (r) 2
présentes en machine. Cependant, généralement, cette erreur reste de l’ordre de b−L+1 /2.
14 III - Le problème des erreurs en Calcul Scientifique
x
e1 − x1
x
e1 −−−−→ erreur relative associée : εxe1 = (inconnue),
x1
x
e −x
x
e2 −−−−→ erreur relative associée : εxe2 = 2 2 (inconnue),
x2
• • • Mais alors, inquiétude légitime : Quel est l’impact des erreurs sur les données d’un algorithme
numérique pour les résultats qui en sont attendus (et ce quand bien même aucun autre type d’erreur
n’entrerait en jeu ni dans son élaboration, ni pendant son exécution) ? Autrement dit : de combien les
résultats attendus de l’algorithme ont-ils été déviés de leur vraie valeur du fait de ces erreurs sur les
GEN. ET ELEMENTS SUR LES BASES DU CALCUL SCIENTIFIQUE (ND/NG, 18 avril 2016) 15
données ? La question essentielle étant la suivante : a-t-on la garantie que si les incertitudes relatives
sur les données sont « petites » , il en ira de même de celles sur les résultats ?
Si la réponse à cette dernière question était « OUI » , le problème des erreurs de données serait
négligeable. Malheureusement, c’est loin d’être le cas. On parle ainsi, suivant leur plus ou moins grande
sensibilité aux erreurs sur leurs données, de problèmes numériques mal conditionnés et de problèmes
numériques bien conditionnés. Avec, évidemment, une large plage de cas intermédiaires.
• • • Définition : Problème de calcul numérique mal conditionné.
Problème dans lequel de petites erreurs sur les données (ou sur certaines d’entre elles) sont susceptibles
d’entraı̂ner de grandes erreurs sur le résultat, même sans l’intervention d’aucun autre type d’erreur .
Les problèmes mal conditionnés sont les problèmes de Calcul Scientifique les plus difficiles à traiter
par ordinateur, car la moindre erreur se retrouve très amplifiée au niveau du résultat.
• • • Définition : Problème de calcul numérique bien conditionné.
Problème dans lequel, en l’absence de tout autre type d’erreur, l’incertitude relative sur le résultat reste,
au pire, du même ordre de grandeur que l’incertitude relative maximale sur les données.
• • • Situations courantes :
1. Opérations arithmétiques de base sur des données approchées.
Soient 2 quantités inconnues (e.g. grandeurs physiques) x, y ∈ IR∗ dont on a obtenu des approxi-
mations respectives x
e et ye (e.g. par des mesures physiques ou des calculs).
On souhaite en déduire des approximations respectives pour x + y, x − y, x × y et x / y.
Le mieux qu’on puisse faire est, a priori, de calculer respectivement x e + ye, x
e − ye, x
e × ye et x
e / ye.
• Mais alors, problème : Si εx e et εye sont les erreurs relatives respectives de x e et ye dans
l’approximation de x et y, quelle erreur relative s’en déduit dans l’approximation de x + y par
x
e + ye ? Même question pour x − y et x e − ye, pour x × y et x e × ye, pour x / y et x e / ye.
En particulier, pour chacune de ces opérations arithmétiques de base, peut-on toujours garantir
que lorsque les erreurs sur les données sont « petites » , il en va de même de celle sur le résultat ?
⊲ Exercice A20 . Trouver des réponses appropriées à ces différentes questions.
⊲ Exercice A21 . (Différence de 2 quantités voisines approchées).
1◦ ) Soient x = 10 005, 48 241 et x = 9 997, 250 172. Calculer x − y (en valeur exacte).
2◦ ) a) Arrondir x et y dans R (10 ; 5, −999, 999), respectivement en x
e et ye.
b) En déduire le calcul de x − y dans ce système de représentation des nombres réels.
c) Comparer l’incertitude relative de ce calcul avec les incertitudes relatives sur x
e et ye.
d) Utiliser l’Exercice précédent pour expliquer ce qui s’est passé.
e) Au fait, combien de chiffres significatifs, au plus, possède x
e − ye ?
⊲ Exercice A22 . On souhaite calculer la somme S = x1 + · · · + xn , où x1 , · · · , xn sont des
réels > 0. Montrer que, si ces réels sont entâchés d’erreurs de données, l’incertitude relative qui
s’ensuit sur la valeur de S ne peut pas excéder la plus grande des incertitudes relatives sur les xi .
2. Evaluation numérique d’une fonction à une variable y = f (x) en un point x = x0 .
Donnée théorique : x0 −−−−→ valeur exacte inconnue, ou alors arrondie en machine,
=⇒ on ne peut pas calculer la vraie valeur requise y0 = f (x0 ) ;
=⇒ Donnée effective : x e0 −−−−→ connue, mais approximation de x0 ,
=⇒ On calcule plutôt ye0 = f ( x e0 ) qu’on va fournir comme approximation de y0 .
x
e0 − x0
Ainsi, on a une erreur relative sur la donnée : εxe0 = .
x0
ye − y0
=⇒ erreur relative sur le résultat cherché : εye = 0 .
0 y0
Le problème du calcul de y0 = f (x0 ) sera bien conditioné si εye0 6 25 εxe0 (Nota : le facteur
25 ici est purement indicatif et n’est pas universel), et mal conditionné si εye0 ≫ εxe0 .
16 III - Le problème des erreurs en Calcul Scientifique
εye0
d’où : εxe0 = 10 −4 et εye0 ≃ 1, 005 × 10 −2 =⇒ ≃ 100, 5 .
•
εxe0
⊲ Exercice A23 . Par un développement de Taylor approprié, montrer qu’il était prévisible que
ce rapport des erreurs relatives serait proche de 100.
⊲ Exercice A24 . (Généralisation)
1◦ ) Trouver une approximation de εye en fonction de εxe0 quand y0 6= 0 et y0′ = f ′ (x0 ) 6= 0.
0
2◦ ) Qu’en est-il lorsque y0 6= 0, mais y0′ = f ′ (x0 ) = 0 et y0′′ = f ′′ (x0 ) 6= 0 ?
⊲ Exercice A25 . (Application)
1◦ ) Trouver f : IR −→ IR telle que f (1) = 1 et, ∀ x > 0, x 6= 1, si x est approché par x
e
alors ye = f (e
x) est une approximation de y = f (x) vérifiant : ε ye ≈ (ln x) · ε xe . (18)
2◦ ) Quelle relation doit remplacer (18) en x = 1 ?
Ceci pose, a priori, un problème pour les modèles mathématiques dans lesquels l’information à ma-
nipuler et/ou à déterminer est continue, ou discrète mais infinie. Pour le traitement par ordinateur de
ce type de modèle, s’impose la nécessité d’une étape analytique préliminaire appelée discrétisation
ou troncature (selon qu’on part d’un modèle initial continu, ou d’un modèle discret, mais infini). Elle
vise à transformer le problème à résoudre en un problème approché dans lequel « tout est
fini » : nombre de données à rentrer, nombre d’inconnues à calculer, nombre d’équations à
manipuler, quantité de calculs à faire, nombre de résultats à sortir. ⊳
• • • Exemples.
1. Supposons f (x0 ), f ′ (x0 ) connus et on veut la valeur prise par la fonction f en un point x1 donné
proche de x0 , i.e. A = f (x1 ). On a alors : x1 « proche » de x0 =⇒ x1 = x0 + h, avec h
« petit » .
Or, d’après la formule de Taylor d’ordre 1, on a, si f est suffisamment dérivable :
f (x1 ) = f (x0 + h) = f (x0 ) + h f ′ (x0 ) + O(h2 ) .
Pour h « petit » , on peut négliger le terme en O(h2 ) pour en déduire que : f (x1 ) ≈ f (x0 ) + h f ′ (x0 ) .
• D’où l’approximation de A : A e = f (x0 ) + h f ′ (x0 ) .
h2 f ′′ (x0 )
⊲ Exercice A29 . Montrer que : εAe ≈ − .
2 f (x0 )
⊲ Exercice A30 . Pour une fonction f suffisamment dérivable au voisinage de x0 = 4 , on a
obtenu les valeurs : f (x0 ) = − 2114, f ′ (x0 ) = 19, f ′′ (x0 ) = 35 , f ′′′ (x0 ) = 21.
1◦ ) Exploiter ces informations au mieux pour en déduire une approximation de f (π).
2◦ ) On a également obtenu : f (4) (x0 ) = 477. Donner alors une appréciation du degré de crédibilité
de l’approximation effectuée ci-dessus.
2. Calcul numérique de A = lim un (avec un calculable, ∀ n).
On fixe N « grand » , et on approche A par A e = uN .
=⇒ erreur absolue commise : A e − A = uN − A.
• Justification de l’approximation : Cette erreur −→ 0 quand N −→ +∞ . Donc, pour N
choisi suffisamment grand, on peut, a priori, la rendre aussi petite qu’on pourrait le souhaiter.
Cette approche est notamment celle utilisée pour calculer numériquement A, solution d’une
équation à une inconnue : les termes successifs de la suite (un ) sont alors calculés de manière à être
des approximations de plus en plus meilleures de A.
+∞
X X N
3. Calcul numérique de A = un , approchée par SN = un , pour N fixé « grand » .
n=0 n=0
donnant le produit des racines de (19). Montrer que, par cette approche, on a : εx e1 ≈ − ε /2.
• • • Commentaire.
On retiendra de cette Exercice que, pour résoudre numériquement une équation de degré 2, il faut :
1. calculer d’abord la racine la plus grande en valeur absolue (ou en module, en cas d’équation à
coefficients complexes) ;
2. ensuite, en déduire l’autre racine en utilisant la formule du produit des 2 racines.
⊲ Exercice A34 . L’objectif ici est d’expliquer l’origine des phénomènes observés dans l’expérience
numérique de l’Exercice précédent. Pour ce faire, on remplace l’exponentielle par une fonction f
quelconque, et le réel 5 par x0 arbitraire. On pose : d0 = f ′ (x0 ).
1◦ ) a) Donner la justification théorique de la procédure d’approximation de d0 par d(h) pour h « petit » .
b) Montrer que si h est « suffisamment » petit et f suffisamment dérivable, alors l’erreur relative de
f ′′ (x0 )
discrétisation dans l’approximation de d0 par d(h), soit εTd(h) , vérifie : εTd(h) ≈ h · .
2 f ′ (x0 )
2◦ ) Mais, concrètement, l’approximation d(h) de d0 sera calculée par ordinateur.
a) Montrer que si h est trop « petit » , il y aura un sérieux problème dans le calcul en machine de
d(h).
b) Mais même si ce problème n’existait pas, la fonction f sera évaluée en machine (nécessairement)
avec une certaine erreur, et ce en tout point. On note alors ε1 et ε2 , les erreurs relatives respectives
dans le calcul machine de f (x0 ) et f (x0 + h). Montrer que si h est pris « trop » petit, et même
si les autres opérations dans le calcul en machine de d(h) sont sans erreur, il s’ensuivra une erreur
f (x0 ) ε2 − ε1
relative sur ce calcul en machine de d(h) vérifiant : εM ≈ ′ · .
d(h) f (x0 ) h
3◦ ) L’approximation finale de f ′ (x0 ) sera donc d(h) . Pour h « petit » , montrer, en utilisant 1◦ ) b)
B
et 2◦ ) b), que l’erreur relative associée vérifie : ε d(h) ≈ Ah + , avec A, B indépendants de
h
h.
B
4◦ ) Pour A et B ∈ IR∗ , esquisser l’allure, dans un repère, du graphe sur IR∗ de ϕ(h) = Ah + .
h
5◦ ) Expliquer alors les phénomènes observés dans l’expérience numérique de l’ Exercice A33 -1◦ ).
f (5 + h) − f (5 − h)
6◦ ) Adapter toute l’étude précédente lorsqu’on prend plutôt d(h) = .
2h
f (5 − h) − 2f (5) + f (5 + h)
7◦ ) Faire de même en remplaçant f ′ (5) par f ′′ (5), et avec d(h) = .
h2
⊲ Exercice A35 . Fondamentalement, les phénomènes numériques observés dans l’ Exercice A33
sont liés à celui mis en évidence dans l’ Exercice A21 . Comment ?
GEN. ET ELEMENTS SUR LES BASES DU CALCUL SCIENTIFIQUE (ND/NG, 18 avril 2016) 21
ANNEXES :
que parfaitement équivalents du point de vue de la théorie mathématique, peuvent produire, partant des
mêmes données, 2 résultats radicalement différents. Et, de ce fait, l’un au moins de ces 2 résultats est faux
(voire les 2 sont grossièrement inexacts).
Ceci fait que la programmation soignée en CS consiste à s’assurer non seulement de la validité
théorique, pour la résolution du problème posé, de l’algorithme proposé, mais également de sa validité
informatique. Il peut d’ailleurs arriver que cette dernière dépende fortement de la machine utilisée : ce
sont les problèmes de portabilité des programmes que nous n’aborderons pas ici.
voire des millions d’opérations de ce type, et manipuler des structures aussi dévoreuses de mémoire que
les matrices.
Ceci fait qu’en CS, probablement plus que dans d’autres domaines de l’activité informatique, il soit
nécessaire, dans la confection des programmes, de prendre en considération les problèmes de minimisation
de l’encombrement-mémoire (aussi bien du programme que de son exécution) et du temps d’exécution.
Ainsi, à validités informatiques équivalentes, entre 2 programmes résolvant le même problème, il faut choi-
sir celui dont l’exécution occupe en moyenne le moins de temps-machine. Ou alors, si on a un problème
de ressources informatiques, choisir celui qui réalise le meilleur compromis entre l’espace en mémoire que
mobilise son exécution et la durée de celle-ci. Et « compromis » est bien le mot qui convient, car mi-
nimiser l’encombrement-mémoire des variables d’un programme entraı̂ne, le plus souvent, l’allongement
de son temps d’exécution au travers du rajout des instructions d’accès au contenu des structures com-
pactées en mémoire dans des variables informatiques plus simples que la structure mathématique naturelle
correspondante.
Minimiser l’encombrement-mémoire d’un programme revient à éviter d’immobiliser inutilement, pen-
dant son exécution, des registres de la mémoire au travers du stockage permanent de variables peu ou pas
du tout utilisées, ou dont le contenu est constant et connu d’avance et, par conséquent, n’a pas besoin
d’être nécessairement stocké.
Enfin, pour ce qui est du temps d’exécution d’un programme de CS, on retiendra qu’il dépend es-
sentiellement, grosso modo, du nombre d’opérations sur les réels (+, −, ×, ÷, évaluations de fonctions
numériques). Autant que faire se peut donc, essayer de minimiser ce nombre.