Numerische Mathematik
Dokumentation des Galerkin-Lernmoduls
Das Modul verbindet eine kurze theoretische Einführung mit interaktiven Experimenten und drei Python-Notebooks.
Modellproblem
Untersucht wird die eindimensionale Wärmeleitung auf dem Intervall von 0 bis 1. An beiden Endpunkten wird die Temperatur auf null festgehalten.
Warum ist das eine partielle Differentialgleichung?
Die gesuchte Temperatur u hängt von zwei unabhängigen Variablen ab: vom Ort x und von der Zeit t. In der Gleichung wird deshalb einmal nach der Zeit und zweimal nach dem Ort abgeleitet. Solche Ableitungen nach einzelnen Variablen heißen partielle Ableitungen; daher ist die Wärmeleitungsgleichung eine partielle Differentialgleichung (PDGL). Eine gewöhnliche Differentialgleichung beschreibt dagegen eine Funktion mit nur einer unabhängigen Variablen.
Anschaulich misst ∂u/∂t, wie schnell sich die Temperatur an einem festen Ort verändert. Die zweite Ortsableitung ∂²u/∂x² beschreibt die örtliche Krümmung des Temperaturprofils. Die Gleichung besagt: Wo das Profil gekrümmt ist, fließt Wärme so, dass Temperaturunterschiede ausgeglichen werden.
Die gewählte Anfangsbedingung besteht aus zwei Sinusmoden. Dadurch ist eine exakte Vergleichslösung bekannt, mit der sich die numerische Näherung unmittelbar überprüfen lässt.
Numerisches Verfahren
Im Raum wird ein Galerkin-Verfahren mit stückweise linearen Hutfunktionen verwendet. Aus der schwachen Form entstehen eine Massenmatrix M und eine Steifigkeitsmatrix K.
Die Zeitdiskretisierung erfolgt mit dem Crank–Nicolson-Verfahren. Diese Trapezregel ist für glatte Lösungen von zweiter Ordnung und eignet sich gut für Diffusionsprobleme.
Experiment mit Wärmequelle
Im zweiten Experiment erzeugt eine konstante Quelle q im gesamten Stab Wärme. Während die Endpunkte bei null gehalten werden, nähert sich die Lösung einem parabelförmigen stationären Temperaturprofil.
Die drei Notebooks
| Notebook | Inhalt |
|---|---|
| Wärmeleitung | Modellgleichung, Randbedingungen, Eigenmoden und exakte Lösung |
| Galerkin-Diskretisierung | Finite Elemente, Matrixgleichung und numerischer Vergleich |
| Fehler und Konvergenz | Räumlicher und zeitlicher Fehler sowie Konvergenzdiagramme |
Lokal ausführen
Nach dem Entpacken des Gesamtpakets werden die benötigten Python-Pakete installiert und anschließend Jupyter gestartet:
python3 -m pip install -r requirements.txt
jupyter notebook
Die numerische Implementierung kann unabhängig von Jupyter geprüft werden:
python3 -m unittest -v test_galerkin_heat.py
Historischer Bezug
Das Lernbeispiel greift ausgewählte mathematische Themen meiner Diplomarbeit im Studiengang Mathematik an der Fachhochschule Darmstadt auf. Darstellung, Abbildungen und Python-Implementierung wurden für dieses Lernangebot neu erstellt. Das historische FORTRAN-Programmlisting ist nicht Bestandteil der Veröffentlichung.
Zurück zum Lernmodul Gesamtpaket herunterladen