Numerische Stabilität

Im mathematischen Teilfeld der numerischen Analyse ist numerische Stabilität ein wünschenswertes Eigentum von numerischen Algorithmen. Die genaue Definition der Stabilität hängt vom Zusammenhang ab, aber es wird aus der Genauigkeit des Algorithmus abgeleitet.

Ein entgegengesetztes Phänomen ist Instabilität. Gewöhnlich würden sich Algorithmen der richtigen Lösung in der Grenze nähern, wenn es keine Runde - von oder Stutzungsfehler gäbe, aber je nachdem die spezifische rechenbetonte Methode, Fehler statt des gedämpften vergrößert werden können, den Fehler verursachend, exponential zu wachsen.

Manchmal kann eine einzelne Berechnung auf mehrere Weisen erreicht werden, von denen alle in Bezug auf ideale reelle Zahlen oder komplexe Zahlen, aber in der Praxis wenn durchgeführt, auf verschiedenen Ergebnissen des Ertrags von Digitalcomputern algebraisch gleichwertig sind. Einige Berechnungen könnten Annäherungsfehler dämpfen, die vorkommen; andere könnten solche Fehler vergrößern. Berechnungen, die, wie man beweisen kann, Annäherungsfehler nicht vergrößern, werden numerisch stabil genannt. Eine der allgemeinen Aufgaben der numerischen Analyse soll versuchen, Algorithmen auszuwählen, die robust sind - das heißt, haben gute numerische Stabilität unter anderen wünschenswerten Eigenschaften.

Beispiel

Als ein Beispiel eines nicht stabilen Algorithmus, denken Sie die Aufgabe, eine Reihe von 100 Zahlen hinzuzufügen. Um Dinge zu vereinfachen, nehmen Sie an, dass unser Computer nur zwei Ziffern der Präzision hat (zum Beispiel, können Zahlen als 2.3, 77, 100, 110, 120, usw., aber nicht 12.3 oder 177 vertreten werden).

Die naive Weise zu tun würde das der folgende sein:

fungieren Sie sumArray (Reihe) ist

lassen Sie theSum = 0

weil jedes Element in der Reihe tut

lassen Sie theSum = theSum + Element

Ende für

geben Sie theSum zurück

beenden Sie Funktion </Code>

Das sieht angemessen aus, aber nehmen Sie an, dass das erste Element in der Reihe 1.0 war und die anderen 99 Elemente 0.01 waren. In der genauen Arithmetik würde die Antwort 1.99 sein. Jedoch, auf unserem zweistelligen Computer, einmal die 1.0 wurde in die Summe-Variable hinzugefügt, in 0.01 beitragend, würde keine Wirkung auf die Summe haben, und so würde die Endantwort 1.0 - nicht eine sehr gute Annäherung der echten Antwort sein. Außerdem sehen wir, dass der Algorithmus von der Einrichtung von Elementen innerhalb der Reihe im Gegensatz zur genauen Arithmetik abhängt.

Ein stabiler Algorithmus würde zuerst die Reihe durch die absoluten Werte der in aufsteigender Reihenfolge Elemente sortieren. Das stellt sicher, dass die an der Null am nächsten Zahlen zuerst in Betracht gezogen werden. Sobald diese Änderung vorgenommen wird, werden alle 0.01 Elemente hinzugefügt, 0.99 gebend, und dann wird das 1.0 Element hinzugefügt, ein rund gemachtes Ergebnis 2.0 - eine viel bessere Annäherung des echten Ergebnisses nachgebend.

Schicken Sie rückwärts, und gemischte Stabilität nach

Es gibt verschiedene Weisen, das Konzept der Stabilität zu formalisieren. Die folgenden Definitionen von fortgeschrittenen, rückwärts, und gemischte Stabilität werden häufig in der numerischen geradlinigen Algebra verwendet.

Denken Sie, dass das Problem durch den numerischen Algorithmus als eine Funktion gelöst wird, die die Daten zur Lösung kartografisch darstellt. Das Ergebnis des Algorithmus, sagen *, wird gewöhnlich von der "wahren" Lösung abgehen. Die Hauptursachen des Fehlers sind - vom Fehler und Stutzungsfehler rund. Der Vorwärtsfehler des Algorithmus ist der Unterschied zwischen dem Ergebnis und der Lösung; in diesem Fall. Der rückwärts gerichtete Fehler ist der kleinste solcher Δ dass; mit anderen Worten erzählt der rückwärts gerichtete Fehler uns, welches Problem der Algorithmus wirklich behoben hat. Der nachschicken und rückwärts gerichtete Fehler sind durch die Bedingungszahl verbunden: Der Vorwärtsfehler ist höchstens so im Umfang groß wie die mit dem Umfang des rückwärts gerichteten Fehlers multiplizierte Bedingungszahl.

