Anfangswertprobleme und Finite Differenzen für die Bildverarbeitung

Numerische Lösung von Anfangswertproblemen

Ein System von Differentialgleichungen erster Ordnung

10AWP_FiniteDifferenzen_1.gif

soll numerisch integriert werden. Die einfachste Varianten besteht in einem expliziten Euler-Verfahren. Man erhält es aus der formalen Integration der Differentialgleichung

10AWP_FiniteDifferenzen_2.gif

10AWP_FiniteDifferenzen_3.gif

Da 10AWP_FiniteDifferenzen_4.gif Die einfachste Annahme, 10AWP_FiniteDifferenzen_5.gif und 10AWP_FiniteDifferenzen_6.gif führt auf das explizite Euler-Verfahren.

10AWP_FiniteDifferenzen_7.gif

10AWP_FiniteDifferenzen_8.gif

Der Fehler kann aus der Taylor-Approximation mit 10AWP_FiniteDifferenzen_9.gif. Dieses Verfahren ist besonders einfach, weil man die Anfangswerte nur in f  einsetzn muß um 10AWP_FiniteDifferenzen_10.gif zu erhalten.

Eine andere Approximation des Integrals besteht darin  10AWP_FiniteDifferenzen_11.gif und 10AWP_FiniteDifferenzen_12.gif
anzusetzen. Damit erhält man das implizite Euler-Verfahren als

10AWP_FiniteDifferenzen_13.gif

Diese Berechungsvorschrift ist bereits deutlich komplizierter, da zur Bestimmung von 10AWP_FiniteDifferenzen_14.gif die Funktion f nach 10AWP_FiniteDifferenzen_15.gif aufgelöst werden muß. Falls f eine lineare Funktion ist, muß nur ein lineares Gleichungssystem gelöst werden. Der Fehler ist der selbe wie beim expliziten Euler-Verfahren.

Um einen kleineren Fehler zu erhalten, kann eine genauere Quadraturformel verwendet werden wie die Trapez-Regel

10AWP_FiniteDifferenzen_16.gif

10AWP_FiniteDifferenzen_17.gif

Auch hier muß ein nichtlineares Gleichungssystem gelöst werden um 10AWP_FiniteDifferenzen_18.gif zu erhalten. Eine Möglichkeit dies zu umgehen ist eine Kombination dieser  Formel mit dem expliziten Euler-Verfahren zum Euler-Heun Verfahren:

10AWP_FiniteDifferenzen_19.gif

10AWP_FiniteDifferenzen_20.gif

Der lokale Fehler der Methode ist durch 10AWP_FiniteDifferenzen_21.gif.

Diese Idee, sich mit einer Folge von Formeln immer genauerer Verfahren zu konnstruieren benutzen Runge-Kutta Verfahren

10AWP_FiniteDifferenzen_22.gif

10AWP_FiniteDifferenzen_23.gif

10AWP_FiniteDifferenzen_24.gif

10AWP_FiniteDifferenzen_25.gif

Die Koeffizienten 10AWP_FiniteDifferenzen_26.gif  werden üblicherweise in einer Tabelle, einem Butcher-Tableau zusammengefasst:

10AWP_FiniteDifferenzen_27.gif

Das Euler-Heun Verfahren hat dann das Butcher-Tableau

10AWP_FiniteDifferenzen_28.gif

und das klassische Runge-Kutta Verfahren:

10AWP_FiniteDifferenzen_29.gif

Neben diesen Einschritt-Verfahren, gibt es noch Mehrschritt-Verfahren, die eine höhere Genauigkeit durch genauerere Quadratur-Formeln und dem Ergebnissen vorheriger Schritte.

Die 10AWP_FiniteDifferenzen_30.gif können von Null verschieden sein für l>i, dann handelt es sich um ein implizites Runge-Kutta Verfahren.

Stabilität

Die Formeln zur genäherten Integration der Differentialgleichung sind bisher nur für einen einzelnen Schritt betrachtet worden. Da die Integrationsverfahren üblicherweise mehrfach angewendet werden um mehr als einen Schritt zu machen und über größere Intervalle als h zu integrieren, muß untersucht werden unter welchen Bedingungen eine Formel zur mehrfachen Anwendung geeignet ist.

Eine Stabilitätsanalyse versucht die Bedingungen zu bestimmen mit unter denen die Folge der numerischen Approximation 10AWP_FiniteDifferenzen_31.gif sich nicht zu weit von der Lösung entfernt. Dazu wird die Test-Gleichung

