Vous êtes sur la page 1sur 24

GENERALITES ET ELEMENTS

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.

b) Exemples de modèles mathématiques usuels pour résoudre des problèmes concrets :


1. Une fonction à une ou plusieurs variables ; 5. Une équation différentielle ordinaire ;
2. Une équation à une inconnue réelle ; 6. Une équation aux dérivées partielles ;
3. Un système d’équations linéaires ; 7. Une équation polynômiale ;
4. La valeur d’une intégrale ; 8. La somme d’une série convergente.

c) Schéma général du traitement d’un problème en Analyse Numérique : Cf. Figure 1.


Quelques explications utiles sur la Figure 1 :
– « Discrétisation d’un problème » signifie sa transformation en un problème l’approchant
et dans lequel « tout est fini » : nombre de données, nombre d’inconnues, nombre
d’équations, quantité de calculs à faire, nombre de résultats à sortir . Pour certains
problèmes numériques à traiter par ordinateur, ceci est une étape nécessaire, Cf. III - 2◦ ) b).
– « Algorithmisation d’une solution d’un problème » signifie la traduction de cette solution
en un algorithme, i.e. une suite finie et ordonnée d’instructions la mettant en œuvre
en temps fini, partant d’un ensemble fini de données pour fournir un ensemble fini de
résultats.

d) Pré-requis pour ce Cours.


1. Connaissances mathématiques générales du Niveau I :
(a) Fonctions d’une variable réelle (continuité, dérivabilité et conséquences) ;
(b) Intégrales définies de telles fonctions sur un segment fermé et borné [ a , b ] de IR ;
(c) Développement de Taylor d’ordre quelconque pour de telles fonctions ;

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 ←

Fig. 1 – Schéma général du traitement d’un problème en Analyse Numérique.


NOTA. Analyse Numérique + Calcul Scientifique = Partie encadrée par un rectangle avec des tirets.

(d) Développement de Taylor d’ordre 1 pour une fonction à plusieurs variables :

n
X ∂f  
f (X0 + h) = f (X0 ) + (X0 ) · hi + O k h k2 ,
∂xi
i=1

où X0 = (x1 , · · · , xn ) et h = (h1 , · · · , hn ) ∈ IR n , k h k2 = h21 + h22 + · · · + h2n .


(e) Algèbre linéaire et Calcul matriciel ;
2. Algorithmique de base et Programmation Informatique.

2◦ ) Le langage de l’Analyse Numérique et du Calcul Scientifique.


a) Objets mathématiques : De l’abstraction au concret.
En fait, l’Analyse Numérique et le Calcul Scientifique manipulent les mêmes objets que l’Analyse
Mathématique ou l’Algèbre classiques. La différence essentielle réside dans les perspectives respectives
d’utilisation de ces objets et le langage qui en découle. L’Analyse Mathématique et l’Algèbre classiques se
contentent volontiers de l’aspect abstrait des objets mathématiques. Alors que l’Analyse Numérique et le
Calcul Scientifique sont nécessairement amenés, à un moment ou à un autre, à s’intéresser à la traduction
pratique de ces objets pour l’utilisateur dont le problème concret doit être résolu et qui n’est pas au fait
des subtilités de l’axiomatique mathématique contemporaine.
GEN. ET ELEMENTS SUR LES BASES DU CALCUL SCIENTIFIQUE (ND/NG, 18 avril 2016) 3

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 » .

b) La notion de précision : Erreur relative et Erreur absolue.


En remplaçant ci-dessus la valeur exacte de I qui est π/4 par 0, 785, on a fait une approximation
numérique. La nécessité de ce genre de manœuvre étant systématique en Analyse Numérique, cette
discipline peut être aussi appelée Science de l’approximation numérique. Or, qui dit approximation
dit automatiquement perte d’information par rapport à la vraie valeur , ou information partielle
sur celle-ci. L’approximation sera d’autant plus crédible pour représenter cette vraie valeur inconnue que
la perte d’information correspondante pourra être considérée comme « raisonnablement » négligeable.
Apparaı̂t alors la nécessité de pouvoir mesurer la perte d’information subie lors de la représentation
d’une quantité numérique inconnue α par une (supposée) approximation α e. Ceci amène à introduire, en
Analyse Numérique et en Calcul Scientifique, la notion importante de précision :
− précision sur les valeurs numériques manipulées ;
− précision sur les calculs numériques effectués sur ces valeurs.
Il s’agit de pouvoir obtenir une idée aussi bonne que possible de l’erreur rattachée à une approximation
numérique. Soit alors αe ∈ IR, une approximation d’une quantité numérique inconnue α. Deux mesures de
l’erreur dans cette approximation de α par α e sont couramment utilisées :

• erreur absolue : δ αe e−α ;


=α • erreur relative :
δ αe .
ε αe =
α
Cependant, il est important de garder à l’esprit qu’on ne peut jamais connaı̂tre la valeur exacte de
l’une de ces 2 mesures de l’erreur sur une quantité numérique inconnue, car ceci reviendrait à connaı̂tre
la valeur exacte de la quantité elle-même. Ce qu’on cherche à faire, dans la pratique, c’est :
O
e ∼ 10 , ce qu’on lira
− soit à en déterminer l’ordre de grandeur , par exemple en écrivant : ε α −4 1

« εα −4 » , et qui signifiera 1 · 10 −4 < ε −4


e de l’ordre de 10 10 αe < 10 · 10 .
− soit à en trouver une majoration de la valeur absolue, par exemple : ε α −7
e < 10 .
On notera que la valeur absolue d’une erreur numérique est, en général, plus importante que l’erreur
en elle-même. Elle est appelée « incertitude » . On a ainsi l’incertitude absolue, l’incertitude relative.
Quant à ce qui est du degré d’utilité des 2 types de mesure de l’erreur numérique, la mesure d’erreur
la plus crédible est l’erreur relative. On peut s’en convaincre sur des exemples faciles à construire.
Ainsi, faire une erreur absolue de ±2km sur la distance Douala-Yaoundé est relativement peu préjudiciable :
ceci pourra, éventuellement, juste affecter le point de départ à Douala et/ou celui d’arrivée à Yaoundé. Par
contre, se tromper de ±2 km sur la distance entre l’Ecole Polytechnique de Yaoundé et le Lycée Leclerc de
la même ville produira une mesure grossièrement aberrante. Cette différence intuitive de perception qu’on
peut avoir des degrés de crédibilité respectifs de ces 2 mesures de distance est quantifiée justement par la
comparaison des erreurs relatives associées. Dans un cas, on commet une incertitude relative < 0.75 % (la
distance entre les 2 villes valant sensiblement 280km) ; alors que, dans l’autre, si on estime la vraie distance
à 1, 5 km, l’erreur relative vaut −133 % ou 133 %, ce qui traduit deux mesures de distance totalement
aberrantes (la 1ère étant même négative . . . ).
Plus fondamentalement, la notion de « petitesse » ou de « grandeur » d’une quantité numérique
est essentiellement relative : un nombre n’est petit ou grand que comparé à un autre. La plus
1
Il n’y a pas de définition universellement admise de la notion d’ordre de grandeur d’une quantité numérique, ni de notation
correspondante. Celles, relativement raisonnables, introduites ici le sont pour les besoins de ce Cours.
4 I - Généralité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)

