Mathematisches Programmieren
Contents
Mathematisches Programmieren¶
Vorwort¶
In dieser Vorlesung und der zugehörigen Übung wollen wir uns mit der Programmiersprache Python und deren Anwendungen in der Mathematik vertraut machen. Die Vorlesung orientiert sich stark an dem Buch [1], welches auch in der Universitätsbibliothek (Link) als E-Book heruntergeladen werden kann.
- 1
Hans-Bernhard Woyand. Python für Ingenieure und Naturwissenschaftler. Hanser, München, 2021.
Was ist Python?
Python ist eine Programmiersprache, genauer gesagt eine Skriptsprache, bei der jede Programmzeile nach und nach direkt von einem Interpreter ausgeführt wird. Dies vereinfacht die Programmierung, da im Gegensatz zu anderen Programmiersprachen wie C/C++, Fortran und Java der Programmcode nicht erst aufwändig in Maschinencode übersetzt (kompiliert) werden muss.
Python ist bei Programmierern sehr beliebt, da sich der Programmierer bzw. die Programmiererin nicht damit beschäftigen muss, was der Computer eigentlich genau im Hintergrund macht. Man kann sich stets auf das zu lösende Kernproblem fokusieren.
Ziele der Vorlesung
In dieser Vorlesung wollen wir die Programmiersprache Python erlernen und diese zur Lösung mathematischer Problemstellungen einsetzen. Besonders mächtig wird Python durch die unzähligen Erweiterungsmodule. Wir wollen uns diese zunutze machen und folgende Aspekte, die für mathematische Anwendungen relevant sind, diskutieren.
Rechnen mit Matrizen und Vektoren
Neben den üblichen Anwendungen in der linearen Algebra, beispielsweise das Lösen linearer Gleichungssysteme, ist das Rechnen mit Matrizen und Vektoren essentiell in der numerischen Mathematik. So treten lineare Gleichungssysteme bei der numerischen Lösung von Differentialgleichungen, bei Interpolationsaufgaben und bei der numerischen Integration auf.
Visualisierung
Wichtig ist oft die graphische Aufbereitung der Lösung eines mathematischen Problems. Wir werden daher lernen Funktionen zu plotten und Datensätze in Diagrammen geeignet darzustellen.
Mathematische Berechnungen
Python lässt sich nicht nur als Taschenrechner verwenden, es gibt Erweiterungsmodule, die es sogar erlauben Funktionen zu Differenzieren und zu Integrieren sowie nichtlineare Gleichungen und Differentialgleichungen exakt zu lösen.
Wissenschaftliches Rechnen
Viele Algorithmen für eine Vielzahl von Anwendungen sind in diversen Erweiterungsmodulen bereits implementiert, beispielsweise für die numerische Lösung von Optimierungsproblemen, Differentialgleichungen, nichtlinearer Gleichungen und Integrationsaufgaben.
Warum Python?
Die Programmiersprache Python bietet einige Vorteile, die wir uns bei der Programierung mathematischer Anwendungen zunutze machen:
Python ist leicht zu erlernen, unterstützt die üblichen Programmierparadigmen und ist dabei gut lesbar.
Python eignet sich perfekt für die schnelle Entwicklung von Software-Prototypen. Mit nur wenigen Code-Zeilen lassen sich bereits recht komplexe Anwendungen schreiben.
Es gibt unzählige Erweiterungen, sogenannte Module, für alle möglichen Zwecke. Wir werden in dieser Vorlesung einige dieser Module kennenlernen:
NumPy: Rechnen mit Matrizen und Vektoren
SciPy: Sammlung von Algorithmen für das wissenschaftliche Rechnen
SymPy: Ein Computeralgebrasystem für symbolische Brechnungen
Matplotlib: Zum Erzeugen von Plots und Diagrammen
Python ist portabel. In Python geschriebener Programmcode läuft auf allen Betriebssystemen (Windows, MacOS, Linux).
Python und deren Erweiterungsmodule sind kostenlos, was unser Hauptargument gegen Matlab ist.
Vorbereitung¶
Installation von Conda¶
Wir wollen hier kurz diskutieren, wie eine Python-Umgebung auf dem eigenen Computer installiert werden kann. Der einfachste Weg, welcher sowohl für Windows-, Linux und Mac-Computer funktioniert, ist über den Paketmanager Conda. Es gibt verschiedene Conda-Distributionen, für unsere Zwecke reicht MiniConda aus. Für alle gängigen Betriebssysteme findet man unter https://docs.conda.io/en/latest/miniconda.html die entsprechenden Installationsdateien.
Um zu testen, ob die Installation erfolgreich war, öffnen wir eine Konsole und geben den Befehl
conda list
ein. Hier sollte nun eine Liste aller vorinstallierten Pakete erscheinen.
Conda konfigurieren¶
In Conda lassen sich Umgebungen erstellen, welche weitestgehend unabhängig vom restlichen System sind. In diesen Umgebungen lässt sich eine Python-Distribution sowie weitere Python-Module, welche im Verlauf der Vorlesung verwendet werden, installieren.
Zunächst erstellen wir eine neue Umgebung Namens myenv
, welche die
aktuellste Python-Version, 3.10, verwendet. Dazu tippen wir in die Konsole ein:
conda create --name myenv python=3.10
Dies geschieht nur einmalig. Immer wenn wir nun in unsere Python-Umgebung wechseln wollen, tippen wir ein:
conda activate myenv
Es fällt auf, dass die Konsoleneingabe nun von
(base) user@machine:~$
auf
(myenv) user@machine:~$
wechselt. Um zu testen ob die Python-Installation innerhalb unserer Umgebung erfolgreich war tippen wir ein:
python3 --version
Ausgabe: Python 3.10.0
Wir können nun bereits anfangen in Python zu programmieren. Wir wechseln mit
python3
in die Python-Konsole und schreiben unser erstes Programm:
print("Hello world!")
Wir verlassen die Python-Konsole mit dem Befehl exit()
oder mit STRG+D
.
Haben wir unsere Arbeit beendet können wir die Conda-Umgebung mit
conda deactivate
wieder verlassen.
Jupyter-Notebook¶
Es gibt verschiedene Möglichkeiten um in Python zu programmieren. Kurze
Berechnungen kann man natürlich direkt in der Python-Konsole vornehmen. Man
kann auch ein Python-Skript in einem Texteditor seiner Wahl schreiben,
dieses mit der Dateiendung .py
abspeichern und mit
python3 mein_skript.py
ausführen.
Eine sehr schöne Lösung liefert allerdings das Jupyter-Notebook, ein Browserbasierter Editor, welcher alle Funktionen bereit stellt, die wir für unsere Zwecke benötigen. Wir installieren das Jupyter-Notebook direkt in unsere Conda-Umgebung:
conda activate myenv
conda install -c conda-forge notebook
Mit der Option -c conda-forge
teilen wir Conda mit, dass es auf der Suche
nach dem Paket notebook
auch in einem öffentlichen Archiv (Channel) namens
“conda-forge” suchen soll. Wir testen mit
jupyter-notebook --version
Ausgabe: 6.4.9
ob die Installation funktioniert hat. Wir starten das Juypter-Notebook anschließend mit der Eingabe
jupyter-notebook &
und es sollte sich ein neues Browserfenster öffnen.
Mit der Schaltfläche New \(\Rightarrow\) Python3 können wir nun ein neues Python-Skript
anlegen und direkt anfangen die Code-Zellen mit Programmcode zu
füllen. Eine Code-Zelle wird mit SHIFT+ENTER
ausgeführt:
Neben Code-Zellen gibt es im Jupyter-Notebook auch noch Markdown-Zellen. Um Markdown-Zellen zu verwenden müssen wir in der Symbolleiste im Auswahlfeld auf die Option “Markdown” umschalten:
Wir können nun die Zelle mit Text füllen und diese schön gestalten. Auf dieser Webseite ist die Syntax der Markdown-Language erklärt. Wir können beispielsweise den Text mit Überschriften gliedern, Bilder und Querverweise einbinden, Tabellen und Auflistungen erstellen, und vieles mehr.
Der Markdown-Code
# Meine Studienarbeit
## Einführung
Die Arbeit beschäftigt sich mit
* Grundlagen der Programmierung
* Mathematische Anwendungen
Falls Fragen auftreten, suche selbst auf [Google](https://www.google.de).
Hier noch ein kurzes Symbolverzeichnis:
|Symbol|Bedeutung|
|:-|:-|
|$\alpha$|Wärmeleitkoeffizient|
|$\nu$|Querkontraktionszahl|
liefert die Ausgabe