10AWP_FiniteDifferenzen_32.gif

betrachtet. Die exakte Lösung dieser Gleichung lautet

10AWP_FiniteDifferenzen_33.gif

Für das explizite Euler-Verfahren erhält man die Gleichunng

10AWP_FiniteDifferenzen_34.gif

mit der Lösung

10AWP_FiniteDifferenzen_35.gif

10AWP_FiniteDifferenzen_36.gif

10AWP_FiniteDifferenzen_37.gif

Das Verfahren ist nur für (1-h λ)<1 stabil.

Beim impliziten Euler-Verfahren erhält man die Gleichung

10AWP_FiniteDifferenzen_38.gif

10AWP_FiniteDifferenzen_39.gif

10AWP_FiniteDifferenzen_40.gif

mit der Lösung

10AWP_FiniteDifferenzen_41.gif

10AWP_FiniteDifferenzen_42.gif

10AWP_FiniteDifferenzen_43.gif

Das Verfahren ist für h λ>0 stabil.

Für das ebenfalls explizite Euler-Heun Verfahren erhält man

10AWP_FiniteDifferenzen_44.gif

10AWP_FiniteDifferenzen_45.gif

10AWP_FiniteDifferenzen_46.gif

10AWP_FiniteDifferenzen_47.gif

10AWP_FiniteDifferenzen_48.gif

Finite Differenzen

Beim Lösen von paritellen Differntialgleichungen der Bildverarbeitung bieten sich Finite Differenzen an, da die Bilder bereits auf einem regulären Gitter gesampelt sind. Man bedenke aber dabei, dass Finite Differnzen die Differntialgleichung approximieren und nicht die Lösung der Gleichung wie Finite Elemente. Daher besteht eine untere Grenze für die Genauigkeit der Lösung.  

Eine finite Differnzenappoximation für eine Ableitung gewinnt man üblicherweise indem man ein Interpolationspolynom konstruiert, diese Ableitet und dann an den gewünschten Gitterpunkten auswertet.

Für die erste Ableitung kann man aus dem Gitterpunkt und seine beiden Nachbarpunkten ein Polynom erzeugen

10AWP_FiniteDifferenzen_49.gif

10AWP_FiniteDifferenzen_50.gif

diese Polynom Ableiten

10AWP_FiniteDifferenzen_51.gif

10AWP_FiniteDifferenzen_52.gif

Für die 1. Ableitung bei t=0 also im Mittelpunkt erhält man

10AWP_FiniteDifferenzen_53.gif

10AWP_FiniteDifferenzen_54.gif

Die in den Diffusionsgleichungen benötigte zweite Ableitung lautet dann

10AWP_FiniteDifferenzen_55.gif

10AWP_FiniteDifferenzen_56.gif

Hier muss nicht mehr t=0 gesetzt werden, weil sich aus drei Punkten nur ein quadratischens Polynom erzeugen lässt, welches bei zweimaliger Ableitung eine Konstante ergibt.

Stabilitätsanalyse für diskretisierte partielle Differentialgleichungen

Die Verwendung von finiten Differnzen Formeln zum Lösen von partiellen Differentialgleichungen erfordert immer eine Stabilitätsanalyse.

Als erstes Beispiel soll eine Diffusionsgleichung verwendet werden, um die notwendigen Indicies nicht übermässig anwachsen zu lassen, soll nur ein eindimensionales Beispiel verwendet werden.

10AWP_FiniteDifferenzen_57.gif

Für die Zeitabhängigkeit wählen wir ein explizites Euler-Verfahren

10AWP_FiniteDifferenzen_58.gif

und für die zweite Ableitung bezüglich des Ortes die einfachste Approximation

10AWP_FiniteDifferenzen_59.gif

10AWP_FiniteDifferenzen_60.gif

Mit 10AWP_FiniteDifferenzen_61.gif also

10AWP_FiniteDifferenzen_62.gif

Nach Auflösen nach 10AWP_FiniteDifferenzen_63.gif  erhält man

10AWP_FiniteDifferenzen_64.gif

Zum  Lösen dieser Iterationsgleichung macht man den Ansatz

10AWP_FiniteDifferenzen_65.gif

Das Einsetzen in die Iterationsgleichung ergibt:

10AWP_FiniteDifferenzen_66.gif

