Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

3.1Fehlerarten

Bei numerischen Berechnungen spielen verschiedene Fehlerarten eine Rolle:

Dabei enthält der Datenfehler praktisch immer auch Rundungsfehler, da die Daten als Gleitkommazahlen an den Algorithmus übergeben werden müssen.

Obwohl die numerische Mathematik sich auf die (Vermeidung der) Auswirkungen von Rundungsfehlern konzentriert, spielen auch die anderen Fehlerarten und -quellen eine Rolle. Insbesondere zielt man gar nicht auf maximale Genauigkeit (was mit hohem Rechenaufwand verbunden ist), sondern nur darauf, dass die Auswirkungen von Verfahrens- und Rundungsfehlern nicht größer sind als zwangsläufige Abweichungen aus Daten- und Modellfehlern.

3.2Beispiel: Volumen der Erde

Wollen das Volumen der Erde aus gegebenem Radius rr (in Meter) mittels Kugelvolumen

V=43πr3V=\frac{4}{3}\,\pi\,r^3

berechnen.

Auftretende Fehler:

Aufgrund der unvermeidlichen großen Modell- und Datenfehler gibt es keinen Grund die Berechnungen mit sehr großer Genauigkeit auszuführen. Solange die Rundungsfehler und deren Auswirkungen auf die einzelnen Rechenoperationen kleiner als die Modell- und Datenfehler bleiben, ist die Genauigkeit groß genug. Hier kann sogar mit 3.14 statt π\pi gerechnet werden (Verfahrensfehler!), da die dadurch verursachten Abweichungen höchstens im Zentimeterbereich liegen.

3.3Bewertung von Algorithmen

Gegeben ist ein Algorithmus, der “ein Problem löst”. Genauer: Es gibt eine Menge XRdX\subseteq\bbR^d von möglichen Eingaben, eine Menge YRY\subseteq\bbR von möglichen Ausgaben und eine (exakte) Lösungsabbildung f:XYf:X\to Y.

Zentrale Frage: Wie hängt der Ausgabefehler vom Eingabefehler ab?

Dabei nehmen wir an, dass es eine unbekannte exakte Eingabe xXx\in X gibt und eine bekannte mess- und rundungsfehlerbehaftete Eingabe x~\tilde{x}. Der relative Eingabefehler ist dann

x1x~1x1++xdx~dxd.\left|\frac{x_1-\tilde{x}_1}{x_1}\right|+\cdots+\left|\frac{x_d-\tilde{x}_d}{x_d}\right|.

Die numerische Auswertung von f(x)f(x) erfolgt durch einen (potentiell fehlerhaften) Algorithmus f~:XY\tilde{f}:X\to Y, der auf die fehlerbehafteten Daten x~\tilde{x} angewendet wird. Für den relativen Ausgabefehler erhalten wir somit

f(x)f~(x~)f(x).\frac{|f(x)-\tilde{f}(\tilde{x})|}{|f(x)|}.

Ziel einer Fehleranalyse sind Abschätzungen der Form

f(x)f~(x~)f(x)g(δ),\frac{|f(x)-\tilde{f}(\tilde{x})|}{|f(x)|}\leq g(\delta),

wobei

i=1dxix~ixiδ\sum_{i=1}^d\left|\frac{x_i-\tilde{x}_i}{x_i}\right|\leq\delta

gelten soll. Die Zahl δ\delta ist also eine obere Schranke an den zu erwartenden Datenfehler. Praktisch wird δ\delta mindestens so groß sein wie das Maschinenepsilon.

Die Funktion gg ist meistens ein Monom g(δ)=cδpg(\delta)=c\,\delta^p mit p>0p>0 und einer (hoffentlich kleinen) Konstante c>0c>0. Je größer pp, desto unempfindlicher reagiert der untersuchte Algorithmus auf Datenfehler. In jedem Fall muss limδ0g(δ)=0\lim_{\delta\to 0}g(\delta)=0 gelten, damit die Fehlerabschätzung eine sinnvolle Aussage liefert (“Wenn wir den Datenfehler kleiner machen, wird auch der Lösungsfehler kleiner”).

Zentrale Werkzeuge für die Herleitung solcher Abschätzungen sind die Kondition der Abbildung ff und die Stabilität des Algorithmus f~\tilde{f}, welche im Folgenden eingeführt werden.

3.4Kondition

