ameliorer les erreurs dans une somme

parisse
Messages : 5731
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

ameliorer les erreurs dans une somme

Message par parisse » sam. janv. 28, 2023 3:51 pm

session Xcas
Le programme est le suivant

Code : Tout sélectionner

Somme(l):={
  local x,s,c;
  s:=0.0;
  c:=0.0;
  for x in l do
    c += (x-((s+x)-s));
    s += x;
  fpour;
  return s+c;
}:;
Donc c devrait valoir 0 sans erreurs d’arrondis, avec les erreurs
d’arrondis, on a le premier calcul intervenant dans c, s+x qui donnera
une erreur de signe opposé à celui du calcul de s à la ligne suivante,
le 2ième calcul effectué (s+x)−s donne une erreur absolue en ε|x| au
pire (car c’est une erreur relative par rapport à (s+x)−s), et la
3ième erreur d’arrondi est négligeable (puisque la somme devrait
valoir 0). On a donc une erreur absolue sur s+c qui est au premier
ordre au pire en O(ε∑|x_i|), bien meilleure que la majoration
ε((n−1)|x_1|+(n−2)|x_2|+...+|x_n||) si on fait le calcul naivement.

Répondre