10AWP_FiniteDifferenzen_67.gif

10AWP_FiniteDifferenzen_68.gif

Wie auch schon im Falle der gewöhnlichen Differentialgleichungen fordert man das |ξ|<1 gelten muss, damit die Gleichung stabil beleibt

10AWP_FiniteDifferenzen_69.gif

10AWP_FiniteDifferenzen_70.gif

Man sieht leicht, dass die Iteration nur für 10AWP_FiniteDifferenzen_71.gif  für alle Frequenzen stabil ist.

Für den Fall, das man statt des expliziten Euler-Verfahren ein implizites benutzt ergibt sich das lineare (tridiagonale) Gleichungssystem

10AWP_FiniteDifferenzen_72.gif

10AWP_FiniteDifferenzen_73.gif

Die Stabilitätsanalyse ergibt

10AWP_FiniteDifferenzen_74.gif

10AWP_FiniteDifferenzen_75.gif

10AWP_FiniteDifferenzen_76.gif

10AWP_FiniteDifferenzen_77.gif

10AWP_FiniteDifferenzen_78.gif

10AWP_FiniteDifferenzen_79.gif

Diese Iteration, mit dem Lösen eines linearen Gleichungssystems in jedem Schritt, ist also für alle Zeitschritte stabil.

Flusserhaltende Systeme

Während sich für die parabolischen Gleichungen von immer eine Schrittweite finden lässt für die eine explizite Formel stabil ist, ist die bei hyperbolischen Systemen nicht der Fall. Als Beispiel wählen wir

10AWP_FiniteDifferenzen_80.gif

mit einer konstanten Geschwindigkeit v. Die Lösung dieser Gleichung ist durch u(x-v t) gegeben. Andere Beispiele für hyperbolische Gleichungen sind alle Wellengleichungen und die Maxwell Gleichungen.

Als Warnung sei ein explizites Euler-Verfahren für die Zeitabhängingkeit

10AWP_FiniteDifferenzen_81.gif

ausgewählt. Für die Approximation der ersten Ableitung wählen wir die symmetrische Formel

10AWP_FiniteDifferenzen_82.gif

10AWP_FiniteDifferenzen_83.gif

Mit 10AWP_FiniteDifferenzen_84.gif erhält man

10AWP_FiniteDifferenzen_85.gif

Eine Stabilitätsanalyse soll zeigen ob die so gewählten Approximationen eine brauchbare Iteration ergeben

10AWP_FiniteDifferenzen_86.gif

10AWP_FiniteDifferenzen_87.gif

10AWP_FiniteDifferenzen_88.gif

10AWP_FiniteDifferenzen_89.gif

Der Betrag von ξ ist also bei dieser Iteration immer grösser als 1 und die Iteration ist immer instabil.  

Die einfachste Methode diese Instabilität zu umgehen, ist die Lax Methode, in

10AWP_FiniteDifferenzen_90.gif

wird 10AWP_FiniteDifferenzen_91.gif durch seinen Mittelwert 10AWP_FiniteDifferenzen_92.gif  ersetzt was zu

10AWP_FiniteDifferenzen_93.gif

führt. Die Stabilitätsanalyse liefert

10AWP_FiniteDifferenzen_94.gif

10AWP_FiniteDifferenzen_95.gif

10AWP_FiniteDifferenzen_96.gif

Was zu der Stabilitätsbedingung

10AWP_FiniteDifferenzen_97.gif

führt.

10AWP_FiniteDifferenzen_98.gif

10AWP_FiniteDifferenzen_99.gif

Auch wenn der Trick 10AWP_FiniteDifferenzen_100.gif durch seinen Mittelwert 10AWP_FiniteDifferenzen_101.gif  ersetzt hier zu einer Stabilizierung der Gleichung führt, ist bei der Approximation der ersten Ableitung durch die zentrale Formel stets grösste Sorgfalt notwendig um ein stabiles Verfahren zu erhalten.

Eine andere Möglichkeit ein stabiles Verfahren zu erhalten, besteht darin die Formel für die Approximation der 1. Ableitung in Abhängingkeit vom Vorzeichen von v  zu wählen

10AWP_FiniteDifferenzen_102.gif

Dies führt zu sogenannten up-wind Methoden, die ebenfalls für 10AWP_FiniteDifferenzen_103.gif stabil sind.

Spikey Created with Wolfram Mathematica 7.0