Kapitel 30
Rechnen mit NumPy
880
#9: Es werden keine Achsen mit Skalierung gezeigt.
#10: Das mediangefilterte Bild wird als Graustufenbild dargestellt.
Dieses Programm verwendet für die Filterung quadratische Bereiche mit 9 Pixeln. Um
auch größere Fehler zu verstecken, kann man eine größere Nachbarschaft, z.B. 25 Pixel
einbeziehen. Übrigens finden Sie im Modul
scipy.signal einen vorgefertigten Median-
filter (
medfilt()).
30.17 Rechnen mit SciPy
Für aufwändige mathematische Berechnungen gibt es das Modul SciPy. Es setzt voraus,
dass bereits
NumPy und einige andere numerische Module installiert sind. Am einfachsten
installieren Sie
SciPy mit Anaconda (https://www.continuum.io/downloads).
Wenn Sie WinPython installiert haben, sind
NumPy und SciPy bereits verfügbar. Das wis-
senschaftliche Rechnen mit
SciPy ist ein großes Thema, das wir hier nur kurz anschneiden
können. In diesem Abschnitt erhalten Sie einen Einblick, wie man
SciPy zur Lösung line-
arer Gleichungssysteme und zur numerischen Integration verwenden kann.
30.17.1 Lineare Gleichungssysteme lösen
Ein lineares Gleichungssystem ist eine Menge linearer Gleichungen mit mehreren Unbe-
kannten, die alle gleichzeitig gelten sollen. Beispiel:
Hier trifft Informatik auf Mathematik. Während man in der Mathematik die Indizierung
mit
1 beginnt, startet man in der Informatik mit dem Index 0.
Um das Gleichungssystem zu lösen, bringt man es zuerst in die Standardform.
Die Standardform lässt sich auch durch Vektoren und Matrizen darstellen:
oder allgemein:
Die Elemente von Vektor x sind die Unbekannten x
0
, x
1
. Die Koeffizienten bilden die Matrix
A. Die Zahlen auf den rechten Seiten der Gleichungen sind der Vektor b. Der Punkt-Opera-
tor ist eine Matrizenmultiplikation.
881
30.17
Rechnen mit SciPy
Für die Lösung des Gleichungssystems – falls eine Lösung existiert – benötigt man die zu
A inverse Matrix A
-1
. Für die inverse Matrix gilt die Gleichung:
Dabei ist I die Einheitsmatrix mit der gleichen Form wie A, eine Matrix, die auf der Haupt-
diagonalen Einsen und an den anderen Stellen Nullen besitzt. Eine inverse Matrix ist meist
nicht leicht zu berechnen. Aber im Modul
SciPy finden Sie die Funktion inv(), die die
inverse Matrix liefert – sofern sie existiert.
Multipliziert man die allgemeine Matrizengleichung zum linearen Gleichungssystem auf
beiden Seiten mit der Matrix A
-1
, so erhält man folgende Gleichung, die die Lösung des line-
aren Gleichungssystems liefert:
Sie können in der Python-Shell die Rechnung durchführen. Im ersten Schritt werden die
Daten für A und b eingegeben:
Dann berechnen Sie die inverse Matrix und lösen das Gleichungssystem:
Probe:
Das ist also der klassische Lösungsweg über die inverse Koeffizientenmatrix. Es gibt noch
eine effizientere Methode. Die Funktion
solve() liefert direkt die Lösung und arbeitet
obendrein noch besonders schnell:
>>> import numpy as np
>>> from scipy import linalg
>>> A = np.array([[1,1],[1, -4]])
>>> b = np.array([[62],[-18]])
>>> A_inv = linalg.inv(A)
>>> x = np.dot(A_inv, b)
>>> x
array([[ 46.],
[ 16.]])
>>> np.dot(A, x)
array([[ 62.],
[-18.]])
>>> np.linalg.solve(A, b)
array([[ 46.],
[ 16.]])

Get Python 3 - Lernen und professionell anwenden now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.