c) Traduire « en pratique » les résultats mathématiques théoriques.


Pour comprendre ce qu’on fait en Analyse Numérique et en Calcul Scientifique, et pourquoi on le fait,
il est souhaitable de savoir lire, d’un point de vue pratique, les résultats mathématiques théoriques, autant
que possible. Ce n’est pas toujours évident, mais il faut s’entraı̂ner à le faire.
• • • Exemple a1 .
1. « un −−−−→ λ »
n −→ +∞
⇐⇒ (∀ ε > 0, ∃ N ε tel que ∀ n ∈ IN, n > N ε =⇒ | un − λ | 6 ε ),
i.e. pour tout ε > 0 fixé, il existe un rang à partir duquel tous les termes de la suite (un ) fournissent
une approximation de λ avec une incertitude absolue 6 ε .
2. Pour f, g : [ a , b ] −→ IR, posons : k f − g k∞ = sup | f (x) − g(x) | . Alors, ∀ ε > 0, on a :
x∈[a,b]

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

II - Comment les ordinateurs calculent.


Pour une utilisation efficace de l’ordinateur dans les calculs numériques, il est très utile d’avoir quelques
idées sur la manière dont les nombres (entiers et, surtout, réels) sont représentés et manipulés en mémoire
d’ordinateur. Avant de passer à l’examen de cette représentation, il est nécessaire de faire quelques rappels
sur la manière dont nous écrivons quotidiennement les nombres, et de donner une idée très schématique
de la mémoire d’un ordinateur.
1◦ ) Généralités.
• • • Définition 1 : Nombre.
C’est l’outil inventé dans les diverses civilisations pour compter les objets et mesurer les grandeurs.
• • • Définition 2 : Système de numération.
C’est toute manière de représenter les nombres.
• • • Définition 3 : Opération arithmétique.
C’est tout procédé systématique pour combiner des nombres en vue d’en obtenir un autre.
• • • Définition 4 : Arithmétique.
C’est l’ensemble des opérations arithmétiques qu’on peut faire dans un système de numération.
2◦ ) Représentation contemporaine des nombres.
On utilise le système dit des chiffres arabes. Celui-ci consiste à se fixer un entier b > 1, appelé alors
base de numération4 , et on représente tous les nombres au moyen des b entiers 0, 1, · · · , b − 1 (dits
chiffres en base b) à travers les conventions d’écriture suivantes :

a) Pour un entier N ∈ ZZ, on l’écrit en base b sous la forme :

N = ∗ cn cn−1 · · · c1 c0 , (ou5 ∗ cn cn−1 · · · c1 c0 b , ou ∗cn cn−1 · · · c1 c0 | b ), (2)


où :
∗ ∈ { +, −} est le signe de N , n ∈ IN et c0 , c1 , · · · , cn ∈ [ 0 (1) b − 1 ].6


• • • 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

| N | = cn cn−1 · · · c1 c0 = cn b n + cn−1 b n−1 + · · · c1 b + c0 . (6)

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 .

b) Pour un réel x ∈ IR, on l’écrit en base b sous la forme :

x = ∗ cn cn−1 · · · c0 , c−1 c−2 c−3 · · · (7)

(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 :

(cn = 0 =⇒ n = 0) et (∃ ∞ k tels que ck < b − 1 ) .7 (9)

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

⊲ Exercice A6 . (Partie entière et partie fractionnaire d’un réel > 0)


1◦ ) Soit u ∈ IR+ . Montrer qu’il existe un unique couple (N, r) ∈ IN × [ 0 , 1 [ tel que u = N + r.
Nota : L’entier N et le réel r sont appelés, respectivement, partie entière et partie fractionnaire du
nombre réel u, notées E ( u ) et pf ( u ). Ils sont caractérisés respectivement par les propriétés :
N 6 u < N +1 et r=u−N. (10)

2◦ ) Si (7)-(8)-(9) est réalisé, montrer que, nécessairement, on a :

E ( | x | ) = cn cn−1 · · · c0 , pf ( | x | ) = 0, c−1 c−2 c−3 · · · , c−1 = E ( b · pf ( | x | ) ) . (11)

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 :

Pour u2 = b · u1 − c−1 , on a : u2 = 0, c−2 c−3 c−4 · · · .

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.

⊲ Exercice A9 . (L’arrondi du réel fractionnaire 1/2 dans une base b)


L’écriture d’un réel x dans une base b est dite finie lorsque tous les chiffres de sa partie fractionnaire
dans cette base sont nuls à partir d’un certain rang.
1◦ ) Montrer que l’écriture de x dans la base b est finie si et seulement si x est une fraction rationnelle
de la forme : x = ± N/bm , où N, m ∈ IN.
2◦ ) a) Montrer que l’écriture de 1/2 dans une base b impaire est toujours infinie.
NOTA : On pourra raisonner par l’absurde.
b) Confirmation : On suppose que b = 2 q + 1, avec q ∈ IN ∗ .
Utiliser la méthode vue dans l’ Exercice A7 pour trouver l’écriture en base b de 1/2.
3◦ ) Trouver, de même, l’écriture de 1/2 dans une base b paire.

c) Ecriture en virgule flottante des nombres réels.


En fait, la représentation des nombres réels en mémoire d’ordinateur ne s’appuie pas sur l’écriture
« naturelle » des nombres réels telle que vue en b) ci-dessus. Elle utilise plutôt la représentation dite « en
virgule flottante » , ou « notation scientifique » , ou « notation en exposant » .

• • • 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).

d) Bases de numération usuelles.


• • • Pour nous : base usuelle = 10.
• • • Pour l’ordinateur : en interne, base usuelle = 2 (pour la plupart des machines).
=⇒ Pour la communication homme-machine, nécessité (pour la machine) de faire des conversions
des écritures des nombres entre la base 2 et la base 10, dans les 2 sens.
3◦ ) Schématisation de la mémoire d’un ordinateur.
La mémoire d’un ordinateur peut se concevoir schématiquement comme une suite finie de registres
(appelés bits) pouvant contenir une information à 2 états possibles (0 ou 1) :
0 1 1 1 0 1 1 0 0 0 0 1 0 1 0 1 1 ··· ··· ··· 1 0 0 0 1
Chaque information stockée par l’ordinateur va occuper un certain nombre de ces registres (a priori
consécutifs, mais pas nécessairement).
Ces registres sont généralement considérés par paquets de 8 appelés octets (i.e. 1 octet = 8 bits).
Pour la quantification de l’information en mémoire d’ordinateur, on utilise aussi :
1. le kiloOctet, noté ko, et qui vaut, en réalité, 1024 octets ;
2. le MegaOctet, noté Mo, qui vaut 1024 ko ;
3. le GigaOctet, noté Go, qui vaut 1024 Mo ;
4. et nous sommes en course pour utiliser routinièrement (peut-être avec la prochaine génération d’or-
dinateurs) le TeraOctet, noté To, et qui vaut 1024 Go.
Le nombre 1024 est en fait une puissance de la base 2 (en l’occurrence 210 ) proche de 103 = 1000.
Pour un ordinateur calculant dans une base b 6= 2 ( b = 16 étant une valeur assez courante), il faut
visualiser sa mémoire comme une suite finie de registres à b états possibles (i.e. 0 ou 1 ou · · · ou b − 1).
GEN. ET ELEMENTS SUR LES BASES DU CALCUL SCIENTIFIQUE (ND/NG, 18 avril 2016) 9

