Das Finite-Differenzen-Verfahren (kurz FDM für “finite difference method”) ist zwar in mancher Hinsicht den später zu behandelnden Finite-Elemente-Verfahren unterlegen, ist aber aufgrund seiner Einfachheit aber ein guter Einstieg in das numerische Lösen von PDEs und weit verbreitet im praktischen Einsatz.
7.1Idee¶
Die Grundidee ist sehr einfach:
Statt einer Funktion sind also nur noch Funktionswerte auf endlich vielen Gitterpunkten gesucht. Diese Werte stehen durch die Differenzenquotienten zueinander in Beziehung. Für lineare PDE führt dieses Vorgehen praktisch immer zu einem linearen Gleichungssystem, welches mit Standardverfahren gelöst werden kann.
Hauptschwierigkeit beim Finite-Differenzen-Verfahren ist das Einbinden von Randbedingungen für Gebiete mit krumlinigem Rand, da die Gitterpunkte eines regelmäßigen Gitters nur selten auf dem Rand liegen werden.
7.2Fehlerabschätzungen¶
Theoretische Resultate zur Genauigkeit der erhaltenen Lösungen existieren vor allem für elliptische lineare PDE. Das Finite-Differenzen-Verfahren ist zwear prinzipiell auch für andere PDE einsetzbar, jedoch besteht ohne hinreichende theoretische Untermauerung keine Garantie, dass die erhaltenen diskreten Lösungen in hinreichend engem Zusammenhang mit den tatsächlichen Lösungen der PDE stehen.
In der Veranstaltung zur numerischen Mathematik wird noch der Begriff der Stabilität eines Algorithmus eingeführt, welcher besagt, dass der Algorithmus hinreichend genau das kontinuierliche Problem löst. Aus guter Kondition des kontinuierlichen Problems und Stabilität des Algorithmus erhält man dann die gute Kondition des Algorithmus. Im Kontext von PDEs gilt
sodass man davon ausgehen kann, dass gute Kondition des diskretisierten Problems auch gute Kondition des Algorithmus liefert. Ensprechend beschränkt man sich auf die Untersuchung der Kondition des diskretisierten Problems.
Die Kondition des diskretisierten Problems ist durch die Konditionszahl der Systemmatrix gegeben. Diese muss meist aufwendig bestimmt oder wenigstens nach oben abgeschätzt werden. Untersuchungen zur Konvergenz sind ebenfalls mit hohem Aufwand verbunden und deshalb nicht Bestandteil dieser Veranstaltung. Für alle üblichen PDEs findet man entsprechende Herleitungen in der Literatur. Wir beschränken uns hier auf die Angaben der Resultate um einen Eindruck von der zu erwartenden Lösungsqualität zu bekommen.
7.3Allgemeines Vorgehen¶
Unabhängig von der zu lösenden PDE sind folgende Schritt auszuführen:
Gitterpunkte für jede Variable wählen.
Ableitungen an Gitterpunkten, die nicht auf dem Rand des betrachteten Gebietes liegen, durch Differenzenquotienten entsprechend den Nachbargitterpunkten ersetzen.
Anfangs- und Randbedingungen durch Funktionswerte bzw. deren Ableitungen (Differenzenquotienten) auf Gitterpunkten des Randes ausdrücken.
Entstehendes Gleichungssystem lösen.
Die konkrete Umsetzung dieser Schritte hängt im Detail von den Gegebenheiten der vorliegenden PDE, insbesondere von den Anfangs- und Randbedingungen ab.
7.4Beispiel: 2D-Poisson-Gleichung¶
Wollen
für das Rechteck
lösen. Die Lösung gibt beispielsweise die Auslenkung einer der Last ausgesetzten Membran an, solange die Auslenkung “klein” ist. Am Rand sei die Membran fest eingespannt:
7.4.1Gitterpunkte¶
Wählen in - und -Richtung bzw. gleichmäßig verteilte Stützstellen mit Abständen
sodass die Gitterpunkte
entstehen.
Gilt oder , so ist ein Randpunkt des Gebietes .
Führen folgende Kurzbezeichnungen ein:
7.4.2Diskretisierung im Inneren¶
Die zu lösende Gleichung
betrachten wir nur auf den inneren Gitterpunkten und ersetzen dort die Ableitungen durch die Differenzenquotienten
bzw.
Erhalten somit
7.4.3Diskretisierung der Randbedingung¶
Die Randbedinung liefert auf den Randgitterpunkten
für und .
7.4.4Gleichungssystem¶
Die an den inneren Punkten diskretisierte PDE liefert Gleichungen für Unbekannte. Aus der diskretisierten Randbedingung können allerdings die Werte gerade für soviele Unbekannte direkt entnommen werden, dass für die restlichen Unbekannten ein Gleichungssystem mit quadratischer Systemmatrix entsteht. Man kann zeigen (tun wir hier nicht), dass dieses eindeutig lösbar ist.
7.4.5Kondition¶
Man kann zeigen (tun wir hier nicht), dass das diskretisierte Problem gut konditioniert ist:
Der erste Summand gibt den Fehler in der Randbedinung an. Dieser wird meist Null sein oder nur in der Größenordnung des Gleitkommarundungsfehlers liegen. Der zweite Summand gibt an, wie gut die (in der Praxis immer näherungsweise) Lösung des Gleichungssystems die (diskretisierte) rechte Seite der PDE annähert. Sind beide Fehler klein, wird also auch der Abstand zwischen berechneter und exakter Lösung klein sein.
7.4.6Konvergenz¶
Man kann zeigen (tun wir hier nicht):
Je feiner das Gitter, desto kleiner wird also der Fehler in der Lösung sein.
Beachte: In der Konvergenzaussage hier ist die exakte Lösung der PDE, in der obigen Konditionsaussage ist hingegen die exakte Lösung des diskretisierten Problems. In beiden Fällen ist die berechnete Lösung des diskretisierten Problems.
7.5Nicht triviale berandete Gebiete¶
Liegen auf dem Rand des Gebiets kaum oder gar keine Gitterpunkte, müssen am Rand zusätzliche Gitterpunkte eingefügt werden. Dies geschieht üblicherweise durch achsenparallele Verschiebung des jeweils ersten außerhalb des Gebietes liegenden Gitterpunktes. Dadurch sind die Gitterpunkte nicht mehr äquidistant, was zu höherem Aufwand beim Aufstellen des Gleichungssystems führt. Mit diesem Vorgehen hat jeder inner Punkt stets vier Nachbarpunkte, sodass die Differenzenquotienten problemlos aufgestellt werden können (IDVID 750).