© Liashko/Shutterstock.com
Mathematische Probleme mit Basisfunktionen und Bibliotheken lösen

Der Rechenknecht in Python


Ein wichtiger Grund, warum Python im Moment einen wahren Hype erlebt, ist die Möglichkeit, mit dieser Programmiersprache relativ leicht mathematische und statistische Probleme zu lösen. Der Übergang zu den Algorithmen der künstlichen Intelligenz ist dann nicht mehr weit. Mit den richtigen Bibliotheken kann man sich auf das eigentliche Problem konzentrieren und die Umsetzung eines Algorithmus geht leicht von der Hand.

In diesem Artikel wollen wir in die Geheimnisse der Mathematik mit Python eindringen. Starten wir mit wichtigen Funktionen aus der Standardbibliothek, die bereits eine umfassende Sammlung an mathematischen Modulen enthält, die die Arbeit in der Praxis sehr vereinfachen können. Ein Blick in die offizielle Python-Dokumentation gibt uns folgende Hinweise auf die für das Thema interessanten Module [1]:

  • numbers: abstrakte numerische Basisklassen

  • math: umfassende Sammlung von mathematischen Funktionen

  • cmath: umfassende Sammlung von mathematischen Funktionen für komplexe Zahlen

  • decimal: Funktionen für die Verarbeitung von Fest- und Fließkommazahlen

  • fractions: Funktionen für rationale Zahlenarithmetik

  • random: Erzeugen von Zufallszahlen oder zufälligen Auswahlen aus gegebenen Mengen

  • statistics: statistische Grundfunktionen

Die Basis: Das Modul math

Um die Funktionen aus diesem Modul zu verwenden, müssen Sie es in Ihrem Programm über den Befehl: import math einbinden. Die häufig gebrauchten mathematischen Konstanten e (Eulersche Zahl) und Pi (Kreiszahl) sind innerhalb von math definiert, Sie können sie zum Beispiel mit v1 = math.pi bzw. v2 = math.e abrufen. Einen Überblick über die Exponential- und Logarithmusfunktionen bzw. trigonometrische und hyperbolische Funktionen bietet Tabelle 1.

Funktion

Beschreibung

Exponential- und Logarithmusfunktionen

exp(x)

berechnet ex

log(x, [base])

berechnet den Logarithmus von x zur Basis base. Wenn base nicht angegeben wurde, wird der Logarithmus Naturalis (Basis e) berechnet

log10(x)

berechnet den Logarithmus von x zur Basis 10

log2(x)

berechnet den Logarithmus von x zur Basis 2

pow(x, y)

berechnet xy

sqrt(x)

berechnet die Quadratwurzel von x

Trigonometrische und hyperbolische Funktionen

sin(x)

berechnet den Sinus von x

cos(x)

berechnet den Kosinus von x

tan(x)

berechnet den Tangens von x

asin(x)

berechnet den Arkussinus von x

acos(x)

berechnet den Arkuskosinus von x

atan(x)

berechnet den Arkustangens von x

sinh(x)

berechnet den Sinus Hyperbolicus von x

cosh(x)

berechnet den Kosinus Hyperbolicus von x

tanh(x)

berechnet den Tangens Hyperbolicus von x

asinh(x)

berechnet den Areasinus Hyperbolicus von x

acosh(x)

berechnet den Areakosinus Hyperbolicus von x

atanh(x)

berechnet den Areatangens Hyperbolicus von x

atan2(y, x)

berechnet atan(x / y)

hypot(x, y)

berechnet die euklidische Norm des Vektors (x,y)

Tabelle 1: Exponential-, Logarithmus-, trigonometrische und hyperbolische Funktionen [1], [2]

Die Verwendung der Funktionen ist mehr als einfach, so liefert v1 = math.sin(math.pi/2) als Ergebnis bekanntermaßen den Wert 1, denn der Wert der Sinusfunktion von (Pi/2) ist gleich 1.

Das Modul math enthält damit wichtige mathematische Basisfunktionen. Auch speziellere Funktionen wie die Gammafunktion sind über math.gamma(x) verfügbar. Benötigen Sie eine sehr spezielle Funktion, gehen Sie folgendermaßen vor:

  1. Ist die gewünschte Funktion Bestandteil der Standardbibliothek und der o. g. Module?

  2. Gibt es bereits ein fertiges Modul zur Verwendung?

  3. Eigene Implementierung