4◦ ) Représentation des entiers sur ordinateur.


• • • R.A.S.8 : Un entier est stocké en mémoire d’ordinateur exactement comme il est écrit en base 2.
=⇒ représentation exacte =⇒ pas de perte d’information.
Et les opérations arithmétiques élémentaires sur les entiers (i.e. +, −, × et division euclidienne) se font
comme usuellement, i.e. sans erreur. Il en va alors de même de toute combinaison de ces opérations.
=⇒ L’arithmétique entière par ordinateur est une arithmétique exacte.
••• Seule restriction : L’ensemble I des entiers qu’un ordinateur peut manipuler est nécessairement
fini. En général, on a : I = [ −Nmax (1) Nmax ] ⊂ ZZ .
• • • Langage Pascal standard −−−−→ Nmax = 32 767 = 215 − 1 .

• • • Exemple a3 . En Pascal standard, on a : Nmax = 32 767 = 215 − 1 .

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.

5◦ ) Représentation des nombres réels sur ordinateur.


a) Introduction.
D’après ce qui a été rappelé en 2◦ ) b), écrit dans une base b fixée, un réel x est, a priori, une suite
infinie de chiffres ; alors que, comme il a été vu en 3◦ ), la mémoire d’un ordinateur est une suite finie de
registres pouvant contenir une information à 2 états possibles (0 ou 1).
=⇒ pour stocker un réel en mémoire, nécessité de tronquer son écriture en base 2 ;
=⇒ il faut couper quelque part ;
=⇒ on ne va garder en mémoire qu’une représentation tronquée de x,
donc une approximation x e de x,
=⇒ perte d’information sur x.
Et comme ceci est susceptible de se passer pour presque tous les nombres réels que doit manipuler
l’ordinateur, on peut dire que, par essence (pour l’état actuel de la technologie), l’arithmétique
réelle sur ordinateur est, nécessairement, approchée.
Tout ceci reste évidemment valable même si l’ordinateur travaille dans une autre base que la base 2.

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) ∈ { +, −} ;

2. M = mant b (r) = 0, c1 c2 · · · cL , où c1 , · · · , cL ∈ [ 0 (1) b − 1 ] avec c1 6= 0 ;

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

=⇒ en mémoire, on a : r = ⋆ ep · · · e0 ∗ c1 c2 ··· cL , où E = ⋆ ep · · · e1 e0 b .


←−−−− E −−−−→
Les 4 entiers b, L, emin , emax sont indépendants de r et caractérisent l’ensemble R des réels-machine
(i.e. les réels connus par notre ordinateur ou notre langage de programmation). Nota :

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 ?

c) Représentation d’un réel quelconque : Notion d’arrondi.


L’ensemble R des réels-machine est une partie finie de l’ensemble IR des nombres réels, qu’on peut
schématiser par une règle graduée bornée posée sur l’axe réel et centrée en 0 (Voir Figure 2).

− 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 ;

2. L’application x 7−→ x est croissante sur IR ;

⊲ Exercice A14 . Démontrer cette propriété.


x −x b−L+1
∀ x ∈ IR / min R∗+ 6 | x | 6 max R∗+ ,
−L+1
3. < , i.e. | ε| < b 2 .
x 2

⊲ Exercice A15 . Démontrer cette propriété.


Pour ce faire, on pourra partir du résultat de la question 2◦ ) de l’ Exercice A11 .
Cependant, dans la mesure où on ne peut jamais connaı̂tre une erreur d’arondi en valeur exacte, en
O b−L+1
pratique toujours considérer que : ε x ∼ .
2

Plus généralement, nous noterons A , le résultat de l’évaluation numérique en machine de toute


grandeur ou expression numérique A. Une telle grandeur ou expression évaluée sur notre machine avec
une incertitude relative < b−L+1 /2 sera dite calculée avec la précision-machine. Sur une telle machine,
on ne pourra jamais garantir une meilleure précision a priori.

⊲ 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.

6◦ ) Représentation des opérations numériques sur ordinateur.


a) Cas des opérations arithmétiques élémentaires (+, −, ×, ÷).
• • • Problème : Etant donné que notre machine ne connaı̂t que les réels ∈ R , partie finie de IR, le
résultat de toute opération qu’elle effectuera sur ces réels, elle devra pouvoir le « cadrer » dans R . En
effet, pour pouvoir effectuer des calculs sur les nombres réels sur ordinateur, il faut représenter toutes les
opérations dans IR par des opérations dans R .
Or, il est facile de se rendre compte que R n’est stable ni par +, ni par −, ni par ×, et que R∗ non
plus n’est pas stable par ÷. Par exemple : max R + 1 6∈ R .
Ainsi, si on note ∗, l’une quelconque de ces 4 opérations arithmétiques, il n’est nullement évident que,
pour r1 et r2 arbitrairement pris dans R , r1 ∗ r2 soit également un élément de R . A titre illustratif :
⊲ Exercice A17 . Expliquer pourquoi r1 × r2 ne sera presque jamais dans R .
=⇒ Conséquence : Pour le calcul de r1 ∗ r2 , le mieux que la machine puisse faire est de fournir, comme
résultat approché, l’élément de R le plus proche de la vraie valeur, i.e. r1 ∗ r2 .
L’opération dans IR, ∗, sera donc représentée dans R par une opération ∗ définie par :

∀ r1 , r2 ∈ R tels que r1 ∗ r2 existe, r1 ∗ r2 = r1 ∗ r2 . (17)

Ceci ne sera évidemment possible que si l’arrondissement de r1 ∗ r2 ne produit pas un débordement.


(r1 ∗ r2 ) − (r1 ∗ r2 ) b−L+1
• • • Conséquence : < (si r1 ∗ r2 6= 0 ).
(r1 ∗ r2 ) 2
12 II - Nombres et opérations arithmétiques sur ordinateur

Ou : r1 ∗ r2 = ( r1 ∗ r2 ) (1 + u), avec | u | < b−L+1 /2 .


Comme opération dans R , ∗ est appelée opération-machine. On a ainsi 4 opérations-machine
élémentaires, + , − , × et ÷ , représentant dans R les 4 opérations arithmétiques de base. Mais
alors une inquiétude légitime : que deviennent les propriétés usuelles bien connues (et fort utiles) de ces 4
opérations arithmétiques dans ce passage approché en machine ?

b) Opérations-machine et Propriétés algébriques usuelles.