Einfaches Beispiel: Berechnung des Schnittpunktes zweier Geraden (IDVID 320).

Die Kondition hängt nicht nur von ff selbst, sondern auch von der konkreten Eingabe xx ab!

Die Kondition eines Problems bzw. der entsprechenden Abbildung ff kann man in Zahlen fassen. Für die konkrete Definition dieser Konditionszahl gibt es verschiedene Ansätze. Wir wählen zunächst den folgenden:

Der hier vorgestellte Konditionsbegriff führt immer zu linearen Fehlerzusammenhängen gg in (4). Dieser Ansatz ist in der Literatur auch als differentielle Fehleranalyse oder Störungstheorie 1. Ordnung zu finden.

Schlecht koniditionierte Probleme sind in der Praxis (leider) häufig anzutreffen, z.B. das bei der Computertomografie zu lösende mathematische Problem (siehe Veranstaltung zum wissenschaftlichen Rechnen).

3.5Beispiele zur Kondition

3.5.1Multiplikation

Betrachten

f:R2R,f(x1,x2):=x1x2.f:\bbR^2\to\bbR,\qquad f(x_1,x_2):=x_1\,x_2.

Für x10x_1\neq 0 und x20x_2\neq 0 erhalten wir κ(x)=1\kappa(x)=1. Der Ausgabefehler ist als höchstens so groß wie der Eingabefehler.

Für x1=0x_1=0 oder x2=0x_2=0 können wir nur absolute Fehler betrachten:

f(x)f(x~)=x~1x~2.|f(x)-f(\tilde{x})|=|\tilde{x}_1|\,|\tilde{x}_2|.

Ist z.B. x1=0x_1=0 und x2x_2 ist sehr groß, also auch x~2\tilde{x}_2 sehr groß, so kann das Produkt der gestörten Eingaben erheblich vom tatsächlichen Produkt 0 abweichen. Wähle z.B. x1=105x_1=10^{-5} und x2=x~2=106x_2=\tilde{x}_2=10^6. Dann ist das berechnete Produkt 10 statt 0. Praktisch ist dieser Fall aber selten von Interesse, da die Null exakt als Gleitkommazahl darstellbar ist. Dennoch ist an dieser Stelle Vorsicht geboten!

a = 0.1 * 0.1 - 0.01
b = 10 ** 20
print(a * b)
173.4723475976807

3.5.2Division

Betrachten

f:R×(R{0})R,f(x1,x2):=x1x2.f:\bbR\times(\bbR\setminus\{0\})\to\bbR,\qquad f(x_1,x_2):=\frac{x_1}{x_2}.

Für x10x_1\neq 0 erhalten wir κ(x)=1\kappa(x)=1. Der Ausgabefehler ist als höchstens so groß wie der Eingabefehler.

Für x1=0x_1=0 können wir nur absolute Fehler betrachten:

f(x)f(x~)=x~1x~2.|f(x)-f(\tilde{x})|=\frac{|\tilde{x}_1|}{|\tilde{x}_2|}.

Die daraus zu ziehenden Schlüsse entsprechen denen bei der Multiplikation.

a = 0.1 * 0.1 - 0.01
b = 10 ** (-20)
print(a / b)
173.4723475976807

3.5.3Quadratwurzel

Betrachten

f:[0,)R,f(x):=x.f:[0,\infty)\to\bbR,\qquad f(x):=\sqrt{x}.

Für x0x\neq 0 erhalten wir κ(x)=12\kappa(x)=\frac{1}{2}. Der Ausgabefehler ist also kleiner als der Eingabefehler.

Für x=0x=0 erhalten wir den absoluten Fehler

f(x)f(x~)=x~=x~0,|f(x)-f(\tilde{x})|=\sqrt{\tilde{x}}=\sqrt{\tilde{x}-0},

der bei x~<1\tilde{x}<1 stets größer ist als der Eingabefehler x~\tilde{x}. Beachte hier, dass Eingabefehler x~<0\tilde{x}<0 zu undefiniertem Ergebnis bzw. komplexen Zahlen führen!

a = 0.01 - 0.1 * 0.1
print(a ** 0.5)
(8.064844237971058e-26+1.3170890159654386e-09j)
from numpy import sqrt

a = 0.01 - 0.1 * 0.1
print(sqrt(a))
nan
/tmp/ipykernel_25646/1240944823.py:4: RuntimeWarning: invalid value encountered in sqrt
  print(sqrt(a))