In vielen Fällen ist es natürlicher, den Verhältnisfehler zu denken

:

statt des absoluten Fehlers Δ.

Wie man

sagt, ist der Algorithmus rückwärts stabil, wenn der rückwärts gerichtete Fehler für alle Eingänge klein ist. Natürlich, "klein" ist ein Verhältnisbegriff, und seine Definition wird vom Zusammenhang abhängen. Häufig wollen wir den Fehler, derselben Ordnung wie, oder vielleicht nur einige Größenordnungen zu sein, die größer sind als, die Einheit herum - davon.

Die übliche Definition der numerischen Stabilität verwendet ein mehr Gesamtkonzept, genannt gemischte Stabilität, die den Vorwärtsfehler und den rückwärts gerichteten Fehler verbindet. Ein Algorithmus ist in diesem Sinn stabil, wenn es ein nahe gelegenes Problem ungefähr behebt, d. h., wenn dort ein solcher Δ besteht, dass sowohl Δ klein ist als auch klein ist. Folglich ist ein rückwärts gerichteter stabiler Algorithmus immer stabil.

Ein Algorithmus ist vorwärts stabil, wenn sein durch die Bedingungszahl des Problems geteilter Vorwärtsfehler klein ist. Das bedeutet, dass ein Algorithmus vorwärts stabil ist, wenn er einen Vorwärtsfehler des einem rückwärts gerichteten stabilen Algorithmus ähnlichen Umfangs hat.

Fehlerwachstum

Nehmen Sie an, dass das einen anfänglichen Fehler anzeigt und den Umfang eines Fehlers nach nachfolgenden Operationen vertritt. Wenn, wo ein unveränderlicher Unabhängiger dessen ist, dann, wie man sagt, ist das Wachstum des Fehlers geradlinig. Wenn, für einige, dann wird das Wachstum des Fehlers Exponential-genannt.

Stabilität in numerischen Differenzialgleichungen

Die obengenannten Definitionen sind in Situationen besonders wichtig, wo Stutzungsfehler nicht wichtig sind. In anderen Zusammenhängen, zum Beispiel wenn man Differenzialgleichungen löst, wird eine verschiedene Definition der numerischen Stabilität verwendet.

In numerischen gewöhnlichen Differenzialgleichungen bestehen verschiedene Konzepte der numerischen Stabilität, zum Beispiel A-Stabilität. Sie sind mit einem Konzept der Stabilität im dynamischen Systemsinn, häufig Stabilität von Lyapunov verbunden. Es ist wichtig, eine stabile Methode zu verwenden, wenn man eine steife Gleichung löst.

Und doch wird eine andere Definition in numerischen teilweisen Differenzialgleichungen verwendet. Ein Algorithmus, für eine geradlinige teilweise Entwicklungsdifferenzialgleichung zu lösen, ist stabil, wenn die Gesamtschwankung der numerischen Lösung in einer festen Zeit begrenzt bleibt, als die Schritt-Größe zur Null geht. Der Lockere Gleichwertigkeitslehrsatz stellt fest, dass ein Algorithmus zusammenläuft, wenn es entspricht und (in diesem Sinn) stabil ist. Stabilität wird manchmal durch das Umfassen numerischer Verbreitung erreicht. Numerische Verbreitung ist ein mathematischer Begriff, der sicherstellt, dass roundoff und andere Fehler in der Berechnung Ausbreitung herausbekommen und nicht stimmen, um die Berechnung zu veranlassen, "zu explodieren". Stabilitätsanalyse von von Neumann ist ein allgemein verwendetes Verfahren für die Stabilitätsanalyse von begrenzten Unterschied-Schemas in Bezug auf geradlinige teilweise Differenzialgleichungen. Diese Ergebnisse halten für nichtlinearen PDEs nicht, wo eine allgemeine, konsequente Definition der Stabilität durch viele Eigenschaften kompliziert wird, die in geradlinigen Gleichungen fehlen.

Siehe auch

  • Algorithmen, um Abweichung zu berechnen
  • Verwirrungstheorie
  • Nicholas J. Higham, Genauigkeit und Stabilität von Numerischen Algorithmen, Gesellschaft der Industriellen und Angewandten Mathematik, Philadelphias, 1996. Internationale Standardbuchnummer 0-89871-355-2.
  • Richard L. Burden und J. Douglas Faires, Numerische Analyse 8. Ausgabe, Bäche/Kohl von Thomson, die Vereinigten Staaten, 2005. Internationale Standardbuchnummer 0-534-39200-8

Source is a modification of the Wikipedia article Numerical stability, licensed under CC-BY-SA. Full list of contributors here.
Spencer Cavendish, der 8. Herzog Devonshires / Victor Cavendish, der 9. Herzog Devonshires
Impressum & Datenschutz