Computeralgebrasysteme/ Scientific Python
Dieser Abschnitt ist noch im Entstehen und noch nicht offizieller Bestandteil des Buchs. Gib den Autoren Zeit, den Inhalt anzupassen!
Python ist eine Programmiersprache, die besonders für ihren einfachen Syntax bekannt ist. Es werden -- im Vergleich zu Programmiersprachen, mit denen Python oft verglichen wird, z.B. PHP, Perl oder C -- weniger Sonderzeichen verwendet. So fallen geschweifte Klammern zur Programmstrukturierung komplett weg, sie wird stattdessen durch Einrückung umgesetzt. Der Wikipedia-Artikel Python (Programmiersprache) gibt einen guten Überblick über Python. Auch das Wikibook Python unter Linux umfasst eine Einführung für Python, mit dem besonderen Fokus auf dem Betriebssystem Linux.
Auch in diesem Kapitel beschränken wir uns auf Linux-artigen Betriebssystemen (unixoide Betriebssysteme). Dies liegt daran, weil Programme, die die Unix-Philosophie umsetzen, gut zusammenarbeiten, und genau dies macht die Macht von wissenschaftlicher Software unter Linux aus, mit der Python mitspielt: Gute Zusammenarbeit untereinander.
Dies soll in einem Beispiel dargelegt werden: Anhand von Python soll eine Wertetabelle für eine mathematische Funktion berechnet werden, die anschließend in ein einfaches Dateiformat exportiert wird und mit einem anderen Programm, und zwar Gnuplot, gezeichnet werden soll:
- Ein Beispiel hier einfügen, mit numpy/Python-Code, numpy-CSV-Export und einer Gnuplot-Befehlszeile + generierte Grafik (SVG hochladen)
Man erkennt an diesem Beispiel, dass eine Vielfalt an Funktionen anhand eines Baukastenprinzips ermöglicht wird. Welche Bausteine zur Verfügung stehen, und wie diese miteinander kombiniert werden können, zeigt das nächste Kapitel.
SciPy
[Bearbeiten]Komponenten
[Bearbeiten]SciPy ist eine Sammlung von Python-Bibliotheken, die gut zusammenarbeiten, da sie aufeinander aufbauen, also gemeinsame Datenstrukturen verwenden. Grundlage ist 'NumPy, eine Bibliothek für numerische Berechnungen in Python. Numpy bietet eine sehr effiziente Implementierung eines N-dimensionalen Arrays für Python an. Dies löst das zentrale Problem beim Umsetzen von numerischen Algorithmen, mathematische Objekte wie Vektoren, Matrizen oder Tensoren im Computer zu modellieren. Darüberhinaus liefert NumPy einfache Algorithmen für numerische Aufgaben, Import/Export-Möglichkeiten und vieles mehr.
Ergänzt werden die im NumPy-Paket umgesetzten Algorithmen durch eine weitere Algorithmensammlung im Paket SciPy, etwa zur Integration, Signalverarbeitung, Fouriertransformationen, Statistik, etc..
Des Weiteren enthält das SciPy-Gesamtpaket eine Bibliothek zur symbolischen Berechnung, sympy, die für uns im Folgenden interessant sein wird, weil sie den Computeralgebra-Kern von SciPy darstellt. Nur am Rande erwähnt sei pandas, eine Bibliothek zur Analyse strukturierter Daten, worunter man sich in etwa NumPy-Arrays vorstellen kann, bei denen Einträge beschriftet sind, etwa um Zeitreihenanalysen besser im Computer arzustellen.
Einen besonderen Stellenwert nehmen zwei weitere Bibliotheken in SciPy ein: Matplotlib ist eine Bibliothek zum Erstellen hochwertiger Plots in 2D und 3D, sowie IPython, welches ein interaktives Python-Terminal mit erheblich mehr Funktionen als die bei Python mitgelieferte Kommandozeile darstellt.
Pylab
[Bearbeiten]Dank der Flexibilität von SciPy lassen sich die eingebauten Funktionen so darstellen, dass man mit SciPy fast auf gleiche Weise arbeiten kann wie mit Matlab (im vorrangegangenen Kapitel vorgestellt). Anstatt Matlab zu starten, kann in einer beliebigen Python-Shell auf einem Computer, auf dem die SciPy-Pakete installiert sind, einfach
from pylab import *
eingeben und kann anschließend den Großteil der Matlab-Funktionen mit minimalen Änderungen in der Syntax verwenden (siehe etwa http://wiki.scipy.org/PyLab und http://wiki.scipy.org/NumPy_for_Matlab_Users). Pylab wird besonders explizit sichtbar bei der Matplotlib, die bewusst so programmiert wurde, dass sie die Zeichenfunktionen von Matlab nachbildet (vgl. Pyplot Summary)