3.5.4Addition und Subtraktion

Betrachten

f:R2R,f(x1,x2):=x1+x2.f:\bbR^2\to\bbR,\qquad f(x_1,x_2):=x_1+x_2.

Für x10x_1\neq 0 und x20x_2\neq 0 erhalten wir

κ(x)=max{x1,x2}x1+x2.\kappa(x)=\frac{\max\{|x_1|,|x_2|\}}{|x_1+x_2|}.

Haben x1x_1 und x2x_2 gleiches Vorzeichen, dann ist κ(x)1\kappa(x)\leq 1. Haben x1x_1 und x2x_2 jedoch unterschiedliches Vorzeichen, so kann x1+x2|x_1+x_2| klein sein, obwohl weder x1|x_1| noch x2|x_2| klein ist. In diesem Fall ist κ\kappa sehr groß, die Addition als schlecht konditioniert! Diese Situation wird als Auslöschung bezeichnet.

Beispiel: Rechnen mit 5 Dezimalstellen, x1=0.120587x_1=0.120587, x2=0.120942x_2=-0.120942. Durch Runden der Eingabewerte entsteht ein Eingabefehler der Größenordnung 10-4. Der Fehler im Ergebnis liegt jedoch bei 10-2, ist also deutlich größer (Details: IDVID 340).

Weiteres Beispiel: Berechne die Differenz aba-b, wobei statt aa und bb die auf 64-Bit-Gleitkommazahlen gerundeten Werte verwendet werden.

a = 1 + 11e-15
b = 1 + 10e-15
print(f'a = {a:.20f}')
print(f'b = {b:.20f}')
a = 1.00000000000001110223
b = 1.00000000000000999201

Mit exakten Werten erhalten wir ab=1015a-b=10^{-15}. Der Eingabefehler ist kleiner als 10-14, während der Ausgabefehler größer als 0.11 ist (IDVID 345). Somit weicht die tatsächliche Differenz um mehr als 11 Prozent vom berechneten Wert ab. Beachte hierbei: Wir haben exakt gerechnet, das Ergebnis also nicht gerundet. Ursache für den großen Fehler ist somit nicht ein konkreter Algorithmus (z.B. addiere exakt, runde dann auf 64-Bit-Gleitkommazahl), sondern das Problem selbst in Kombination mit leicht gestörten Eingabewerten. Berechnen wir die Differenz algorithmisch (also mit zusätzlichem Runden des Ergebnisses), so erhalten wir

c = a - b
print(f'a - b = {c}')
print( 'exakt = 1.0000000000000000e-15')
a - b = 1.1102230246251565e-15
exakt = 1.0000000000000000e-15

Nur die Ziffer vor dem Komma ist korrekt!

print(1 + c)         # Fehler in c nicht relevant
print(c * 10 ** 15)  # Fehler in c relevant
1.000000000000001
1.1102230246251565

3.5.5Sinus

Betrachten

f:R[1,1],f(x):=sinx.f:\bbR\to[-1,1],\qquad f(x):=\sin x.

Für xkπx\neq k\,\pi, kZk\in\bbZ, erhalten wir

κ(x)=xcosxsinx.\kappa(x)=\frac{|x|\,|\cos x|}{|\sin x|}.

Für xx in der Nähe von Vielfachen von π\pi wird die Kondition also beliebig groß, während ff z.B. in der Nähe von π2\frac{\pi}{2} sehr gut konditioniert ist.

from math import sin

def print_sin(a, b):

    sina = sin(a)
    sinb = sin(b)

    print(sina)
    print(sinb)

    print(f'Eingabefehler: {abs((a - b) / a)}')
    print(f'Ausgabefehler: {abs((sina - sinb) / sina)}')

print_sin(
    3.141593,
    3.141593123456789
)
-3.464102066193935e-07
-4.6986699585547026e-07
Eingabefehler: 3.929751219718377e-08
Ausgabefehler: 0.3563890060887287

Alle Mantissenziffern des für 3.141593 aus dem fehlerbehafteten Wert 3.141593123456789 berechneten Ergebnisses sind falsch, nur der Exponent stimmt. Der relative Fehler liegt bei 34 Prozent. Die Konditionszahl ist κ(3.141593)9068997\kappa(3.141593)\approx 9068997. Beachte, dass die absoluten Fehler bei Eingabe und Ausgabe dennoch etwa gleich groß sind, das Ergebnis je nach Kontext also durchaus brauchbar sein kann.

