Komplexe Zahlen in Python - der Datentyp "complex"

0 | 16641 Aufrufe
Sie können diese Wikiseite nach der Anmeldung auf Webmasterpro bearbeiten. Helfen Sie mit und verbessern Sie "Komplexe Zahlen in Python - der Datentyp "complex"" mit Ihrem Wissen!

Anzeige Hier werben

Überraschenderweise findet sich ein Datentyp zur Speicherung komplexer Zahlen unter Pythons Basisdatentypen. In vielen Programmiersprachen würden komplexe Zahlen eher eine Randnotiz in der Standardbibliothek darstellen oder ganz außen vor bleiben. Sollten Sie nicht mit komplexen Zahlen vertraut sein, können Sie diesen Artikel gefahrlos überspringen. Es wird nichts behandelt, was für das weitere Erlernen von Python vorausgesetzt würde.

Komplexe Zahlen bestehen aus einem reellen Realteil und einem Imaginärteil, der aus einer reellen Zahl besteht, die mit der imaginären Einheit j multipliziert wird. Das in der Mathematik eigentlich übliche Symbol der imaginären Einheit ist i. Python hält sich hier an die Notationen der Elektrotechnik. Die imaginäre Einheit j kann als Lösung der Gleichung

j2 = –1

verstanden werden. Im folgenden Beispiel weisen wir einer komplexen Zahl den Namen v zu:

v = 4j

Wenn man, wie im Beispiel, nur einen Imaginärteil angibt, wird der Realteil automatisch als 0 angenommen. Um den Realteil festzulegen, wird dieser auf den Imaginärteil addiert. Die beiden folgenden Schreibweisen sind äquivalent:

v1 = 3 + 4j
v2 = 4j + 3

Statt des kleinen j ist auch ein großes J als Literal für den Imaginärteil einer komplexen Zahl zulässig. Entscheiden Sie hier ganz nach Ihren Vorlieben, welche der beiden Möglichkeiten Sie verwenden möchten. Sowohl der Real- als auch der Imaginärteil kann eine beliebige reelle Zahl sein, also Instanzen der Typen int oder float. Folgende Schreibweise ist demnach auch korrekt:

v3 = 3.4 + 4e2j

Da für komplexe Zahlen keine mathematische Reihenfolge definiert ist, können Instanzen des Datentyps complex nur auf Gleichheit oder Ungleichheit verglichen werden. Die Menge der vergleichenden Operatoren ist also auf ==, != und <> beschränkt. Des Weiteren sind sowohl der Modulo-Operator % als auch der Operator // für eine ganzzahlige Division im Komplexen zwar formal möglich, haben jedoch keinen mathematischen Sinn. Deswegen sind sie in Python inzwischen als deprecated (dt. abgelehnt), also als nicht mehr zu verwenden, eingestuft. Sollten Sie die Operatoren dennoch verwenden, wird eine entsprechende Warnung ausgegeben:

 
Python Consolenlog
1
2
3
>>> 4j % 2+3j
sys:1: DeprecationWarning: complex divmod(), // and % are deprecated
7j

Der Datentyp complex besitzt zwei sogenannte Attribute, die das Arbeiten mit ihm erheblich erleichtern. Es kommt zum Beispiel vor, dass man Berechnungen nur mit dem Realteil oder nur mit dem Imaginärteil der gespeicherten Zahl anstellen möchte. Um einen der beiden Teile zu isolieren, erlaubt Python folgende Notationen, die hier exemplarisch an einer Referenz auf eine komplexe Zahl namens x gezeigt werden:

Attribut
Beschreibung
x.real Realteil von x als reelle Zahl (float)
x.imag Imaginärteil von x als reelle Zahl (float)

Diese können im Code ganz selbstverständlich verwendet werden:

 
Python Consolenlog
1
2
3
4
5
>>> c = 23 + 4j
>>> c.real
23.0
>>> c.imag
4.0

Wir werden im Zusammenhang mit objektorientierter Programmierung darauf zurückkommen und näher darauf eingehen, was ein Attribut genau ist. Außer über seine zwei Attribute verfügt der Datentyp complex über eine sogenannte Methode, die in der Tabelle exemplarisch für eine Referenz auf eine komplexe Zahl namens x erklärt wird.

Methode
Beschreibung
x.conjugate() Liefert die zu x konjugiert komplexe Zahl

Im Quelltext kann eine Methode ähnlich einfach verwendet werden wie ein Attribut:

 
Python Consolenlog
1
2
3
>>> c = 23 + 4j
>>> c.conjugate()
(23-4j)

Das Ergebnis von conjugate ist wieder eine komplexe Zahl, der selbstverständlich ein Name zugewiesen werden kann. Außerdem verfügt natürlich auch das Ergebnis über eine Methode conjugate:

 
Python Consolenlog
1
2
3
4
5
6
7
>>> c = 23 + 4j
>>> c2 = c.conjugate()
>>> c2
(23-4j)
>>> c3 = c2.conjugate()
>>> c3
(23+4j)

Dies sind die Grundlagen des Datentyps complex.

Buchhinweis

Bild zu Komplexe Zahlen in Python - der Datentyp "complex"

Dieser Artikel stammt aus dem Buch "Python – Das umfassende Handbuch" von Peter Kaiser und Johannes Ernesti und wurde uns von Galileo Design zur Verfügung gestellt hat. Das Buch kann über die Webseite des Galileo Verlag bestellt werden, oder als Openbook (kostenloses eBook) heruntergeladen werden.


Wikiseite bearbeiten

Diese Seite kann von jedem registrierten Benutzer bearbeitet werden. Bisher haben 6 Personen an der Seite "Komplexe Zahlen in Python - der Datentyp "complex"" mitgewirkt.

Sie haben einen Fehler entdeckt oder möchten etwas ergänzen? Dann können Sie nach der Anmeldung "Komplexe Zahlen in Python - der Datentyp "complex"" hier bearbeiten.