cmath — Mathematische Funktionen für komplexe Zahlen¶
Dieses Modul bietet Zugriff auf mathematische Funktionen für komplexe Zahlen. Die Funktionen in diesem Modul akzeptieren ganze Zahlen, Gleitkommazahlen oder komplexe Zahlen als Argumente. Sie akzeptieren auch jedes Python-Objekt, das entweder eine __complex__() oder eine __float__() Methode hat: Diese Methoden werden verwendet, um das Objekt in eine komplexe Zahl oder eine Gleitkommazahl zu konvertieren, und die Funktion wird dann auf das Ergebnis der Konvertierung angewendet.
Hinweis
Bei Funktionen, die Verzweigungsschnitte beinhalten, haben wir das Problem zu entscheiden, wie diese Funktionen auf dem Schnitt selbst definiert werden sollen. In Anlehnung an Kahans Arbeit „Branch cuts for complex elementary functions“ sowie an Anhang G des C99- und späterer C-Standards verwenden wir das Vorzeichen von Null, um eine Seite des Verzweigungsschnitts von der anderen zu unterscheiden: Für einen Verzweigungsschnitt entlang (eines Teils) der reellen Achse betrachten wir das Vorzeichen des Imaginärteils, während wir für einen Verzweigungsschnitt entlang der imaginären Achse das Vorzeichen des Realteils betrachten.
Zum Beispiel hat die Funktion cmath.sqrt() einen Verzweigungsschnitt entlang der negativen reellen Achse. Ein Argument von -2-0j wird so behandelt, als läge es *unterhalb* des Verzweigungsschnitts und ergibt daher ein Ergebnis auf der negativen imaginären Achse
>>> cmath.sqrt(-2-0j)
-1.4142135623730951j
Aber ein Argument von -2+0j wird so behandelt, als läge es oberhalb des Verzweigungsschnitts
>>> cmath.sqrt(-2+0j)
1.4142135623730951j
Umwandlungen von und zu Polarkoordinaten |
|
Gibt die Phase von z zurück |
|
Gibt die Darstellung von z in Polarkoordinaten zurück |
|
Gibt die komplexe Zahl z mit Polarkoordinaten r und phi zurück |
|
Potenz- und Logarithmusfunktionen |
|
Gibt e hoch z zurück |
|
Gibt den Logarithmus von z zur gegebenen Basis zurück (standardmäßig e) |
|
Gibt den Logarithmus von z zur Basis 10 zurück |
|
Gibt die Quadratwurzel von z zurück |
|
Trigonometrische Funktionen |
|
Gibt den Arkuskosinus von z zurück |
|
Gibt den Arkussinus von z zurück |
|
Gibt den Arkustangens von z zurück |
|
Gibt den Kosinus von z zurück |
|
Gibt den Sinus von z zurück |
|
Gibt den Tangens von z zurück |
|
Hyperbolische Funktionen |
|
Gibt den inversen hyperbolischen Kosinus von z zurück |
|
Gibt den inversen hyperbolischen Sinus von z zurück |
|
Gibt den inversen hyperbolischen Tangens von z zurück |
|
Gibt den hyperbolischen Kosinus von z zurück |
|
Gibt den hyperbolischen Sinus von z zurück |
|
Gibt den hyperbolischen Tangens von z zurück |
|
Klassifikationsfunktionen |
|
Prüft, ob alle Komponenten von z endlich sind |
|
Prüft, ob eine Komponente von z unendlich ist |
|
Prüft, ob eine Komponente von z NaN (Not a Number) ist |
|
Prüft, ob die Werte a und b nahe beieinander liegen |
|
Konstanten |
|
π = 3.141592… |
|
e = 2.718281… |
|
τ = 2π = 6.283185… |
|
Positive Unendlichkeit |
|
Rein imaginäre Unendlichkeit |
|
„Keine Zahl“ (NaN) |
|
Rein imaginäre NaN |
|
Umwandlungen von und in Polarkoordinaten¶
Eine Python-komplexe Zahl z wird intern in *kartesischen* Koordinaten gespeichert. Sie wird vollständig durch ihren *Realteil* z.real und ihren *Imaginärteil* z.imag bestimmt.
Polarkoordinaten bieten eine alternative Darstellung einer komplexen Zahl. In Polarkoordinaten wird eine komplexe Zahl z durch den Betrag r und den Phasenwinkel phi definiert. Der Betrag r ist der Abstand von z zum Ursprung, während die Phase phi der gegen den Uhrzeigersinn gemessene Winkel in Radiant ist, von der positiven x-Achse bis zum Liniensegment, das den Ursprung mit z verbindet.
Die folgenden Funktionen können verwendet werden, um von den nativen kartesischen Koordinaten in Polarkoordinaten und zurück umzuwandeln.
- cmath.phase(z)¶
Gibt die Phase von z (auch bekannt als Argument von z) als Gleitkommazahl zurück.
phase(z)ist äquivalent zumath.atan2(z.imag, z.real). Das Ergebnis liegt im Bereich [-π, π], und der Verzweigungsschnitt für diese Operation liegt entlang der negativen reellen Achse. Das Vorzeichen des Ergebnisses ist dasselbe wie das Vorzeichen vonz.imag, auch wennz.imagNull ist.>>> phase(-1+0j) 3.141592653589793 >>> phase(-1-0j) -3.141592653589793
Hinweis
Der Betrag (absolute Wert) einer komplexen Zahl z kann mit der eingebauten Funktion abs() berechnet werden. Es gibt keine separate Funktion im Modul cmath für diese Operation.
- cmath.polar(z)¶
Gibt die Darstellung von z in Polarkoordinaten zurück. Gibt ein Paar
(r, phi)zurück, wobei r der Betrag von z und phi die Phase von z ist.polar(z)ist äquivalent zu(abs(z), phase(z)).
- cmath.rect(r, phi)¶
Gibt die komplexe Zahl z mit Polarkoordinaten r und phi zurück. Äquivalent zu
complex(r * math.cos(phi), r * math.sin(phi)).
Potenz- und logarithmische Funktionen¶
- cmath.exp(z)¶
Gibt e hoch z zurück, wobei e die Basis der natürlichen Logarithmen ist.
- cmath.log(z[, base])¶
Gibt den Logarithmus von z zur gegebenen Basis zurück. Wenn die Basis nicht angegeben ist, wird der natürliche Logarithmus von z zurückgegeben. Es gibt einen Verzweigungsschnitt von 0 entlang der negativen reellen Achse bis -∞.
Trigonometrische Funktionen¶
- cmath.acos(z)¶
Gibt den Arkuskosinus von z zurück. Es gibt zwei Verzweigungsschnitte: Einer erstreckt sich von 1 entlang der reellen Achse nach rechts bis ∞. Der andere erstreckt sich von -1 entlang der reellen Achse nach links bis -∞.
- cmath.asin(z)¶
Gibt den Arkussinus von z zurück. Dies hat dieselben Verzweigungsschnitte wie
acos().
- cmath.atan(z)¶
Gibt den Arkustangens von z zurück. Es gibt zwei Verzweigungsschnitte: Einer erstreckt sich von
1jentlang der imaginären Achse bis∞j. Der andere erstreckt sich von-1jentlang der imaginären Achse bis-∞j.
- cmath.cos(z)¶
Gibt den Kosinus von z zurück.
- cmath.sin(z)¶
Gibt den Sinus von z zurück.
- cmath.tan(z)¶
Gibt den Tangens von z zurück.
Hyperbolische Funktionen¶
- cmath.acosh(z)¶
Gibt den inversen hyperbolischen Kosinus von z zurück. Es gibt einen Verzweigungsschnitt, der von 1 entlang der reellen Achse nach links bis -∞ reicht.
- cmath.asinh(z)¶
Gibt den inversen hyperbolischen Sinus von z zurück. Es gibt zwei Verzweigungsschnitte: Einer erstreckt sich von
1jentlang der imaginären Achse bis∞j. Der andere erstreckt sich von-1jentlang der imaginären Achse bis-∞j.
- cmath.atanh(z)¶
Gibt den inversen hyperbolischen Tangens von z zurück. Es gibt zwei Verzweigungsschnitte: Einer erstreckt sich von
1entlang der reellen Achse bis∞. Der andere erstreckt sich von-1entlang der reellen Achse bis-∞.
- cmath.cosh(z)¶
Gibt den hyperbolischen Kosinus von z zurück.
- cmath.sinh(z)¶
Gibt den hyperbolischen Sinus von z zurück.
- cmath.tanh(z)¶
Gibt den hyperbolischen Tangens von z zurück.
Klassifizierungsfunktionen¶
- cmath.isfinite(z)¶
Gibt
Truezurück, wenn sowohl der Real- als auch der Imaginärteil von z endlich sind, undFalseandernfalls.Hinzugefügt in Version 3.2.
- cmath.isinf(z)¶
Gibt
Truezurück, wenn entweder der Real- oder der Imaginärteil von z unendlich ist, undFalseandernfalls.
- cmath.isnan(z)¶
Gibt
Truezurück, wenn entweder der Real- oder der Imaginärteil von z eine NaN ist, undFalseandernfalls.
- cmath.isclose(a, b, *, rel_tol=1e-09, abs_tol=0.0)¶
Gibt
Truezurück, wenn die Werte a und b nahe beieinander liegen, undFalseandernfalls.Ob zwei Werte als nahe gelten, wird anhand der gegebenen absoluten und relativen Toleranzen bestimmt. Wenn keine Fehler auftreten, ist das Ergebnis:
abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol).rel_tol ist die relative Toleranz – sie ist die maximal zulässige Differenz zwischen a und b, relativ zum größeren Absolutwert von a oder b. Um beispielsweise eine Toleranz von 5 % festzulegen, übergeben Sie
rel_tol=0.05. Die Standardtoleranz beträgt1e-09, was sicherstellt, dass die beiden Werte innerhalb von etwa 9 Dezimalstellen gleich sind. rel_tol muss nicht negativ und kleiner als1.0sein.abs_tol ist die absolute Toleranz; sie hat den Standardwert
0.0und muss nicht negativ sein. Beim Vergleichen vonxmit0.0wirdisclose(x, 0)alsabs(x) <= rel_tol * abs(x)berechnet, was für jedesxund eine rel_tol kleiner als1.0Falseist. Fügen Sie daher ein geeignetes positives abs_tol-Argument zum Aufruf hinzu.Die speziellen IEEE 754-Werte
NaN,infund-infwerden gemäß den IEEE-Regeln behandelt. Insbesondere wirdNaNnicht als nahe an irgendeinem anderen Wert betrachtet, einschließlichNaN.infund-infwerden nur als nahe an sich selbst betrachtet.Hinzugefügt in Version 3.5.
Siehe auch
PEP 485 – Eine Funktion zum Testen von annähernder Gleichheit
Konstanten¶
- cmath.pi¶
Die mathematische Konstante π, als Gleitkommazahl.
- cmath.e¶
Die mathematische Konstante e, als Gleitkommazahl.
- cmath.tau¶
Die mathematische Konstante τ, als Gleitkommazahl.
Hinzugefügt in Version 3.6.
- cmath.inf¶
Fließkomma-positive Unendlichkeit. Äquivalent zu
float('inf').Hinzugefügt in Version 3.6.
- cmath.infj¶
Komplexe Zahl mit Realteil Null und imaginärem Teil positive Unendlichkeit. Äquivalent zu
complex(0.0, float('inf')).Hinzugefügt in Version 3.6.
- cmath.nan¶
Ein „Not a Number“ (NaN) Gleitkommawert. Äquivalent zu
float('nan'). Siehe auchmath.nan.Hinzugefügt in Version 3.6.
- cmath.nanj¶
Komplexe Zahl mit Realteil Null und imaginärem Teil NaN. Äquivalent zu
complex(0.0, float('nan')).Hinzugefügt in Version 3.6.
Beachten Sie, dass die Auswahl der Funktionen der im Modul math ähnelt, aber nicht identisch ist. Der Grund für die Existenz zweier Module ist, dass einige Benutzer nicht an komplexen Zahlen interessiert sind und vielleicht nicht einmal wissen, was diese sind. Sie würden es vorziehen, wenn math.sqrt(-1) eine Ausnahme auslöst, anstatt eine komplexe Zahl zurückzugeben. Beachten Sie auch, dass die im Modul cmath definierten Funktionen immer eine komplexe Zahl zurückgeben, selbst wenn das Ergebnis als reelle Zahl ausgedrückt werden kann (in diesem Fall hat die komplexe Zahl einen Imaginärteil von Null).
Ein Hinweis zu Verzweigungsschnitten: Dies sind Kurven, entlang derer die gegebene Funktion nicht stetig ist. Sie sind ein notwendiges Merkmal vieler komplexer Funktionen. Es wird davon ausgegangen, dass Sie Verzweigungsschnitte verstehen, wenn Sie mit komplexen Funktionen arbeiten müssen. Konsultieren Sie fast jedes (nicht zu elementare) Buch über komplexe Variablen, um Erleuchtung zu finden. Für Informationen über die richtige Wahl von Verzweigungsschnitten für numerische Zwecke sollte eine gute Referenz die folgende sein
Siehe auch
Kahan, W: Branch cuts for complex elementary functions; or, Much ado about nothing’s sign bit. In Iserles, A., and Powell, M. (eds.), The state of the art in numerical analysis. Clarendon Press (1987) pp165–211.