Python ka një tip standard për trajtimin e numrave kompleks, llojin KOMPLEX. Nëse dëshironi të bëni vetëm llogaritje të thjeshta, nuk keni nevojë të importoni asnjë modul, por nëse importoni cmath standarde të bibliotekës, mund të përdorni edhe funksione matematikore (eksponenciale, logaritmike, trigonometrike, etj.) që korrespondojnë me numrat kompleks.
Përmbajtja e mëposhtme shpjegohet këtu me kodin e mostrës.
- Gjeneroni variabla komplekse
- Merrni pjesë reale dhe imagjinare:
real
,imag
atribut - Merrni numra komplekse të konjuguar:
conjugate()
metodë - Merrni vlerën absolute (madhësinë):
abs()
funksion (p.sh. matematikë, programim, programim) - Marrja e deklinimit (faza):
math
,cmath
modul - Transformimi i koordinatave polare (përfaqësimi i formës polare):
math
,cmath
modul - Llogaritja e numrave kompleksë (kuadratura, fuqitë, rrënjët katrore)
- Gjeneroni variabla komplekse
- Merrni pjesë reale dhe imagjinare të numrave kompleksë:real,imagatribut
- Merrni numra komplekse të konjuguar:conjugate()
- Merrni vlerën (madhësinë) absolute të një numri kompleks:abs()
- Merrni deklinalin (fazën) e një numri kompleks:math,cmathmodul
- Transformimi i koordinatave polare të numrave kompleks (paraqitja formale polare):math,cmathmodul
- Llogaritja e numrave kompleksë (kuadratura, fuqitë, rrënjët katrore)
Gjeneroni variabla komplekse
Shënoni njësinë imagjinare me j dhe shkruani sa vijon, vini re se nuk është i.
c = 3 + 4j
print(c)
print(type(c))
# (3+4j)
# <class 'complex'>
Nëse pjesa imagjinare është 1, heqja e saj rezulton në një Gabim Emri. Nëse së pari përcaktohet një ndryshore me emrin j, ajo konsiderohet të jetë ajo ndryshore.
1j
Duhet të shprehet qartë në këtë mënyrë.
# c = 3 + j
# NameError: name 'j' is not defined
c = 3 + 1j
print(c)
# (3+1j)
Nëse pjesa reale është 0, ajo mund të hiqet.
c = 3j
print(c)
# 3j
Nëse dëshironi të përcaktoni një vlerë me një pjesë imagjinare të 0 si një lloj kompleks kompleks, shkruani 0 në mënyrë eksplicite. Siç përshkruhet më poshtë, operacionet mund të kryhen midis tipit kompleks dhe tipit të plotë ose tipit me pikë lundruese.
c = 3 + 0j
print(c)
# (3+0j)
Pjesët reale dhe imagjinare mund të specifikohen si tip float me pikë lundruese. Shënimi eksponencial është gjithashtu i pranueshëm.
c = 1.2e3 + 3j
print(c)
# (1200+3j)
Mund të gjenerohet gjithashtu nga një konstruktor i tipit “kompleks”, si në “kompleks(pjesë reale, pjesë imagjinare)”.
c = complex(3, 4)
print(c)
print(type(c))
# (3+4j)
# <class 'complex'>
Merrni pjesë reale dhe imagjinare të numrave kompleksë:real,imagatribut
Pjesët reale dhe imagjinare të një lloji kompleks kompleks mund të merren përkatësisht me atributet reale dhe imazhore. Të dyja janë lloje notuese me pikë lundruese.
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'>
Lexohet vetëm dhe nuk mund të ndryshohet.
# c.real = 5.5
# AttributeError: readonly attribute
Merrni numra komplekse të konjuguar:conjugate()
Për të marrë numra komplekse të konjuguar, përdorni metodën conjugate().
c = 3 + 4j
print(c.conjugate())
# (3-4j)
Merrni vlerën (madhësinë) absolute të një numri kompleks:abs()
Për të marrë vlerën (madhësinë) absolute të një numri kompleks, përdorni funksionin e integruar abs().
c = 3 + 4j
print(abs(c))
# 5.0
c = 1 + 1j
print(abs(c))
# 1.4142135623730951
Merrni deklinalin (fazën) e një numri kompleks:math,cmathmodul
Për të marrë deklinimin (fazën) e një numri kompleks, përdorni modulin matematikë ose cmath.
Moduli cmath është një modul funksioni matematikor për numrat kompleks.
Mund të llogaritet me funksionin e anasjelltë tangjente math.atan2() siç përcaktohet, ose të përdor cmath.phase(), e cila kthen deklinimin (fazën).
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
Në të dyja rastet, njësia e këndit që mund të merret është radianet. Për të kthyer në gradë, përdorni math.degrees().
print(math.degrees(cmath.phase(c)))
# 45.0
Transformimi i koordinatave polare të numrave kompleks (paraqitja formale polare):math,cmathmodul
Siç u përmend më lart, vlera absolute (madhësia) dhe deklinimi (faza) e një numri kompleks mund të merren, por duke përdorur cmath.polar(), ato mund të përftohen së bashku si një tufë (vlerë absolute, deklinacion).
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
Shndërrimi nga koordinatat polare në koordinatat karteziane bëhet duke përdorur cmath.rect(). cmath.rect (vlera absolute, devijimi) dhe argumente të ngjashme mund të përdoren për të marrë vlera të tipit kompleks kompleks ekuivalent.
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)
Pjesët reale dhe imagjinare janë ekuivalente me rezultatet e llogaritura nga kosinusi math.cos() dhe sinus math.sin() nga vlerat absolute dhe këndet e deklinimit.
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
Llogaritja e numrave kompleksë (kuadratura, fuqitë, rrënjët katrore)
Katër operacione aritmetike dhe llogaritjet e fuqisë mund të kryhen duke përdorur operatorët e zakonshëm aritmetikë.
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)
Rrënja katrore mund të llogaritet me **0.5, por paraqet gabim. cmath.sqrt() mund të përdoret për të llogaritur vlerën e saktë.
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
Ai gjithashtu mund të kryejë operacione aritmetike me lloje komplekse, tipe int dhe lloje float.
print(c1 + 3)
# (6+4j)
print(c1 * 0.5)
# (1.5+2j)