MAT-2910: C HAPITRE 1
A
NALYSE D’
ERREURS hm@mat.ulaval.caT
ABLE DES MATIÈRES1 Sources d’erreurs 2
1.1 Introduction . . . 2
1.2 Types d’erreurs. . . 3
1.3 Erreur absolue, erreur relative . . . 5
2 Représentation des nombres en machine 6 3 L’arithmétique flottante 9 3.1 accumulation des erreurs d’arrondi . . . 10
3.2 Erreurs d’arrondi sur une somme . . . 10
3.3 Règle de Horner . . . 12
3.4 Phénomènes de compensation (cancellation) . . . 12
3.5 Instabilité numérique . . . 13
4 Erreurs de troncature 15 4.1 Développement de Taylor d’une fonction à une variable . . . 15
4.2 Développement de Taylor d’une fonction à deux variables . . . . 15
1 S
OURCES D’
ERREURS1.1 I
NTRODUCTION•On ne peut pas résoudre analytiquement tous les problémes mathéma- tiques issus des sciences de l’ingénieur.
On peut citer par exemple :
– Calcul d’une primitive de certaines fonctions.
Exemple 1.1 :
Z π 0
ln(cosx)2d x
– Calcul d’une solution explicite de certaines équations non linéaires Exemple 1.2 :
x =ex
– Résoudre certaines équations différentielles ordinaires Exemple 1.3 :
y0(x) =sin(y(x))
– Résoudre certaines équations aux dérivées partielles
•Dans un tel cas, on remplace la résoulution mathématique du problème par son approximation numérique en utilisant les techniques d’analyse numé- rique.
•L’analyse numérique permet d’obtenir au moyen d’un algorithme la solu- tion approchée d’un problème mathématique posé et ceci avec une précision désirée et après un nombre fini d’opérations élémentaires.
•La stratégie générale consiste à transformer un probléme compliqué en un probléme plus simple. Par exemple
– Nonlinéaire−→linéaire (Linéarisation) – Continu−→discret (Discrétisation)
•Le résultat final et son degré de précision vont dépendre : – des algorithmes utilisés
– de leur mise en œuvre sur ordinateur
1.2 T
YPES D’
ERREURSLes erreurs introduites dans la résolution d’un modèle mathématique pro- viennent de différentes sources :
1. Les erreurs de modélisation : pour être traité numériquement, un pro- blème mathématique est toujours simplifié par rapport à la réalité. (Ex- périmentation, simplification,· · ·)
Exemple 1.4 : Assimiler par exemple la terre de forme sphérique. Or le rayon de la terre est r≈6357km à l’équateur et r≈6378km aux pôles.
Exemple 1.5 : Problème du pendule θ00(t) =−α
mθ0(t)− g
l sinθ(t)
Pour les petites oscillations on peut écrire sin(θ(t)) ≈ θ(t). On obtient alors l’équation différentielle linéaire
θ00(t) =−α
mθ0(t)− g lθ(t)
2. Erreurs sur les données : Les données expérimentales sont entachées d’erreurs.
3. Les erreurs d’arrondi: qui proviennent de la représentation des nombres dans un calculateur.
4. Les erreurs d’approximation et de discrétisation: – calcule d’une intégrale à l’aide d’une somme finie, – une dérivée à l’aide de différences finies
– la somme d’une série infinie à l’aide d’un nombre fini de ses termes 5. Les erreurs humaines: programmation.
Soit x un nombre réel et soit ˜x une approximation de x. Pensez à x =π par exemple. Soit f(x) un résultat désiré (évaluation d’une fonction en un point) et soit ˜f(x˜)la valeur calculée. Alors on peut écrire
Erreur totale = f(x)−f˜(x˜)
= (f(x)−f(˜x))
| {z }
Erreur due aux données
+ (f(x˜)−f˜(x˜))
| {z }
Erreur de calcul
Erreur de calcul = Erreurs d’arrondi +Erreurs de troncature
Erreur d’arrondi = Arithmétique exacte −Arithmétique flottante
Erreur de troncature = Résultat exact −Résultat produit par un algorithme
1.3 E
RREUR ABSOLUE,
ERREUR RELATIVE•En général dans tout calcul numérique, on remplace un nombre exact x par un nombre approché ˜x légèrement différent.
•Si ˜x <x, on dit que ˜x est une valeur approchée dex par défaut. Si ˜x >x, on dit que ˜x est une valeur approchée de x par excès. Dans les deux cas on note ˜x≈x.
Définition 1.1 On appelle erreur absolue d’un nombre approché ˜x la valeur ab- solue Ea bs(x) de la différence entre le nombre axact x et le nombre approché donné :
Ea bs(x):=|x−x˜|
L’erreur relative Er el(x)d’un nombre approchéx est le rapport de l’erreur absolue˜ Ea bs(x)de ce nombre et de la valeur absolue du nombre exact
Er el(x):= Ea bs(x)
|x |
Le pourcentage d’erreur est l’erreur relative multipliée par 100.
L’erreur relative fournit une information plus pertinente sur la grandeur réelle de l’erreur.
Exemple 1.6
x=π=3.141592· · ·,x∗=3.1419
Erreur absolue=3.073464102070211×10−4 Erreur relative=9.783140085199355×10−5 Exemple 1.7
y =106,y∗=999996 Erreur absolue=4.0×100 Erreur relative=4.0×10−6 Exemple 1.8
z=0.000012,z∗=0.000009 Erreur absolue=3.0×10−6 Erreur relative=25.0×10−2
2 R
EPRÉSENTATION DES NOMBRES EN MACHINEDans un ordinateur un nombre réel est représenté par un nombre fini de caractères, fixé à l’avance, qui dépend de l’architecture de la machine. Ainsi tous les nombres entiers ou réels ne peuvent pas être représentés.
On distingue :
– Les nombres entiers dont la représentation et la manipulation sont celles de l’arithmétique usuel.
– Les nombres flottants qui représentent les nombres rées. Ils sont repré- sentés de façon approximative dans la mémoire de la machine.
Définition 2.1 Soit x un nombre réel. Son développement dans une base b∈N donnée est
x =± X∞
i=1
aib−i
! be
Sa représentationen virgule flottante à t chiffres dans une base donnée b ∈ N,b≥2est donnée par le nombre
˜
x := (−1)sbe
t
X
i=1
aib−i = (−1)smbe
On note fl(x) = ˜x où
Mantisse : m=
t
X
i=1
aib−i=a1b−1+a2b−2+· · ·+atb−t Exposant : e∈Z,L<e<U, L<0,U >0
Signe : s∈ {0, 1}
ai∈N, 0<a1<b, 0≤ai <b,i=2,· · ·( normalisation) t= nombre de chiffres utilisés pour représenter la mantisse Le nombre de nombres flottants normalisés est donné par
2(b−1)bt−1(U−L+1) +1 Exemple 2.1 x =2.4=2+0.4=0.2·101+0.04·101
2.4=101(2·10−1+4·10−2) =0.24·101,(b=10,e=1,t=2,m=0.24) Il existe deux façons d’obtenir l’approximation fl(x)à partir du développe- ment de x dans la base b:
– Partroncature: on garde lest premiers chiffres du développement.
– Pararrondi: On ajoute 2b au(t+1)-ème chiffre du développement et on tronque.
Exemple 2.2
x =123,y=45.6,z=45.67
Pour une arithmétique flottante qui utilise t=3,b=10on a : fl(x) =0.123·103,fl(y) =0.456·102,fl(z) =0.457·102 Dans le standard IEEE 754 utilisé par Matlab, on a b=2 et : – en simple précision : t=24,L=−125,U =128
– en double précision :t=53,L=−1021,U =1024
Dans le standard IEEE 754 utilisé par Matlab, on a b = 2. De plus en simple précision on a t =24,L=−125,U =128 et en double précision on a t=53,L=−1021,U =1024.
Théorème 2.1 Dans une arithmétique à t chiffres avec troncature on a :
|x−fl(x)|
|x| ≤b1−t Dans une arithmétique à t chiffres avec arrondi on a :
|x−fl(x)|
|x | ≤1 2b1−t On note
εm :=b1−t(epsilon machine) Dans Matlabεm =eps .
>> eps
>> ans =
2.2204e-016
3 L’
ARITHMÉTIQUE FLOTTANTELe système numérique discret des machines est source d’erreurs. Il faut donc prendre des précaustions pour qu’une accumulation d’erreurs aussi petite soit-elle ne vienne pas fausser le résultat final.
Exemple 3.1
>> x = 2.0E+29;
>> y = 1.0E-9;
>> z1 = (y+(x-x))/y z1 =
1
>> z2 = ((y+x)-x)/y z2 =
0
On désigne par◦l’une des opérations suivantes :+,−,×,÷et on définit xýy =fl(fl(x)◦fl(y))
Deux expressions algèbriquement équivalentes peuvent fournir des résul- tats différents sur une machine et que l’ordre des opérations peut changer les résultats.
• x⊕(y⊕z) 6= (x⊕y)⊕z 6= (x⊕y)⊕(x⊕z) Exemple 3.2 t=4,b=10avec troncature.
x =0.1234×101,y=0.3429×100,z=0.1289×10−1 On a
x⊕(y⊕z) =0.1489×101,(x⊕y)⊕z=0.1588×101
• x⊗(yz) 6= (x⊗y)z 6=x⊗(yz)
3.1
ACCUMULATION DES ERREURS D’
ARRONDI Soit à calculerA=
104
X
k=1
1 10 = 1
10+· · ·+ 1 10
Le nombre réel 101 =0.1 en base 10, mais dans la base 2 il s’écrit (0.1)10= (0.00011001100110011· · ·)2
>> s=0;
>> for k=1:10000 s=s+0.1;
end
>> format long
>> s s =
1.000000000000159e+003
Et la valeur exacte estA=103.
3.2 E
RREURS D’
ARRONDI SUR UNE SOMMEDans une sommation de réels, l’erreur peut être minimisée lorsqu’on somme en premier les termes ayant la plus petite valeur absolue.
Exemple 3.3
Somme=a0+a1+· · ·+an, avec a0=1,a1=a2=· · ·=an=10−16 Pour n=1016on a exactement Somme=2mais numériquement on a
(((a0⊕a1)⊕a2)⊕ · · ·)⊕an) =1 a0+ (a1⊕(a2⊕ · · ·(an−1⊕an))) =2
On doit donc sommer par ordre croissant une série à termes positifs.
Exemple 3.4
S=1+ Xn
k=1
1 k+k2
On a
S=2− 1 n+1 et donc pour n assez grand S ≈2.
On pose
S1 =1+12 +· · ·+n+1n2
S2 =n21+n +· · ·+12+1
3.3 R
ÈGLE DEH
ORNEROn s’intersse au[problème de l’évaluation d’un polynôme P(x) =a0+a1x+· · ·anxn
Pour évaluer ce polynôme au point x on utilise l’algorithe de Horner sui- vant : on réecrit P(x)sous la forme
P(x) =a0+x(a1+x(a2+· · ·=x(an−1+x an))) et on pose pk=ak+ak+1x+· · ·+anxn−k. Alors on a
P(x) =p0
où
pn =an
pk−1 =ak−1+x pk, 1≤k≤n
3.4 P
HÉNOMÈNES DE COMPENSATION(
CANCELLATION)
Ces phénomènes se produisent lorsqu’on veut soustraire des nombres très voisins.
Exemple 3.5 On veut calculer les valeurs des fonctions f1(x) = 1−cosx
x2 , f2(x) = 2 sin(x/2)2 x2 pour des valeurs de x ≈0.
Algébriquement on a
f1(x) = f2(x), ∀x ∈R mais avec Matlab on a par exemple :
f1(10−8) =0, et f2(10−8) =0.5 A(x) =p
x+1−p
x, B(x) = 1 px+1+p
x On aA(x) =B(x), ∀x ∈R.
Numériquement on a :
A(108) =5.0000×10−5, B(108) =5.0000×10−5 A(1010) =4.9999×10−6, B(1010) =4.9999×10−6 A(1016) =0, B(1016) =5.0000×10−9
Exemple 3.6 Résolution de a x2+b x+c=0 On a
x1=−b+p
b2−4ac 2a
x2=−b−p
b2−4ac 2a
Pour éviter le phénomène de cancellation on peut utiliser l’une des méthodes suivantes :
• prendre comme x1 la plus grande des racines et calculer x2 par la formule x2=c/a x1
• onpeut écrire les formules çi-dessus un peu différemment, en remar- quqnt que
py−p
z= y−z py+p
z Exemple 3.7 Calcul approché de e−10
e−10≈
10
X
k=0
(−1)k10k k!
Le terme général uk est tel que
|uk|
|uk−1| =10
k ≥1, k≤10
•Règle : e−10=e110 avec e10≈ Xn
k=0
10k k!
3.5 I
NSTABILITÉ NUMÉRIQUECe phénomème se produit par exemple dans certains algorithmes itératifs.
Exemple 3.8 Calcul récurrent In=
Z 1
0
xn
10+x n=1, 2,· · · On a
In=1
n−10In−1
ceci permet de calculer In par ˚’ecurrence avec
¨ I0=log1110 In= 1n−10In−1 L’erreur sur In croit exponentiellement.
•L’idée içi est de renverser la récurrence en posant In−1= 1
10(1 n−In)
4 E
RREURS DE TRONCATURE4.1 D
ÉVELOPPEMENT DET
AYLOR D’
UNE FONCTION À UNE VARIABLE Théorème 4.1 Soit h6=0.Si f ∈Cn+1([x,x+h])ou f ∈Cn+1([x+h,x])si h<0alors : f(x+h) = f(x) +h f0(x) +h2
2!f00(x) +· · ·+hn
n!f(n)(x) +Rn(x) avec
Rn(x) = Z x+h
x
(x+h−y)n
n! f(n+1(y)d y
= hn+1
(n+1)!f(n+1(cx)
=O(hn+1)
=o(hn)
oùcx ∈]x,x+h[si h>0ou]x+h,x[si h<0.
O=" de l’ordre de ".
o=" négligeable comparé à ".
Exemple 4.1 Série de Taylorde de f(x) =ex au voisinage de x=0: eh=1+h+h2
2 +h3 6eα oùα∈]0,h[si(h>0).
1+h+h22 est donc uneapproximation d’ordre 3deex.
4.2 D
ÉVELOPPEMENT DET
AYLOR D’
UNE FONCTION À DEUX VARIABLES Théorème 4.2 Soient h 6= 0,k 6= 0 des nombres réels. Si toutes les dérivées partielles fx, fy, fx x, fx y, fy y,· · ·, de f jusquà l’ordre n sont continues dans un domaine contenant le point(x,y)alors :f(x+h,y+k) = f(x,y) +h fx(x,y) +h2
2 fx x(x,y) +hk fx y(x,y) + +k2
2 fy y(x,y) +· · ·