HOWTO · Python

Imaginäre Zahlen in Python

Dieses Tutorial behandelt imaginäre Zahlen in Python

Auf dieser Seite

Python stellt Werte mit Real- und Imaginärteil über den eingebauten Typ complex dar. Die imaginäre Einheit wird mit j (oder J) geschrieben, etwa in 8 + 5j; alternativ lässt sich ein Wert mit complex(real, imaginary) erzeugen. Die folgenden Beispiele zeigen, wie Sie komplexe Werte in Python erstellen, untersuchen, berechnen und verwenden.

Imaginäre Zahlen mit Python-Komplexzahlen darstellen

Eine komplexe Zahl hat einen Realteil und einen Imaginärteil. Python verwendet gemäß der technischen Konvention j als Suffix für den Imaginärteil. Zum Beispiel steht 8 + 5j für 8 plus das Fünffache der imaginären Einheit. Der eingebaute Konstruktor complex() nimmt Real- und Imaginärteil als getrennte Zahlen entgegen. Beide Schreibweisen erzeugen eine Instanz des Typs complex.

Führen Sie dieses Beispiel aus:

Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.

a = 8 + 5j
b = complex(8, 5)
print(type(a))
print(a == b)
<class 'complex'>
True

Verwenden Sie den Konstruktor, wenn Real- und Imaginärteil bereits als getrennte Werte vorliegen, etwa wenn sie aus einer Eingabe stammen oder an anderer Stelle berechnet wurden. Das zweite Argument gibt den Koeffizienten der imaginären Einheit an; daher entspricht complex(8, 5) dem Wert 8 + 5j.

Die Bestandteile und die konjugierte Zahl einer komplexen Zahl auslesen

Die Elemente .real und .imag sind Attribute und werden daher ohne Klammern ausgelesen. Sie geben die beiden Bestandteile als Gleitkommawerte zurück. .conjugate() ist eine Methode: Rufen Sie sie mit Klammern auf, um das Vorzeichen des Imaginärteils umzukehren und den Realteil beizubehalten.

Bei 8 + 5j beträgt der Realteil beispielsweise 8.0, der Imaginärteil 5.0 und die konjugierte Zahl (8-5j). Die konjugierte Zahl ist bei komplexen Berechnungen nützlich, etwa wenn ein Bruch mit komplexem Nenner vereinfacht werden soll.

Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.

value = 8 + 5j
print(value.real)
print(value.imag)
print(value.conjugate())

Mit komplexen Zahlen rechnen

Pythons Rechenoperatoren funktionieren direkt mit komplexen Werten. Bei der Addition werden Realteile und Imaginärteile jeweils getrennt addiert. Die Multiplikation folgt den üblichen algebraischen Regeln und berücksichtigt j * j == -1. Für a = 8 + 5j und b = 10 + 2j ergibt a + b den Wert 18 + 7j, während a * b den Wert 70 + 66j ergibt.

Die alleinige Addition a.imag + b.imag ergibt 7.0. Dabei werden nur die Imaginärteile addiert; das ist nicht die Summe der beiden komplexen Zahlen. Verwenden Sie a + b, wenn Sie die vollständige komplexe Addition meinen.

Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.

a = 8 + 5j
b = 10 + 2j
print(a + b)
print(a * b)

cmath für Berechnungen mit komplexen Werten verwenden

Das Standardbibliotheksmodul cmath stellt mathematische Funktionen bereit, die komplexe Eingaben akzeptieren und komplexe Ergebnisse zurückgeben können. Mit cmath.phase(value) erhalten Sie den Winkel im Bogenmaß, mit cmath.exp(value) die Exponentialfunktion. Funktionen wie cmath.sin(value) und cmath.sinh(value) dienen trigonometrischen beziehungsweise hyperbolischen Berechnungen. Dies sind Funktionen des Moduls cmath, keine Methoden der komplexen Zahl.

Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.

import cmath

value = 1 + 1j
print(cmath.phase(value))
print(cmath.exp(value))
print(cmath.sin(value))
print(cmath.sinh(value))
0.7853981633974483
(1.4686939399158851+2.2873552871788423j)
(1.2984575814159773+0.6349639147847361j)
(0.6349639147847361+1.2984575814159773j)

Der Phasenwinkel wird im Bogenmaß angegeben. Die bekannten Funktionen aus math, die mit reellen Zahlen arbeiten, erwarten im Allgemeinen reelle Eingaben. Verwenden Sie cmath, wenn die Berechnung komplexe Werte umfasst. Ergebnisse können Gleitkommanäherungen enthalten. Vergleichen Sie berechnete Werte bei numerischen Prüfungen daher mit einer Toleranz.

Komplexe Zahlen in NumPy-Arrays speichern

NumPy ist eine optionale Bibliothek eines Drittanbieters für die Arbeit mit Arrays. Mit der Funktion numpy.array() lassen sich komplexe Werte in einem eindimensionalen Array speichern, zum Beispiel mit numpy.array([8 + 5j, 10 + 2j, 4 + 3j]). NumPy leitet für diese Werte einen komplexen Datentyp ab, sodass Array-Operationen beide Bestandteile erhalten. Installieren und importieren Sie NumPy in Ihrer eigenen Umgebung, bevor Sie dieses Bibliotheksbeispiel verwenden. Pythons eingebauter Typ complex benötigt NumPy nicht.

Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.

import numpy

values = numpy.array([8 + 5j, 10 + 2j, 4 + 3j])
print(values)
[ 8.+5.j 10.+2.j  4.+3.j]

Verwenden Sie ein NumPy-Array, wenn Sie numerische Operationen auf eine Sammlung komplexer Werte anwenden möchten. Für einen einzelnen Wert oder eine kleine Berechnung reichen der eingebaute Typ und die Operatoren aus. NumPy übernimmt die Formatierung der Array-Ausgabe; Leerzeichen und angezeigte Genauigkeit können daher je nach Werten und Druckeinstellungen variieren.