En fait, il y a lieu de faire très attention : certaines propriétés (malheureusement y compris parmi les
plus classiques et les plus importantes) sont perdues, d’autres pas.
• • • Propriétés algébriques préservées : (IN.B. Les démontrer)
(P1.1) : + et × sont commutatives dans R ;
(P1.2) : 0 est élément neutre de + dans R ;
(P1.3) : 1 est élément neutre de × dans R ;
(P1.4) : ∀ r ∈ R , −r est l’opposé de r pour + , i.e. r + (−r) = 0 ;
(P1.5) : 6 est compatible avec + dans R .

• • • Propriétés algébriques perdues :


– (P2.1) : + , − , × ne sont pas des opérations internes dans R ;
• • • Exemple a4 . max R + max R = 2 max R = overflow 6∈ R ;
• • • Exemple a5 . max R × max R = (max R )2 = overflow 6∈ R ;
ce dernier cas se justifiant par le fait que, dans la pratique, on a toujours : max R ≫ 1 ;
– (P2.2) : ÷ n’est pas une opération interne dans R∗ ;
– (P2.3) : + et × ne sont pas associatives ;
• • • Exemple a6 . Plaçons nous dans10 R (10 ; 5, −999, 999), et évaluons les 2 expressions :
A1 = (938 + 10 70 ) + (−10 70 ) et A2 = 938 + (10 70 + (−10 70 )) .
Remarquons d’abord qu’on a : r1 = 938 = 0, 93800 × 10 3 ∈ R , r2 = 10 70 = 0, 10000 × 10 71 ∈ R ,
r3 = − r2 = − 10 70 = − 0, 10000 × 10 71 ∈ R . Ensuite, on a :

r1 + r2 = r1 + r2 = 10 · · · 0938 = 0, 10 · · · 0938 × 10 71 = 0, 100 00 × 10 71 = r2 = 10 70 ;


| {z } | {z }
67 zéros 67 zéros

d’où : A1 = 10 70 + (−10 70 ) = 10 70 + (−10 70 ) = 0 = 0 car 0 ∈ R , =⇒ A1 = 0. Alors que :

r2 + r3 = r2 + r3 = 10 70 + (−10 70 ) = 0 = 0 ;

il s’ensuit : A2 = 938 + 0 = 938 + 0 = r1 = r1 = 938. • Conclusion : A1 6= A2 . 



– (P2.4) : × n’est pas distributive par rapport à + ;
– (P2.5) : + n’est pas simplifiable dans R ,
i.e. ∃ r, s, t ∈ R tels que s 6= t, mais r + s = r + t .
Cf. Exemple a6 avec r = r2 , s = r1 et t = 0 ;
– (P2.6) : × n’est pas simplifiable dans R∗ ,
i.e. ∃ r, s, t ∈ R∗ tels que s 6= t, mais r × s = r × t ;
– (P2.7) : Pour r1 , r2 ∈ R∗ , on a généralement : r1 × (1 ÷ r2 ) 6= r1 ÷ r2 .
10
Pour la facilité de la compréhension, tous les exemples numériques ci-après sont pris en base 10. Cependant, on peut
trouver des exemples analogues dans n’importe quelle autre base.
GEN. ET ELEMENTS SUR LES BASES DU CALCUL SCIENTIFIQUE (ND/NG, 18 avril 2016) 13

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 .

Notons que : r1 = 0, 40000 × 10 −4 ∈ R∗+ et r2 = 0, 50700 × 10 −4 ∈ R∗+ . Par ailleurs,

1 + r1 = 1 + r1 = 1, 00004 = 0, 10000|4 × 10 1 = 0, 10000 × 10 1 = 1 ;

1 + r2 = 1 + r2 = 1, 0000507 = 0, 10000|507 × 10 1 = 0, 10001 × 10 1 > 1 . 


• • • Conséquence : Il existe des éléments r1 , r2 ∈ R∗+ tels que : 1 + r1 = 1 et 1 + r2 > 1.


On remarquera que, nécessairement alors, r1 < r2 et : ∀ r ∈ R∗+ , r < r1 =⇒ 1 + r = 1 .
Ces remarques légitiment la définition suivante :
• • • Définition : L’epsilon-machine de R est le plus petit élément > 0 de R , soit εR , vérifiant :
1 + εR > 1 .

• • • 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

⊲ Exercice A19 . Ce qui précède ne constitue qu’un raisonnement purement heuristique.


Utiliser l’Exercicce A9 pour trouver une approximation du plus petit réel-machine εR (r) > 0
vérifiant : r + εR (r) > r.
On retiendra de cette partie qu’en addition-machine, lorsque 2 réels sont disproportionnés
en ordre de grandeur, « le plus gros avale le plus petit » . Voir aussi l’Exemple a6 .

d) Cas des fonctions numériques usuelles.


De même que les opérations arithmétiques de base, il n’est pas envisageable d’implémenter en valeur

exacte les fonctions usuelles (i.e. , sin, cos, exp, etc) sur ordinateur. Chacune d’entre elles, notons la
f , est représentée en machine par une fonction f censée en être une approximation aussi bonne que la
machine puisse le permettre. Alors on a :
• • • Définition : La fonction f est dite implémentée avec la précision-machine par f dans 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

III - Le problème des erreurs en Calcul Scientifique.


1◦ ) Introduction.
Un algorithme de Calcul Scientifique prend un certain nombre de données numériques en entrée,
puis effectue des calculs consistant en des opérations arithmétiques élémentaires (+, −, ×, ÷) et/ou
des évaluations de fonctions numériques, et sort des résultats. Exécuté sur ordinateur, et comme il a
été expliqué en II, du fait des limites intrinsèques liées au mode de représentation des nombres réels
en mémoire d’ordinateur, le résultat de chaque opération arithmétique élémentaire sur ces nombres et
de chaque évaluation de fonction numérique sera, presqu’à coup sûr, entâché d’une erreur d’arrondi.
L’algorithme combinant un grand nombre de ces opérations et de ces évaluations de fonctions, il s’ensuit
que les résultas qu’il fournira à la sortie de son exécution en machine ne peuvent être, en réalité, que des
approximations des résultats exacts attendus.
Cependant, les erreurs d’arrondi ne sont pas les seules sources d’erreur sur les résultats des algorithmes
de Calcul Scientifique. Il y en a 2 autres principales : les erreurs de données et les erreurs de méthode.

2◦ ) Origine des erreurs sur les résultats en Calcul Scientifique.


