Python, flóknar gerðir til að vinna með flóknar tölur (alger gildi, hnignun, skautbreytingar osfrv.)

Viðskipti

Python er með staðlaða gerð til að meðhöndla flóknar tölur, COMPLEX gerðin. Ef þú vilt bara gera einfalda útreikninga þarftu ekki að flytja inn neinar einingar, en ef þú flytur inn staðlaða bókasafnið cmath geturðu líka notað stærðfræðiföll (veldisvísis, lógaritmísk, trigonometric o.s.frv.) sem samsvara flóknum tölum.

Eftirfarandi innihald er útskýrt hér með sýnishornskóða.

  • Búðu til flóknar breytur
  • Fáðu raunverulega og ímyndaða hluta:real,imageiginleiki
  • Fáðu samtengdar tvinntölur:conjugate()aðferð
  • Fáðu algildi (stærð):abs()fall (t.d. stærðfræði, forritun, forritun)
  • Fá höfnun (áfangi):math,cmathmát
  • Umbreyting pólhnita (framsetning skautforms):math,cmathmát
  • Útreikningur á tvinntölum (ferningur, veldi, ferningsrætur)

Búðu til flóknar breytur

Táknaðu ímynduðu eininguna með j og skrifaðu eftirfarandi, athugaðu að það er ekki i.

c = 3 + 4j

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

Ef ímyndaði hlutinn er 1 leiðir það til NameError ef honum er sleppt. Ef breyta sem heitir j er skilgreind fyrst telst hún vera sú breyta.

1j
Það ætti að vera skýrt tekið fram með þessum hætti.

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

c = 3 + 1j

print(c)
# (3+1j)

Ef raunhlutinn er 0 má sleppa honum.

c = 3j

print(c)
# 3j

Ef þú vilt skilgreina gildi með ímyndaðan hluta 0 sem flókna flókna gerð skaltu skrifa 0 sérstaklega. Eins og lýst er hér að neðan er hægt að framkvæma aðgerðir á milli flóknu tegundarinnar og heiltölugerðarinnar eða fljótandi tegundarinnar.

c = 3 + 0j

print(c)
# (3+0j)

Hægt er að tilgreina raunverulega og ímyndaða hluta sem flotategund. Veldismerking er einnig ásættanleg.

c = 1.2e3 + 3j

print(c)
# (1200+3j)

Það er líka hægt að búa það til af byggingaraðila af gerðinni „flókinn“, eins og í „flókinn(raunverulegur hluti, ímyndaður hluti)“.

c = complex(3, 4)

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

Fáðu raunverulega og ímyndaða hluta af flóknum tölum:real,imageiginleiki

Raunverulega og ímyndaða hluta flókinnar flókinnar tegundar er hægt að fá með raunverulegum og myndeiginleikum, í sömu röð. Báðar eru fljótandi flotgerðir.

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'>

Það er eingöngu lesið og er ekki hægt að breyta því.

# c.real = 5.5
# AttributeError: readonly attribute

Fáðu samtengdar tvinntölur:conjugate()

Til að fá samtengdar tvinntölur skaltu nota conjugate() aðferðina.

c = 3 + 4j

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

Fáðu algildi (stærð) tvinntölu:abs()

Til að fá algildi (stærð) tvinntölu, notaðu innbyggða fallið abs().

c = 3 + 4j

print(abs(c))
# 5.0

c = 1 + 1j

print(abs(c))
# 1.4142135623730951

Fáðu fallfall (fasa) tvinntölu:math,cmathmát

Til að fá fallfall (fasa) tvinntölu, notaðu stærðfræði- eða cmath-eininguna.

cmath einingin er stærðfræðileg falleining fyrir flóknar tölur.

Það er hægt að reikna það með andhverfu snertilfallinu math.atan2() eins og það er skilgreint, eða nota cmath.phase(), sem skilar hnignuninni (fasa).

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

Í báðum tilfellum er horneiningin sem hægt er að fá radíanar. Til að breyta í gráður, notaðu math.degrees().

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

Pólhnitaumbreyting tvinntalna (pólformleg framsetning):math,cmathmát

Eins og fyrr segir er hægt að fá algildi (stærð) og fallfall (fasa) tvinntölu, en með því að nota cmath.polar() er hægt að fá þau saman sem (algert gildi, declination) tuple.

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

Umbreyting frá pólhnitum í kartesísk hnit er gerð með því að nota cmath.rect(). cmath.rect(algert gildi, frávik) og svipuð rök er hægt að nota til að fá gildi af samsvarandi flóknu flóknu tegundinni.

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)

Raunverulegir og ímyndaðir hlutar eru jafngildir niðurstöðum sem reiknaðar eru með cosinus math.cos() og sinus math.sin() út frá algildum og hallahornum.

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

Útreikningur á tvinntölum (ferningur, veldi, ferningsrætur)

Hægt er að framkvæma fjórar reikningsaðgerðir og kraftútreikninga með því að nota venjulega reikningsaðgerðir.

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)

Kvaðratrót er hægt að reikna með **0,5, en það kynnir villu. cmath.sqrt() er hægt að nota til að reikna út nákvæmlega gildið.

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

Það getur einnig framkvæmt reikniaðgerðir með flóknum gerðum, int gerðum og flotgerðum.

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

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