print_sin(
    1.570796,
    1.570796123456789
)
0.9999999999999466
0.9999999999999793
Eingabefehler: 7.8595049270588e-08
Ausgabefehler: 3.2751579226443866e-14

Hier stimmen fast alle Mantissenziffern trotz gleichem absoluten Fehler in der Eingabe wie zuvor (der relative Eingabefehler ist hier sogar doppelt so groß). Der relative Ausgabefehler liegt im Bereich 10-13, ist also im Größenordnungen kleiner als der relative Eingabefehler.

3.5.6Quadratische Gleichung

Betrachten das Lösen quadratischer Gleichungen x2+px+q=0x^2+p\,x+q=0, wobei wir nur die kleinere der beiden möglichen Lösungen berechnen möchten. Haben mit D(f):={(p,q)R2:p2>4q}D(f):=\{(p,q)\in\bbR^2:p^2>4\,q\} also

f:D(f)R,f(x):=p2p24q.f:D(f)\to\bbR,\qquad f(x):=-\frac{p}{2}-\sqrt{\frac{p^2}{4}-q}.

Für x0x\neq 0 und f(p,q)0f(p,q)\neq 0 (also p>0p>0 oder q0q\neq 0) erhalten wir

κ(p,q)=max{p2p24q,p2+p24q2p24q}.\kappa(p,q)=\max\left\{\frac{\frac{|p|}{2}}{\sqrt{\frac{p^2}{4}-q}},\frac{\left|-\frac{p}{2}+\sqrt{\frac{p^2}{4}-q}\right|}{2\,\sqrt{\frac{p^2}{4}-q}}\right\}.

Für q0q\leq 0 gilt somit κ(p,q)1\kappa(p,q)\leq 1, also gute Kondition. Für q>0q>0 wächst die Kondition mit qq und wird für qp24q\to\frac{p^2}{4} beliebig groß. Das Problem ist für große qq also sehr schlecht konditioniert (Details und grafische Interpretation: IDVID 350).

3.6Stabilität

Ein Algorithmus heißt also stabil, wenn er das tut, was man von ihm erwartet. Für die Formulierung präziserer Aussagen über den erwarteten Zusammenhang zwischen f~(x)\tilde{f}(x) und f(x)f(x) gibt es verschiedene Ansätze. Wir gehen hier nur auf die beiden am weitesten verbreitetenen ein: Vorwärtsstabiliät und Rückwärtsstabilität.

Vorwärtsstabilität sichert also, dass der durch den verwendeten Algorithmus verursachte Fehler in der Größenordnung des auch bei exakter Rechnung nicht zu vermeidenden Fehlers liegt.

Für konkrete Algorithmen lassen sich Aussagen zur Vorwärtsstabilität oft nur schwer herleiten. Deshalb verwendet man fast immer den folgenden alternativen Stabilitätsbegriff.

Rückwärtsstabilität sichert also, dass die Ausgabe des Algorithmus der exakten Rechnung mit einer Eingabe entspricht, die im Rahmen der Größenordnung des ohnehin vorhandenen Eingabefehlers ebenfalls in Frage kommt.

Um Rückwärtsstabilität zu zeigen müssen zwei Fragen beantwortet werden:

  1. Gibt es zu jeder Eingabe xx ein passendes x^\hat{x}?

  2. Wie groß ist der Abstand zwischen xx und zugehörigem x^\hat{x} höchstens?

Beweis: IDVID 360.

3.7Beispiele für Stabilitätsanalysen

3.7.1Addition/Subtraktion

Nach IEEE 754 erfolgt die Addition zweier Gleitkommazahlen nach folgendem Algorithmus:

Sind x1x_1, x2x_2 die beiden Summanden und ist ε\varepsilon das Maschinenepsilon, so liefert der Algorithmus das Ergebnis

(1+ϱ)(x1+x2)(1+\varrho)\,(x_1+x_2)

für ein ϱ\varrho mit ϱε|\varrho|\leq\varepsilon.

Der einfache Algorithmus erlaubt eine Vorwärtsanalyse:

f(x)f~(x)f(x)=x1+x2(1+ϱ)(x1+x2)x1+x2=ρε.\left|\frac{f(x)-\tilde{f}(x)}{f(x)}\right| =\left|\frac{x_1+x_2-(1+\varrho)\,(x_1+x_2)}{x_1+x_2}\right| =|\rho|\leq\varepsilon.