a) Les erreurs de données.
Les données qu’on rentre dans un algorithme de Calcul Scientifique sont rarement exactes :
− soit parce qu’elles sont issues de mesures physiques, et donc entâchées d’erreurs de mesure ;
− soit parce qu’elles ont été obtenues à partir de calculs précédents, donc probablement entâchées
d’une accumulation d’autres erreurs de données précédentes et/ou d’erreurs de méthode et/ou
d’erreurs d’arrondi ;
− et lorsqu’aucune des 2 situations précédentes n’est réalisée, il ne faut pas négliger le fait que les données,
même initialement exactes, vont cesser de l’être dès leur entrée en machine, du fait de leur
arrondissement dans R , l’ensemble des nombres réels connus par la machine.
On parle d’erreurs de données ou erreurs en entrée ou erreurs initiales.
Le problème avec ce type d’erreurs, c’est qu’une fois qu’elles sont là, on ne peut rien faire d’autre que
de « faire avec » : on ne peut qu’injecter dans l’algorithme de Calcul Scientifique, pour son exécution
sur ordinateur, ces données entâchées d’erreurs. Ceci fait alors que, dès le départ, l’algorithme cherche,
en réalité, à calculer autre chose que ce qu’il est censé effectivement calculer. Et ce fait est totalement
indépendant de ce qui a pu se passer comme erreur(s) de méthode pour la mise au point de l’algorithme,
ou pourrait survenir plus tard comme erreurs d’arrondi pendant son exécution en machine.
p
• • • Exemple a8 . On souhaite calculer A = f ( x1 , x2 ) = x21 + x22 , pour (x1 , x2 ) coordonnées d’un
point mesurées dans le plan muni d’un repère orthonormé.
Au lieu de x1 , x2 , la mesure donne plutôt 2 approximations respectives :

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

=⇒ Le mieux qu’on puisse faire : calculer A e = f( x


e1 , x
e2 ) comme approximation de A,
e−A
A
=⇒ erreur relative qui s’ensuit sur la valeur de A : ε e = .
A A
• Vocabulaire : εxe1 et εxe2 sont donc les erreurs sur les données sur le calcul de A. Puisqu’elles sont
là, elles sont incontournables.
• Problème : Ordre de grandeur de εAe par rapport à εxe1 et εxe2 ? 

• • • 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

• • • Exemple a9 . On considère : f (x) = ex , x0 = 100, x


e0 = 100, 01. On trouve :
y0 = ex0 ≃ 2, 6881 1714 × 10 43 , ye0 = ex
e0 ≃ 2, 7151 3317 × 10 43 ,

ε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 ?

3. Evaluation numérique d’une fonction à plusieurs variables y = f (x1 , · · · , xn ).


Données théoriques : x1 , · · · , xn −→ valeurs exactes inconnues, ou alors arrondies en machine,
=⇒ on ne peut pas calculer la vraie valeur requise y = f (x1 , · · · , xn ) ;
=⇒ Données effectives : x e1 , · · · , x
en −→ connues, mais approximations des vraies valeurs,
=⇒ Calcul plutôt de ye = f (e x1 , · · · , x
en ) qu’on va fournir comme approximation de y.
x
ei − xi
Donc erreurs relatives sur les données : εx ei = ( i = 1 (1) n ).
xi
ye − y
=⇒ erreur relative sur le résultat cherché : εye = .
y
Posons : E = max εxei . Le problème du calcul de y sera bien conditionné lorsque : εye 6
i = 1 (1) n
25 · E. Et il sera mal conditionné lorsque : εye ≫ E.
⊲ Exercice A26 .
1◦ ) Trouver une approximation au 1er ordre de εye en fonction des εxei , i = 1 (1) n .
2◦ ) Quand pourra-t-on dire que la valeur de y est plus ou moins sensible à l’erreur sur la donnée
xi , pour un indice i donné dans [ 1 (1) n ] ?
⊲ Exercice A27 . Les réels m1 , · · · , mn étant donnés, étudier la sensibilité aux erreurs de données
sur les xi de la fonction : F (x1 , · · · , xn ) = (x1 )m1 × · · · × (xn )mn .
⊲ Exercice A28 . Etudier la sensibilité aux erreurs de données sur la variable x et sur les coeffi-
cients ai de : P (x) = an x n + an−1 x n−1 + · · · a1 x + a0 .
b) Les erreurs de méthode.
Il en apparaı̂t une dans un calcul numérique lorsque, pour calculer la valeur d’une quan-
tité inconnue A, on remplace A par une approximation analytique A e plus facile à calculer.

• • • Vocabulaire : On parle d’erreur de méthode ou de troncature ou de discrétisation.


• • • Motivation de la notion importante de discrétisation (ou troncature).
Comme vu en II - 3◦ ), la mémoire d’un ordinateur apparaı̂t essentiellement comme un domaine discret
et fini11 . De ce fait, elle ne peut contenir qu’une quantité finie d’informations. Il est hors de question (tout
du moins en l’état actuel de la technologie) d’envisager d’y stocker une quantité infinie d’informations.
11
Un ensemble discret (ou dénombrable) est un ensemble dont on peut numéroter les éléments par les entiers naturels ou
une partie de ceux-ci. Ainsi, tout ensemble fini est discret. Mais IN, ZZ et Q
I sont aussi des ensembles discrets, bien qu’étant
infinis. Par contre, [ 0 , 1 ] , IR et CI sont infinis et non discrets.
GEN. ET ELEMENTS SUR LES BASES DU CALCUL SCIENTIFIQUE (ND/NG, 18 avril 2016) 17

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

=⇒ erreur de méthode : SN − A. (Cf. Chapitre « Sommation Numérique des Séries » ).


4. Pour une fonction f dont l’expression analytique est « compliquée » , le calcul de sa dérivée f ′ « à
la main » le sera davantage. Alors si on a écrit un programme évaluant numériquement f en tout
point, il est préférable de l’utiliser pour approcher f ′ là où sa valeur est nécessaire. Ainsi, en un
f (x0 + h) − f (x0 )
point x0 , une idée est d’approcher f ′ (x0 ) par d(h) = , pour h fixé « petit » .
h
• Justification de la procédure : Par définition, d(h) −→ f ′ (x0 ) quand h −→ 0.
Cependant, cette procédure pose des problèmes pour h trop petit. Voir Exercices A33 - A34 .
Z b
5. Calcul de I = f (x) dx alors qu’on ne sait pas calculer « à la main » une primitive de la fonction
a
f . Alors le principe de l’intégration numérique consiste à découper [ a , b ] en un nombre fini de
petits sous-intervalles [ ak−1 , ak ] , et à approcher f sur chacun de ceux-ci par une fonction fek dont
une primitive est facile à calculer.
(Cf. Chapitre « Intégration Numérique » dans ce Cours).  •
Voir, en ANNEXE -IV, un exemple plus élaboré de discrétisation d’un modèle mathématique continu.

c) Les erreurs d’arrondi-machine.


On dit aussi erreurs de représentation numérique. Cf. II et III - 1◦ ).
18 III - Le problème des erreurs en Calcul Scientifique

3◦ ) Les 3 types d’erreurs numériques : La faute à qui ?


Schématiquement, on peut sérier les responsabilités dans l’apparition des 3 types d’erreurs ci-dessus
examinés de la manière suivante :
Types d’erreurs Faute de
1. erreurs de données −−−−→ les autres (machines ou êtres humains)
2. erreurs de méthode −−−−→ moi
3. erreurs d’arrondi −−−−→ ordinateur.

4◦ ) Le phénomène de la propagation des erreurs dans les calculs numériques.


