Komplexe Zahlen¶
Komplexe Zahlen bestehen aus einem Realteil und einem
Imaginärteil, der in
Python den Suffix j
erhält.
>>> 7 + 2j
(7+2j)
Bemerkung
Python drückt die resultierende komplexe Zahl in Klammern aus, um anzuzeigen, dass die Ausgabe den Wert eines einzelnen Objekts darstellt:
>>> (7 + 2j) - (4 + 4j)
(3-2j)
>>> 2j * 4j
(-8+0j)
Bemerkung
Die Berechnung von 2j * 4j
ergibt die erwartete Antwort von -8
, aber
das Ergebnis bleibt ein Python-Objekt für komplexe Zahlen. Komplexe Zahlen
werden nie automatisch in entsprechende reelle oder ganzzahlige Objekte
umgewandelt. Ihr könnt aber leicht auf ihre realen und imaginären Teile mit
real
und imag
zugreifen.
>>> x = 2j * 4j
>>> x
(-8+0j)
>>> x.real
-8.0
>>> x.imag
0.0
Bemerkung
Die Real- und Imaginärteile einer komplexen Zahl werden immer als Fließkommazahlen zurückgegeben.
Erweiterte Funktionen¶
Die Funktionen im Modul math sind nicht auf
komplexe Zahlen anwendbar; einer der Gründe hierfür dürfte sein, dass die
Quadratwurzel aus -1
einen Fehler erzeugen soll. Daher wurden ähnliche
Funktionen für komplexe Zahlen arbeiten im
cmath-Modul bereitgestellt:
cmath.acos()
, cmath.acosh()
, cmath.asin()
, cmath.asinh()
, cmath.atan()
, cmath.atanh()
, cmath.cos()
, cmath.cosh()
, python3:cmath.e()
, cmath.exp()
, cmath.log()
, cmath.log10()
, python3:cmath.pi()
, cmath.sin()
, cmath.sinh()
, cmath.sqrt()
, cmath.tan()
, cmath.tanh()
.
Um im Code deutlich zu machen, dass es sich bei diesen Funktionen um spezielle
Funktionen für komplexe Zahlen handelt, und um Namenskonflikte mit den
normaleren Äquivalenten zu vermeiden, empfiehlt sich der einfache Import des
Moduls um bei der Verwendung der Funktion ausdrücklich auf das cmath
-Modul
zu verweisen, z.B.:
>>> import cmath
>>> cmath.sqrt(-2)
1.4142135623730951j
Warnung
Nun wird auch verständlicher, weswegen wir nicht den Import aller Funktionen
eines Moduls empfehlen mit from MODULE import *
. Wenn ihr damit
zuerst das Modul math
und dann das Modul cmath
importieren würdet,
hätten die Funktionen in cmath
Vorrang vor denen von math
. Außerdem
ist es beim Verstehen des Codes viel mühsamer, die Quelle der verwendeten
Funktionen herauszufinden.