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

phase(z)

Gibt die Phase von z zurück

polar(z)

Gibt die Darstellung von z in Polarkoordinaten zurück

rect(r, phi)

Gibt die komplexe Zahl z mit Polarkoordinaten r und phi zurück

Potenz- und Logarithmusfunktionen

exp(z)

Gibt e hoch z zurück

log(z[, base])

Gibt den Logarithmus von z zur gegebenen Basis zurück (standardmäßig e)

log10(z)

Gibt den Logarithmus von z zur Basis 10 zurück

sqrt(z)

Gibt die Quadratwurzel von z zurück

Trigonometrische Funktionen

acos(z)

Gibt den Arkuskosinus von z zurück

asin(z)

Gibt den Arkussinus von z zurück

atan(z)

Gibt den Arkustangens von z zurück

cos(z)

Gibt den Kosinus von z zurück

sin(z)

Gibt den Sinus von z zurück

tan(z)

Gibt den Tangens von z zurück

Hyperbolische Funktionen

acosh(z)

Gibt den inversen hyperbolischen Kosinus von z zurück

asinh(z)

Gibt den inversen hyperbolischen Sinus von z zurück

atanh(z)

Gibt den inversen hyperbolischen Tangens von z zurück

cosh(z)

Gibt den hyperbolischen Kosinus von z zurück

sinh(z)

Gibt den hyperbolischen Sinus von z zurück

tanh(z)

Gibt den hyperbolischen Tangens von z zurück

Klassifikationsfunktionen

isfinite(z)

Prüft, ob alle Komponenten von z endlich sind

isinf(z)

Prüft, ob eine Komponente von z unendlich ist

isnan(z)

Prüft, ob eine Komponente von z NaN (Not a Number) ist

isclose(a, b, *, rel_tol, abs_tol)

Prüft, ob die Werte a und b nahe beieinander liegen

Konstanten

pi

π = 3.141592…

e

e = 2.718281…

tau

τ = 2π = 6.283185…

inf

Positive Unendlichkeit

infj

Rein imaginäre Unendlichkeit

nan

„Keine Zahl“ (NaN)

nanj

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 zu math.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 von z.imag, auch wenn z.imag Null 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 -∞.

cmath.log10(z)

Gibt den Logarithmus von z zur Basis 10 zurück. Dies hat denselben Verzweigungsschnitt wie log().

cmath.sqrt(z)

Gibt die Quadratwurzel von z zurück. Dies hat denselben Verzweigungsschnitt wie log().

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 1j entlang der imaginären Achse bis ∞j. Der andere erstreckt sich von -1j entlang 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 1j entlang der imaginären Achse bis ∞j. Der andere erstreckt sich von -1j entlang 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 1 entlang der reellen Achse bis . Der andere erstreckt sich von -1 entlang 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 True zurück, wenn sowohl der Real- als auch der Imaginärteil von z endlich sind, und False andernfalls.

Hinzugefügt in Version 3.2.

cmath.isinf(z)

Gibt True zurück, wenn entweder der Real- oder der Imaginärteil von z unendlich ist, und False andernfalls.

cmath.isnan(z)

Gibt True zurück, wenn entweder der Real- oder der Imaginärteil von z eine NaN ist, und False andernfalls.

cmath.isclose(a, b, *, rel_tol=1e-09, abs_tol=0.0)

Gibt True zurück, wenn die Werte a und b nahe beieinander liegen, und False andernfalls.

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ägt 1e-09, was sicherstellt, dass die beiden Werte innerhalb von etwa 9 Dezimalstellen gleich sind. rel_tol muss nicht negativ und kleiner als 1.0 sein.

abs_tol ist die absolute Toleranz; sie hat den Standardwert 0.0 und muss nicht negativ sein. Beim Vergleichen von x mit 0.0 wird isclose(x, 0) als abs(x) <= rel_tol  * abs(x) berechnet, was für jedes x und eine rel_tol kleiner als 1.0 False ist. Fügen Sie daher ein geeignetes positives abs_tol-Argument zum Aufruf hinzu.

Die speziellen IEEE 754-Werte NaN, inf und -inf werden gemäß den IEEE-Regeln behandelt. Insbesondere wird NaN nicht als nahe an irgendeinem anderen Wert betrachtet, einschließlich NaN. inf und -inf werden 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 auch math.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.