Quelque soit son type, une fois qu’une erreur est introduite dans un algorithme de Calcul Scientifique,
elle se propage irrémédiablement dans la suite des calculs, se combinant avec les erreurs antérieures et les
erreurs ultérieures pour influer sur le résultat final de manière plus ou moins décisive.
Nous allons illustrer cette importante problématique par la localisation de l’apparition et le suivi à la
trace des 3 types d’erreur dans un exemple simple.
• • • Exemple a10 . Calcul de y0 = cos (17/14) dans R (10 ; 5, −999, 999).
1. On rentre x0 = 17/14 = 1, 2 142857 142857 · · · = 0, 12 142857 142857 × 10 1 6∈ R ,
=⇒ la machine arrondit x0 à x e0 = 0, 12143 × 10 1 = 1, 2143,
=⇒ en mémoire, au lieu de x0 , on aura donc plutôt : x
e0 = + 0 0 1 + 1 2 1 4 3 .
=⇒ Par la suite, on ne pourra, au mieux, que calculer y1 = cos (e
x0 ) = cos (1, 2143), qu’on
fournira comme approximation de y0 .
17
=⇒ erreur de donnée : δ 0 = − 1, 2143,
14
=⇒ erreur qui s’ensuit sur la valeur du résultat cherché y0 : δ 1 = y1 − y0 .
2. Si la fonction x 7−→ cos x n’est pas disponible sur notre machine, il faut définir une méthode
numérique pour calculer y1 = cos (1, 2143).
+∞
X (1, 2143)2n
Pour ce faire, on sait que : cos (1, 2143) = (−1)n .
(2n) !
n=0
=⇒ On est ramené au problème du calcul numérique de la somme d’une série convergente. On
SN − y 1
peut donc chercher un indice N tel que : < 5 × 10 −5 (= b−L+1 /2 ici),
y1
car, dans R , on ne peut pas espérer mieux comme précision.
Or, la série dont cos (1, 2143) est la somme converge par le critère des séries alternées. D’où :
(1, 2143)2N + 2 (1, 2143)2
| SN − y 1 | < et y1 > 1 − .
(2N + 2) ! 2
2 · (1, 2143)2N + 2
=⇒ il suffit de trouver N tel que : < 5 × 10 −5 .
(2 − (1, 2143)2 ) · (2N + 2) !
avec N évidemment aussi petit que possible. On trouve : N = 4. 4
X (1, 2143)2n
D’où notre méthode de calcul de y1 : On va approcher y1 par y2 = S4 = (−1)n .
(2n) !
n=0
=⇒ erreur de méthode qui s’ensuit sur le calcul de y1 : δ 2 = y2 − y1 .
3. Ecriture d’un algorithme pour calculer y2 par ordinateur.
Mais lorsque cet algorithme sera effectivement exécuté en machine, chaque opération arithmétique
effectuée par l’algorithme aura un résultat entâché d’une erreur d’arrondi.
=⇒ Le résultat fourni par la machine ne sera pas exactement y2 , mais un certain y3 = y2 ,
=⇒ erreur due aux arrondis-machine dans le calcul de y2 : δ 3 = y3 − y2 = y2 − y2 .

⊲ Exercice A31 . Ecrire un algorithme qui calcule y2 .


• Bilan : Notre approximation finale de y0 = cos (17/14) est y3 ;
=⇒ erreur absolue associée : δ = y3 − y0 = δ 1 + δ 2 + δ 3 . •

GEN. ET ELEMENTS SUR LES BASES DU CALCUL SCIENTIFIQUE (ND/NG, 18 avril 2016) 19

5◦ ) Le problème de la réduction des erreurs en Calcul Scientifique.


Evidemment, on souhaiterait que l’effet global des erreurs sur le résultat d’un algorithme de Calcul
Scientifique soit aussi minimal que possible. A priori, ceci se ramènerait à essayer de réduire l’effet de
chacun des 3 types d’erreur décrits précédemment.
a) Réduction des erreurs de données.
Difficile, si ce n’est en utilisant des instruments de mesure plus précis, s’il en existe, et/ou en étant
plus vigilant dans le relevé des mesures de ceux ci.
b) Réduction des erreurs d’arrondi.
Les erreurs d’arrondi également sont incontournables. Elles ont cependant un avantage très particulier :
elles peuvent être par excès ou par défaut, sont essentiellement imprévisibles et, de plus, indépendantes
les unes des autres, et indépendantes des autres types d’erreurs. On peut ainsi les concevoir comme des
réalisations de variables aléatoires indépendantes et de même loi de probabilité. C’est ce qui
explique que, dans la pratique quotidienne du Calcul Scientifique, on observe un important phénomène
de compensation entre les erreurs de ce type pendant l’exécution d’un même algorithme. Malgré le grand
nombre d’opérations arithmétiques effectuées en général dans un tel algorithme, l’effet des erreurs d’ar-
rondi n’est jamais aussi catastrophique qu’on pourrait le craindre a priori. Néanmoins, par une meilleure
organisation des calculs, on peut parfois concrètement diminuer leur effet dans l’algorithme. Il est alors
important de veiller, autant que faire se peut, à s’assurer d’avoir fait de son mieux dans cette organisation
lors de la conception de son algorithme. Le phénomène de loin le plus dangereux, à cet égard, est celui
illustré dans l’Exercice A21 . Il faut essayer d’éliminer la possibilité de son apparition chaque fois qu’on
peut l’anticiper.
Pour illustration, examiner l’Exercice ci-après :
⊲ Exercice A32 . On souhaite calculer « au mieux » les racines de l’équation :
x2 − 2 b x + c = 0, où b2 ≫ | c | et b > 0 . (19)
1◦ ) Vérifier que (19) admet 2 racines réelles distinctes, et que celles-ci sont peu sensibles aux erreurs de
données sur les coefficients b et c.
2◦ ) Par contre, pour le calcul effectif en machine de ces 2 racines, expliquer pourquoi, par les formules
classiques, l’une d’entre elles (qu’on appellera x1 , et l’autre x2 ) présente le phénomène mis en
évidence dans l’ Exercice A21 .


3 ) Confirmation : On suppose que b2 − c est calculée en machine avec une erreur relative ε .
a) Montrer qu’alors x1 sera calculée en machine, au mieux, avec une erreur relative εx
e1 ≈ −2(b /c) ε .
2

b) Par contre, montrer que εx e2 ≈ ε /2.


4 ) Autre approche : On calcule d’abord x2 comme en 3◦ ), puis on déduit x1 en utilisant la relation

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.

c) Réduction des erreurs de méthode.


Dépendant en principe entièrement de nous, l’effet des erreurs de méthode peut, théoriquement, être
réduit autant que souhaité. Cependant, un examen attentif révèle que cette apparente marge de manœuvre
illimitée n’est qu’une illusion. En effet, dans la plupart des cas, tenter de réduire l’effet d’une
erreur de méthode en dessous d’un certain seuil a pour conséquence une augmentation
parallèle et, souvent, très alarmante de l’effet des erreurs d’arrondi au cours de l’exécution de
l’algorithme qui suivra. Ceci peut aller jusqu’à rendre totalement aberrant le résultat de l’algorithme
tel qu’issu de son exécution par ordinateur. C’est le phénomène de l’antagonisme des erreurs en
Calcul Scientifique. A titre d’illustration, faire, sur calculatrice, l’expérience numérique suivante :
20 III - Le problème des erreurs en Calcul Scientifique