Es macht die Leistungsfähigkeit von Python für wissenschaftliche (mathematische) Berechnungen aus, dass viele Features für diesen Bereich bereits enthalten sind. Für Python spricht zudem eine leicht konfigurierbare Testumgebung (Kasten: „Praxistipp: Testumgebung“).

Praxistipp: Testumgebung

Die Arbeit mit Python ist leichtgewichtig und geht schnell von der Hand. Nach der Installation von Python in der aktuellen Version können Sie zum Beispiel mit dem Editor Visual Studio Code arbeiten. Dieser Editor steht plattformübergreifend (Windows, macOS, Linux) zur Verfügung [3] und ist nicht mit der integrierten Entwicklungsumgebung Visual Studio zu verwechseln. Es wird ordnerbezogen gearbeitet. Eine neue Python-Datei legen Sie direkt im Editor über das Plus-Symbol an. Mit der Extension *.py wird diese auch als Python-Datei erkannt. Visual Studio Code bietet sofort an, die Extension Python zu installieren. Dann ist IntelliSense im Editor verfügbar (Abb. 1) und das Programm kann direkt aus Visual Studio Code gestartet werden. Einfacher geht es nicht.

krypczyk_rechenknecht_1.tif_fmt1.jpg Abb. 1: Produktive Arbeitsumgebung für Python in Visual Studio Code

Ein kleines Beispiel zeigt, wie schnell wir mit Python rechnen können. So ist die Ausgabe einer einfachen Funktion als Grafik (Plot) in wenigen Augenblicken erledigt. Dazu benötigen wir math für die Berechnung, numpy zum Erzeugen von Arrays und matplotlib für die grafische Darstellung. math haben wir bereits verwendet; numpy und matplotlib müssen Sie ggf. noch auf Ihrem System installieren. Zum einfachen Installieren von Paketen in Python verwenden wir das Paketverwaltungsprogramm pip. Der Name pip ist ein rekursives Akronym und steht für pip installs packages. Wir installieren es mit python -m pip install -U pip. Der Parameter -U sorgt ggf. für ein Update, wenn es schon vorhanden ist. Es folgen matplotlib und numpy:

python -m pip install -U matplotlib python -m numpy install -U numpy

Damit sind wir startklar und können den zugehörigen Quellcode erstellen. Legen Sie eine neue Python-Datei an, zum Beispiel plot.py, und füllen Sie diese mit dem Quellcode aus Listing 1.

Listing 1: Ausgabe einer mathematischen Funktion

import matplotlib.pyplot as plot import numpy import math x = numpy.empty(300) y = numpy.empty(300) for i in range(300): x[i] = (i - 1) * 0.02 y[i] = math.sin(x[i]) plot.plot(x, y) plot.xlabel('x') plot.ylabel('x') plot.title('Funktionsplott') plot.grid(True) plot.savefig("plot.png") plot.show()

Gehen wir diese Zeilen im Einzelnen durch: Wir importieren die genannten Bibliotheken (import-Anweisungen). Dann erstellen wir zwei leere Arrays mit den Bezeichnungen x und y mit einer Größe von 300 Datenfeldern. In einer Schleife weisen wir die x-Werte und die berechneten y-Werte (Sinusfunktion) zu. Für die Ausgabe dient die Funktion plot aus pyplot. Wir definieren die Datenwerte (x, y), legen den Diagrammtitel fest, speichern die Ausgabe als Grafik und zeigen sie an (Abb. 2). Ebenso wird die Datei im Projektordner gespeichert. Die Beschreibung der Bibliothek findet man unter [4]. Eine Vielzahl von Diagrammtypen kann damit auf einfachste Weise erstellt werden.

krypczyk_rechenknecht_2.tif_fmt1.jpgAbb. 2: Grafische Plots sind dank der Bibliothek matplotlib schnell erstellt

Alles Zufall: Das Modul random

Mit den Funktionen aus diesem Modul können Sie Pseudozu...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang