Kondition der Addition

Wir haben in der Stabilitätsanalyse gesehen, dass die Addition für kleine Störungen der Eingangsdaten große Fehler im Ergebnis bekommen kann.

Wir betrachten Störungen in der Größenordnung der Maschinengenauigkeit:

import numpy

eps = numpy.finfo(float).eps

Eine Funktion f beschreibt die Addition:

def f(a,b):
    return a+b

Die Fehlerverstärkung an der Stelle a berechnen wir als:

def verstaerkung(f,a,b):
    fexakt = f(a,b)
    fgestoert = f(a+eps,b)
    return abs(fgestoert - fexakt) / fexakt * abs(a) / eps

und sehen, dass für bestimmte Wahlen von a und b (b ≈ -a) die Fehlerverstärkung sehr groß wird:

print verstaerkung(f,1,2)
print verstaerkung(f,1,-2)
print verstaerkung(f,1,-1+eps)