⊲ Exercice A33 . (Expérience numérique) Pour f (x) = ex , on veut approcher numériquement


f (5 + h) − f (5)
f ′ (5) par d(h) = , pour h « convenablement » choisi. On notera d(h) , le résultat
h
de l’évaluation de d(h) tel qu’affiché par la calculatrice.
1◦ ) a) Pour différentes valeurs décroissantes de h, hk > 0, avec h0 = 1, hk +1 = hk /7, remplir le tableau
suivant (s’arrêter lorsque hk < 10 −16 ) :

k hk d(hk ) d(hk ) − f ′ (5) f ′ (5)
.. ... ... ...
.
b) Quel(s) phénomène(s) numérique(s) peut-on observer dans ce tableau ?
f (5 + h) − f (5 − h)
2◦ ) Reprendre cette expérience numérique en prenant plutôt d(h) = .
2h
f (5 − h) − 2f (5) + f (5 + h)
3◦ ) Faire de même en remplaçant f ′ (5) par f ′′ (5), et avec d(h) = .
h2

⊲ 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 :

IV - Un exemple de discrétisation d’un modèle mathématique continu.


Certains phénomènes physiques sont régis par un problème différentiel du type :
( P1 ) : −u′′ (x) + c(x) u(x) = f (x), ∀x ∈ ]0, 1[ , et u(0) = α , u(1) = β ,
où les fonctions c(x) et f (x) sont connues, ainsi que les réels α et β, avec : c(x) > 0 sur [ 0 , 1 ] .
Expliciter le phénomène physique revient à trouver la fonction u(x) solution de ( P1 ) (on admet
que ce modèle mathématique représente correctement le phénomène physique considéré, et donc que cette
solution u(x) de ( P1 ) existe et est unique). Malheureusement, en dehors de quelques choix très particuliers
des 2 fonctions c(x) et f (x), on ne connaı̂t pas de méthode générale pour résoudre le problème différentiel
( P1 ) analytiquement (i.e. à la main). Par conséquent, dans presque toutes les situations réelles, il faut
recourir à une résolution numérique par ordinateur.
Or, résoudre ( P1 ) revient alors à déterminer la fonction u(x) sur tout l’intervalle [ 0 , 1 ] , soit une
quantité infinie d’informations à déterminer, i.e. la valeur prise par u(x) en chaque point de [ 0 , 1 ] .
De plus, la fonction u(x) elle-même est régie par une infinité de relations à travers ( P1 ), soit une relation
attachée à chaque point x ∈ [ 0 , 1 ] . Clairement, tout ceci est trop pour la mémoire d’un ordinateur. Il
faut donc ramener l’ensemble du problème à des dimensions gérables par l’ordinateur.
Voici comment procède la méthode dite « des différences finies » :
1. Discrétisation du domaine.
On remplace [ 0 , 1 ] par une équisubdivision finie de points jugée « représentative » :
( 0 = x0 < x1 < · · · < xN < xN + 1 = 1 ) ( avec xi + 1 − xi = h, ∀ i = 0 (1) N ).
La « représentativité » de l’équisubdivision se mesurera par le fait que son pas h soit jugé « petit » .
2. Discrétisation du nombre d’inconnues.
On ne cherche plus toutes les valeurs u(x), x ∈ [ 0 , 1 ] , mais seulement les u(xi ), i = 0 (1) N + 1.
Plus précisément, on va chercher des approximations (sachant que u(x0 ) = α et u(xN + 1 ) = β) :
u1 ≈ u(x1 ), u2 ≈ u(x2 ), · · · , uN ≈ u(xN ). (20)

3. Discrétisation du nombre de relations.


On ne s’intéresse plus à toutes les égalités « −u′′ (x)+c(x) u(x) = f (x) » , où x parcourt [ 0 , 1 ] ,
mais seulement à celles rattachées aux nœuds internes x1 , · · · , xN de l’équisubdivision :
−u′′ (xi ) + c(xi ) u(xi ) = f (xi ), i = 1 (1) N. (21)
4. Expression approchée des inconnues parasites en fonction des inconnues d’intérêt.
Dans (21), on a :
− ci = c(xi ) et fi = f (xi ) sont des quantités numériques calculables à partir des données du
problème, les fonctions c(x) et f (x) étant connues ;
− u(xi ) est une inconnue qui nous intéresse : c’est une inconnue d’intérêt ;
− par contre, u′′ (xi ) est une inconnue qui ne nous intéresse pas a priori : c’est une inconnue para-
site. On s’en débarasse en l’exprimant, approximativement, en fonction d’inconnues d’intérêt.
En effet, pour h « petit » , on a :
u(xi − 1 ) − 2 u(xi ) + u(xi + 1 )
u′′ (xi ) ≈ . (22)
h2
⊲ Exercice A36 . Justifier cette approximation.
5. Equations approchées satisfaites par les inconnues d’intérêt.
En injectant l’approximation (22) dans (21), on obtient :
−u(xi − 1 ) + (2 + ci h2 ) u(xi ) − u(xi + 1 ) ≈ h2 fi , i = 1 (1) N. (23)
Notons alors que du fait que u(x0 ) = α et u(xN + 1 ) = β, (23) devient pour i = 1 et i = N :
(2 + c1 h2 ) u(x1 ) − u(x2 ) ≈ h2 f1 + α, (24)
−u(xN − 1 ) + (2 + cN h2 ) u(xN ) ≈ h2 fN + β. (25)
22 V - Conclusion : La pratique du Calcul Scientifique sur Ordinateur

6. Système linéaire satisfait par les approximations cherchées u1 , · · · , uN .


Pour satisfaire (20), (23) suggère de chercher des réels u1 , · · · , uN vérifiant :
 2
 (2 + c1 h ) u1 − u2
 = h2 f1 + α,
(S) −ui − 1 + (2 + ci h2 ) ui − ui + 1 = h2 fi , pour i = 2 (1) N − 1,

 2
−uN − 1 + (2 + cN h ) uN 2
= h fN + β.

Ceci est un système linéaire de N équations à N inconnues que sont u1 , · · · , uN .


On montre que c’est un système de Cramer , i.e. sa matrice est inversible, et donc il admet un
unique vecteur-solution (u1 , · · · , uN ) dans IR N .
⊲ Exercice A37 . Ecrire ce système linéaire sous forme matricielle.
7. Résolution numérique du système linéaire (S) par ordinateur.
On résoud (S), et on obtient des approximations u1 , · · · , uN respectives de u(x1 ), · · · , u(xN ).
Le système linéaire (S) est donc une approximation discrète et finie du problème continu
( P1 ), et elle est traitable numériquement par ordinateur.
8. Approximation de u(x) aux points x ∈ [ 0 , 1 ] \{ x0 , · · · , xN + 1 }, connaissant u1 , · · · , uN .
Cf. Chapitre « Approximation numérique d’une fonction » de ce Cours.

V - Conclusion : La pratique du Calcul Scientifique sur Ordinateur.


1◦ ) Introduction.
Les sections précédentes ont eu pour objectif d’introduire le lecteur et la lectrice, avec une approche
assez simplifiée, dans l’univers du Calcul par ordinateur. Ce qui devrait lui permettre d’avoir une assez
bonne idée de ce qui se passe dans la « boı̂te » communément supposée « magique » lorsque celle-ci est
en train de calculer et de cracher des résultats à l’écran. En particulier, on aura retenu qu’il faut éviter la
naı̈veté, a priori, de prendre tous ces résultats pour argent comptant. Une certaine vigilance s’impose.
En effet, on pourrait déduire, de tout ce qui précède, que, décidément, le Calcul Scientifique (CS ci-
après) sur ordinateur ne serait d’aucun intérêt, parce que d’une fiabilité souvent douteuse, même pour
les opérations les plus élémentaires et, par conséquent, aisément contrôlables par l’être humain « à l’œil
nu » . On ne pourrait alors que s’attendre à des résultats encore plus catastrophiques dans la tenta-
tive d’évaluation, sur ordinateur, d’expressions mathématiques un tant soit peu complexes. Pourtant, ces
dernières sont les plus susceptibles d’être rencontrées dans la modélisation mathématique des problèmes
du monde réel dont la résolution est notre préoccupation ultime ici.
Certains, apparemment trop avertis sur le sujet, ont cru pouvoir en conclure que « les ordinateurs
calculent faux » . Ce qui est contredit par la manière probante avec laquelle les ordinateurs ont pu être
utilisés depuis plus d’un demi-siècle pour solutionner en pratique un grand nombre de problèmes du monde
réel (physiques et autres) traduisibles en termes mathématiques, et de complexités et sensibilités variés.
On peut en déduire qu’ « il y a un truc quelque part » qui permet au CS de pouvoir être pratiqué de
manière crédible sur ordinateur.