Die Kondition der Addition erfüllt κ(x)12\kappa(x)\geq\frac{1}{2} (IDVID 370). Wir erhalten somit

f(x)f~(x)f(x)2κ(x)ε.\left|\frac{f(x)-\tilde{f}(x)}{f(x)}\right| \leq 2\,\kappa(x)\,\varepsilon.

Da der zu erwartende relative Eingabefehler praktisch immer größer als 2ε2\,\varepsilon sein wird (Rundung jedes Summanden auf Gleitkommazahl), ist der untersuchte Algorithmus zur Addition als vorwärtsstabil anzusehen.

Zu Demonstrationszwecken untersuchen wir auch die Rückwärtsstabilität. Haben

f~(x1,x2)=(1+ϱ)(x1+x2)=(1+ϱ)x1+(1+ϱ)x2=f((1+ϱ)x1,(1+ϱ)x2),\begin{align} \tilde{f}(x_1,x_2) &=(1+\varrho)\,(x_1+x_2)\\ &=(1+\varrho)\,x_1+(1+\varrho)\,x_2\\ &=f\bigl((1+\varrho)\,x_1,(1+\varrho)\,x_2\bigr), \end{align}

mit x^1:=(1+ϱ)x1\hat{x}_1:=(1+\varrho)\,x_1, x^2:=(1+ϱ)x2\hat{x}_2:=(1+\varrho)\,x_2 also f~(x)=f(x^)\tilde{f}(x)=f(\hat{x}). Der relative Fehler beim Ersetzen von xx durch x^\hat{x} ist

x1x^1x1+x2x^2x2=x1(1+ϱ)x1x1+x2(1+ϱ)x2x2=2ϱ2ε.\begin{align} \left|\frac{x_1-\hat{x}_1}{x_1}\right|+\left|\frac{x_2-\hat{x}_2}{x_2}\right| &=\left|\frac{x_1-(1+\varrho)\,x_1}{x_1}\right|+\left|\frac{x_2-(1+\varrho)\,x_2}{x_2}\right|\\ &=2\,|\varrho|\leq 2\,\varepsilon. \end{align}

Da die zu erwartenden Eingabefehler größer als 2ε2\,\varepsilon sein werden, ist der Algorithmus als rückwärtsstabil anzusehen.

3.7.2Lange Summen

Die Summe von nn Zahlen soll berechnet werden:

f:RnR,f(x):=i=1nxi.f:\bbR^n\to\bbR,\qquad f(x):=\sum_{i=1}^nx_i.

Untersuchen dazu zunächst den einfachsten Algorithmus:

Mit Maschinenepsilon ε\varepsilon und den aus den Rundungsschritten entstehenden Abweichungen ϱ2,,ϱn\varrho_2,\ldots,\varrho_n wird also

((((x1+x2)(1+ϱ2)+x3)(1+ϱ3)+)+xn)(1+ϱn)\Bigl(\cdots\Bigl(\bigl((x_1+x_2)\,(1+\varrho_2)+x_3\bigr)\,(1+\varrho_3)+\cdots\Bigr)\cdots+x_n\Bigr)\,(1+\varrho_n)

berechnet. Der Algorithmus ist für große nn nicht rückwärtsstabil (und auch nicht vorwärtstabil). Für die Konstante in der Definition der Rückwärtsstabilität erhalten wir c=nc=n (IDVID 375).

Betrachten nun folgenden alternativen Algorithmus für Summen mit n=2mn=2^m Summanden:

In der letzten Iteration ist nur noch eine Summe mit zwei Summanden zu berechnen, welche das Endergebnis darstellt. Bezeichnen wir die bei den Rundungsschritten entstehenden Abweichungen mit ϱk,l\varrho_{k,l}, k=0,,m1k=0,\ldots,m-1, l=1,,2mk1l=1,\ldots,2^{m-k-1}, so entspricht der Algorithmus folgender Formel:

((((x1+x2)(1+ϱ0,1)+(x3+x4)(1+ϱ0,2))(1+ϱ1,1)+))(1+ϱm1,1)\Bigl(\cdots\Bigl(\bigl((x_1+x_2)\,(1+\varrho_{0,1})+(x_3+x_4)\,(1+\varrho_{0,2})\bigr)\,(1+\varrho_{1,1})+\cdots\Bigr)\cdots\Bigr)\,(1+\varrho_{m-1,1})

