Python, komplexe Typen für die Arbeit mit komplexen Zahlen (Absolutwerte, Deklination, Polartransformationen usw.)

Geschäft

Python hat einen Standardtyp für den Umgang mit komplexen Zahlen, den Typ COMPLEX. Wenn Sie nur einfache Berechnungen durchführen wollen, brauchen Sie keine Module zu importieren, aber wenn Sie die Standardbibliothek cmath importieren, können Sie auch mathematische Funktionen (exponentielle, logarithmische, trigonometrische usw.) verwenden, die komplexen Zahlen entsprechen.

Die folgenden Inhalte werden hier mit Beispielcode erläutert.

  • Komplexe Variablen generieren
  • Reale und imaginäre Teile erhalten:real,imagAttribut
  • Konjugiert komplexe Zahlen erhalten:conjugate()Methode
  • Absolutwert (Betrag) ermitteln:abs()Funktion (z. B. Mathe, Programmieren, Programmieren)
  • Deklination (Phase) erhalten:math,cmathModul
  • Polarkoordinatentransformation (Darstellung in Polarform):math,cmathModul
  • Berechnung von komplexen Zahlen (Quadratur, Potenzen, Quadratwurzeln)

Komplexe Variablen generieren

Bezeichne die imaginäre Einheit mit j und schreibe das Folgende, beachte, dass es nicht i ist.

c = 3 + 4j

print(c)
print(type(c))
# (3+4j)
# <class 'complex'>

Wenn der Imaginärteil 1 ist, führt das Weglassen dieses Teils zu einem NameError. Wenn eine Variable mit dem Namen j zuerst definiert wird, wird sie als diese Variable betrachtet.

1j
Sie sollte ausdrücklich so formuliert werden.

# c = 3 + j
# NameError: name 'j' is not defined

c = 3 + 1j

print(c)
# (3+1j)

Wenn der Realteil 0 ist, kann er weggelassen werden.

c = 3j

print(c)
# 3j

Wenn Sie einen Wert mit einem Imaginärteil von 0 als komplexen Typ definieren wollen, schreiben Sie explizit 0. Wie unten beschrieben, können Operationen zwischen dem komplexen Typ und dem Ganzzahl- oder Gleitkommatyp durchgeführt werden.

c = 3 + 0j

print(c)
# (3+0j)

Real- und Imaginärteil können als Gleitkomma-Float-Typ angegeben werden. Die Exponentialschreibweise ist ebenfalls zulässig.

c = 1.2e3 + 3j

print(c)
# (1200+3j)

Er kann auch durch einen Konstruktor vom Typ “komplex” erzeugt werden, wie in “komplex(Realteil, Imaginärteil)”.

c = complex(3, 4)

print(c)
print(type(c))
# (3+4j)
# <class 'complex'>

Real- und Imaginärteile von komplexen Zahlen ermitteln: real, imagAttribut

Die Real- und Imaginärteile eines komplexen komplexen Typs können mit den Attributen real bzw. imag ermittelt werden. Beides sind Fließkomma-Float-Typen.

c = 3 + 4j

print(c.real)
print(type(c.real))
# 3.0
# <class 'float'>

print(c.imag)
print(type(c.imag))
# 4.0
# <class 'float'>

Sie ist schreibgeschützt und kann nicht geändert werden.

# c.real = 5.5
# AttributeError: readonly attribute

Konjugiert komplexe Zahlen erhalten: conjugate()

Um konjugierte komplexe Zahlen zu erhalten, verwenden Sie die Methode conjugate().

c = 3 + 4j

print(c.conjugate())
# (3-4j)

Ermitteln des Absolutwerts (Betrags) einer komplexen Zahl: abs()

Um den Absolutwert (Betrag) einer komplexen Zahl zu erhalten, verwenden Sie die eingebaute Funktion abs().

c = 3 + 4j

print(abs(c))
# 5.0

c = 1 + 1j

print(abs(c))
# 1.4142135623730951

Ermitteln der Deklination (Phase) einer komplexen Zahl: math, cmathModul

Um die Deklination (Phase) einer komplexen Zahl zu erhalten, verwenden Sie das Modul math oder cmath.

Das Modul cmath ist ein mathematisches Funktionsmodul für komplexe Zahlen.

Sie kann mit der Funktion für den inversen Tangens math.atan2() berechnet werden, oder mit cmath.phase(), die die Deklination (Phase) liefert.

import cmath
import math

c = 1 + 1j

print(math.atan2(c.imag, c.real))
# 0.7853981633974483

print(cmath.phase(c))
# 0.7853981633974483

print(cmath.phase(c) == math.atan2(c.imag, c.real))
# True

In beiden Fällen ist die Einheit des Winkels, die man erhalten kann, Bogenmaß. Um in Grad umzurechnen, verwenden Sie math.degrees().

print(math.degrees(cmath.phase(c)))
# 45.0

Polarkoordinatentransformation der komplexen Zahlen (polare formale Darstellung): math, cmathModul

Wie bereits erwähnt, können der Absolutwert (Betrag) und die Deklination (Phase) einer komplexen Zahl ermittelt werden, aber mit cmath.polar() können sie zusammen als ein Tupel (Absolutwert, Deklination) ermittelt werden.

c = 1 + 1j

print(cmath.polar(c))
print(type(cmath.polar(c)))
# (1.4142135623730951, 0.7853981633974483)
# <class 'tuple'>

print(cmath.polar(c)[0] == abs(c))
# True

print(cmath.polar(c)[1] == cmath.phase(c))
# True

Die Umrechnung von Polarkoordinaten in kartesische Koordinaten erfolgt mit cmath.rect(). cmath.rect(Absolutwert, Abweichung) und ähnliche Argumente können verwendet werden, um Werte vom äquivalenten Typ komplexer Komplexe zu erhalten.

print(cmath.rect(1, 1))
# (0.5403023058681398+0.8414709848078965j)

print(cmath.rect(1, 0))
# (1+0j)

print(cmath.rect(cmath.polar(c)[0], cmath.polar(c)[1]))
# (1.0000000000000002+1j)

Real- und Imaginärteil entsprechen den Ergebnissen, die mit cosine math.cos() und sine math.sin() aus Absolutwerten und Deklinationswinkeln berechnet werden.

r = 2
ph = math.pi

print(cmath.rect(r, ph).real == r * math.cos(ph))
# True

print(cmath.rect(r, ph).imag == r * math.sin(ph))
# True

Berechnung von komplexen Zahlen (Quadratur, Potenzen, Quadratwurzeln)

Vier arithmetische Operationen und Potenzberechnungen können mit den üblichen arithmetischen Operatoren durchgeführt werden.

c1 = 3 + 4j
c2 = 2 - 1j

print(c1 + c2)
# (5+3j)

print(c1 - c2)
# (1+5j)

print(c1 * c2)
# (10+5j)

print(c1 / c2)
# (0.4+2.2j)

print(c1 ** 3)
# (-117+44j)

Die Quadratwurzel kann mit **0,5 berechnet werden, aber das führt zu Fehlern. cmath.sqrt() kann verwendet werden, um den genauen Wert zu berechnen.

print((-3 + 4j) ** 0.5)
# (1.0000000000000002+2j)

print((-1) ** 0.5)
# (6.123233995736766e-17+1j)

print(cmath.sqrt(-3 + 4j))
# (1+2j)

print(cmath.sqrt(-1))
# 1j

Sie kann auch arithmetische Operationen mit komplexen Typen, int-Typen und Float-Typen durchführen.

print(c1 + 3)
# (6+4j)

print(c1 * 0.5)
# (1.5+2j)
Copied title and URL