56
2 Les fondements du calcul scientifique
[Indication : consid´ erer la donn´ ee initiale perturb´ ee ˜
I0 = I0 + µ0 et ´ etudier la
propagation de l’erreur µ0 dans (2.39).]
10. D´ emontrer (2.37).
[Solution : remarquer que
| x + y − (x + y)|
|x + y|
≤
| x + y − (f l(x) + f l(y))|
|x + y|
+
| f l(x) − x + f l(y) − y|
|x + y|
,
et appliquer (2.36) et (2.35).]
11. Etant donn´ e x, y, z ∈ F avec x + y, y + z, x + y + z appartenant `
a F, montrer
que
|(x + y) + z − (x + y + z)| ≤ C1 (2|x + y| + |z|)u ,
|x + (y + z) − (x + y + z)| ≤ C2 (|x| + 2|y + z|)u .
12. Laquelle des deux approximations de π,
π = 4
1 −
1
3
+
1
5
−
1
7
+
1
9
− . . .
,
π = 6
0.5 +
1
2
1
3
1
2
3
+
1 · 3
2 · 2
1
2!
1
5
1
2
5
+
1 · 3 · 5
2 · 2 · 2
1
3!
1
7
1
2
7
+ . . .
,
(2.40)
limite le mieux la propagation des erreurs d’arrondi ? En utilisant MATLAB,
comparer les r´ esultats obtenus en fonction du nombre de termes de la somme.
13. Analyser la stabilit´ e par rapport ` a la propagation des erreurs d’arrondi des deux
codes MATLAB pour ´ evaluer f (x) = (e
x − 1)/x quand |x| | 1 :
% Algorithme 1
if x == 0
f = 1;
else
f = (exp(x) - 1) / x;
end
% Algorithme 2
y = exp (x);
if y == 1
f = 1;
else
f = (y - 1) / log (y);
end
[Solution : le premier algorithme est impr´ ecis `
a cause des erreurs d’annulation,
tandis que le second (en pr´ esence du chiffre de garde) est stable et pr´ ecis.]
14. En arithm´ etique binaire, on peut montrer [Dek71] que l’erreur d’arrondi dans
la somme de deux nombres a et b, avec a ≥ b, est donn´ ee par
((a + b) − a) − b).
A partir de cette propri´ et´ e, une m´ ethode, appel´ ee somme compens´ ee de Kahan
a ´ et´ e propos´ ee pour calculer la somme de n termes ai de mani` ere ` a ce que les
erreurs d’arrondi se compensent. On d´ esigne par e1 l’erreur d’arrondi initiale, et
on pose e1 = 0 et s1 = a1. A la i-i` eme ´ etape, avec i ≥ 2, on ´ evalue yi = xi −ei−1,
la somme est mise `
a jour en posant si = si−1 + yi et la nouvelle erreur d’arrondi
est donn´ ee par ei = (si − si−1) − yi. Impl´ ementer cet algorithme dans MATLAB
et v´ erifier sa pr´ ecision en r´ e´ evaluant la seconde expression de (2.40).
2 Les fondements du calcul scientifique
[Indication : consid´ erer la donn´ ee initiale perturb´ ee ˜
I0 = I0 + µ0 et ´ etudier la
propagation de l’erreur µ0 dans (2.39).]
10. D´ emontrer (2.37).
[Solution : remarquer que
| x + y − (x + y)|
|x + y|
≤
| x + y − (f l(x) + f l(y))|
|x + y|
+
| f l(x) − x + f l(y) − y|
|x + y|
,
et appliquer (2.36) et (2.35).]
11. Etant donn´ e x, y, z ∈ F avec x + y, y + z, x + y + z appartenant `
a F, montrer
que
|(x + y) + z − (x + y + z)| ≤ C1 (2|x + y| + |z|)u ,
|x + (y + z) − (x + y + z)| ≤ C2 (|x| + 2|y + z|)u .
12. Laquelle des deux approximations de π,
π = 4
1 −
1
3
+
1
5
−
1
7
+
1
9
− . . .
,
π = 6
0.5 +
1
2
1
3
1
2
3
+
1 · 3
2 · 2
1
2!
1
5
1
2
5
+
1 · 3 · 5
2 · 2 · 2
1
3!
1
7
1
2
7
+ . . .
,
(2.40)
limite le mieux la propagation des erreurs d’arrondi ? En utilisant MATLAB,
comparer les r´ esultats obtenus en fonction du nombre de termes de la somme.
13. Analyser la stabilit´ e par rapport ` a la propagation des erreurs d’arrondi des deux
codes MATLAB pour ´ evaluer f (x) = (e
x − 1)/x quand |x| | 1 :
% Algorithme 1
if x == 0
f = 1;
else
f = (exp(x) - 1) / x;
end
% Algorithme 2
y = exp (x);
if y == 1
f = 1;
else
f = (y - 1) / log (y);
end
[Solution : le premier algorithme est impr´ ecis `
a cause des erreurs d’annulation,
tandis que le second (en pr´ esence du chiffre de garde) est stable et pr´ ecis.]
14. En arithm´ etique binaire, on peut montrer [Dek71] que l’erreur d’arrondi dans
la somme de deux nombres a et b, avec a ≥ b, est donn´ ee par
((a + b) − a) − b).
A partir de cette propri´ et´ e, une m´ ethode, appel´ ee somme compens´ ee de Kahan
a ´ et´ e propos´ ee pour calculer la somme de n termes ai de mani` ere ` a ce que les
erreurs d’arrondi se compensent. On d´ esigne par e1 l’erreur d’arrondi initiale, et
on pose e1 = 0 et s1 = a1. A la i-i` eme ´ etape, avec i ≥ 2, on ´ evalue yi = xi −ei−1,
la somme est mise `
a jour en posant si = si−1 + yi et la nouvelle erreur d’arrondi
est donn´ ee par ei = (si − si−1) − yi. Impl´ ementer cet algorithme dans MATLAB
et v´ erifier sa pr´ ecision en r´ e´ evaluant la seconde expression de (2.40).