Für die Konstante in der Definition der Rückwärtsstabilität erhalten wir c=mc=m (IDVID 380). Der Algorithmus kann also auch für große nn noch als rückwärtsstabil (und somit auch vorwärtsstabil) angesehen werden, da m=log2nm=\log_2 n nur sehr langsam mit nn wächst.

3.7.3Quadratische Gleichung

Wir untersuchen zwei Algorithmen zur Berechnung der kleineren der beiden Lösungen der quadratischen Gleichung x2+px+q=0x^2+p\,x+q=0 auf Stabilität.

3.7.3.1Direktes Auswerten der Lösungsformel

Vorwärts- und auch Rückwärtsanalyse sind hier recht mühsam. Mindestens die Rückwärtsanalyse ist mit unseren Mitteln aber machbar. Wählen einen anderen Weg: Betrachten jeden Schritt separat und schließen aus er Kondition der Einzelschritte auf die (Nicht-)Stabilität des Gesamtalgorithmus.

Der Algorithmus ist also nur stabil, wenn gilt:

qp24andq0 if p>0.q\ll\frac{p^2}{4}\quad\text{and}\quad |q|\gg 0\text{ if }p>0.

3.7.3.2Umweg über Satz von Vieta

Wollen einen Algorithmus, der für p0p\leq 0 bei betragskleinem qq stabil ist. Der Satz von Vieta liefert x1x2=qx_1\,x_2=q für die beiden Lösungen der quadratischen Gleichung. Wir können also zunächst die größere Lösung berechnen und dann daraus die kleinere. Die ersten 5 Schritte bleiben unverändert:

Für p0p\leq 0 ist Schritt 6 nun gut Konditioniert (unabhängig vom Wert von qq). Auch Schritt 7 ist gut konditioniert solange das Ergebnis aus Schritt 6 nicht zu nah bei 0 liegt. Allerdings ist Schritt 6 für p>0p>0 und q0q\approx 0 nun schlecht konditioniert. Der Algorithmus ist also nur stabil, wenn gilt:

qp24andq0 if p>0.q\ll\frac{p^2}{4}\quad\text{and}\quad |q|\gg 0\text{ if }p>0.

3.7.3.3Kombinierter Algorithmus

Um die kleinere Lösung einer quadratischen Gleichung stabil zu erhalten, oder auch um beide Lösungen zu erhalten, sollten also erst die obigen Schritte 1 bis 5 ausgeführt werden. Anschließend ist zu unterscheiden:

Anschließend kann über die Beziehung x1x2=qx_1\,x_2=q (Vieta!) die andere Lösung berechnet werden.

Dieser Algorithmus ist stabil, wenn qp24q\ll\frac{p^2}{4}.

Die bei qp24q\approx\frac{p^2}{4} auftretende Instabilität aufgrund von Auslöschungseffekten spielt praktisch kaum eine Rolle. In diesem Fall sind beide Lösungen sehr nah beieinander. Sind beide Lösungen hinreichend weit von der Null entfernt, werden diese trotzdem korrekt berechnet, da dann nur der durch Auslöschung entstandene absolute Fehler relevant ist für den relativen Fehler in den Lösungen. Und dieser ist sehr klein. Liegen jedoch beide Lösungen nah bei Null, so überträgt sich der durch Auslöschung entstandene große relative Fehler auf den relativen Fehler der Lösungen.

3.8Gesamtfehler

Faustregel: Gute Kondition des Problems ff und Stabilität des Algorithmus f~\tilde{f} garantieren einen hinnehmbar kleinen Gesamtfehler. Schelchte Kondition oder fehlende Stabilität lassen keine brauchbaren Ergebnisse erwarten.

Beweis: IDVID 390.

Die Abschätzung zeigt, dass der Ausgabefehler um so kleiner wird, je kleiner der Eingabefehler ist (wenn κ(x~)\kappa(\tilde{x}) bei x~x\tilde{x}\to x beschränkt bleibt).

Verschiedene Formeln, die grob das Verhalten von Addition und Multiplikation bei ungenauen oder ungültigen Werten widergeben.

“Garbage In, Garbage Out” should not be taken to imply any sort of conservation law limiting the amount of garbage produced. Quelle: Randall Munroe, xkcd.com/2295