2◦ ) Pourquoi et Comment le Calcul Scientifique marche.


a) Nécessité vitale d’une programmation très soignée et testée en CS.
Le « truc » , c’est simplement la programmation soignée et suffisamment testée avant multi-
usage des algorithmes de résolution numérique proposés.
La nécessité de cette dernière n’est pas spécifique, en Programmation Informatique, au CS. Sauf
que, dans d’autres domaines de la Programmation Informatique, programmer soigneusement se résume
le plus souvent à s’assurer que l’algorithme proposé résoud théoriquement, et dans des délais de temps
raisonnables, le problème posé, lequel est toujours discret et fini, et utilise des données exactes. Les seules
erreurs possibles ici sont celles dues au fonctionnement plus ou moins rigoureux de l’esprit humain.
Il en va tout autrement en CS, le contrôle de la validité théorique d’un algorithme pour résoudre un
problème donné ne suffisant pas à assurer sa validité pratique dans l’usage quotiqien. Puisque, comme
nous l’avons vu, 2 algorithmes calculant sur les réels et résolvant théoriquement le même problème, bien
GEN. ET ELEMENTS SUR LES BASES DU CALCUL SCIENTIFIQUE (ND/NG, 18 avril 2016) 23

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.

b) Validité informatique d’un programme de CS.


On n’a pratiquement aucune chance sur cent, ne serait-ce que du fait des arrondis dans les calculs,
qu’un programme de CS produise la solution théorique exacte du problème qu’il est censé résoudre, même
modulo la précision maximale sur les réels permise par la machine.
Nous sommes alors amenés à définir formellement la validité informatique d’un programme de CS pour
la résolution d’un problème donné comme étant sa capacité à produire des résultats approchant en bonne
approximation la solution théorique exacte pour le plus grand ensemble de données de départ susceptibles
de lui être soumises.
Cette validité ne pourra jamais être garantie à 100 % pour l’ensemble de toutes les données possibles.
Néanmoins, on peut y tendre en grande partie en veillant à :
(1) avoir une idée sur l’origine des erreurs pouvant causer une erreur sur le résultat final du programme ;
(2) essayer de savoir comment celles-ci se propagent dans l’exécution séquentielle du programme, i.e. :
(a) entre l’entrée et la sortie de l’évaluation de chaque expression mathématique rencontrée dans le
programme ;
(b) et, en particulier, de manière ultime, entre l’entrée et la sortie du programme ;
(3) modifier le programme :
(a) si possible, en minimisant, autant que faire se peut, les erreurs en entrée ;
(b) mais, surtout, en essayant de rendre le résultat final le moins sensible possible aux divers types
d’erreur ; en particulier, faire en sorte que l’erreur sur ce résultat final n’amplifie pas trop les
effets de ces diverses erreurs.
Deux programmes de CS, théoriquement équivalents sur le plan mathématique pour la résolution d’un
problème donné, peuvent différer radicalement du point de vue de (1), et surtout de (2). On préférera
alors celui des 2 qui réalise le mieux (3), et surtout (3)(b), (3)(a) étant souvent difficile à réaliser pour
des raisons pratiques (données non contrôlables par le programmeur) ou matérielles (limites imposées par
les possibilités de la machine utilisée).
On s’attachera donc à écrire des programmes réalisant (3) au mieux. Cependant, ceci, comme nous
l’avons déjà dit, ne sera jamais possible à 100 %, voire nécessiterait une analyse théorique beaucoup trop
sophistiquée de l’algorithme, et donc hors d’atteinte pour un algorithme un tant soit peu complexe.
Alors la dernière précaution indispensable pour la validité d’un programme de CS est de
le tester, i.e. :
(4) l’appliquer à un grand ensemble, aussi représentatif que possible, de données de départ possibles pour
lesquelles on connaı̂t les résultats théoriques exacts, et comparer ceux-ci avec les résultats fournis
par l’exécution du programme sur ordinateur pour ces données ;
(5) s’assurer que les résultats fournis par l’exécution du programme sur ordinateur vérifient certaines des
propriétés mathématiques connues a priori de la solution théorique du problème posé.

3◦ ) Problèmes de temps de calcul et de complexité algorithmique.


En Programmation Informatique, les problèmes de CS sont parmi ceux qui mobilisent le plus de
ressources, aussi bien au niveau de l’occupation de l’espace-mémoire que du temps moyen pris par leur
exécution. Ceci provient du fait que, des 3 types de variables informatiques de base (caractère, entier, réel),
un réel occupe en mémoire, en général, au moins le triple du nombre d’octets d’un entier qui lui-même en
occupe au moins le double d’un caractère. De plus, les opérations de base sur les réels sont d’une nature
autrement plus complexe que celles sur les chaı̂nes de caractères, et trois fois au moins plus exigeantes que
celles sur les entiers. Or, pour le moindre problème de CS issu du monde réel, il faut effectuer des milliers,
24 V - Conclusion : La pratique du Calcul Scientifique sur Ordinateur

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.

Vous aimerez peut-être aussi