Python nduweni jinis standar kanggo nangani nomer kompleks, jinis COMPLEX. Yen sampeyan mung pengin nggawe petungan prasaja, sampeyan ora perlu ngimpor modul sembarang, nanging yen sampeyan ngimpor perpustakaan standar cmath, sampeyan uga bisa nggunakake fungsi matematika (eksponensial, logaritma, trigonometri, etc.) cocog kanggo nomer Komplek.
Isi ing ngisor iki diterangake ing kene kanthi kode conto.
- Nggawe variabel kompleks
- Entuk bagean nyata lan khayalan:
real
,imag
atribut - Entuk bilangan kompleks konjugasi:
conjugate()
cara - Entuk nilai absolut (gedhe):
abs()
fungsi (misal matematika, pemrograman, pemrograman) - Entuk deklinasi (fase):
math
,cmath
modul - Transformasi koordinat polar (representasi bentuk polar):
math
,cmath
modul - Penghitungan bilangan kompleks (kuadrat, pangkat, akar kuadrat)
- Nggawe variabel kompleks
- Entuk bagean nyata lan khayalan saka nomer kompleks:real,imagatribut
- Entuk bilangan kompleks konjugasi:conjugate()
- Entuk nilai absolut (gedhe) saka nomer kompleks:abs()
- Entuk deklinasi (fase) saka bilangan kompleks:math,cmathmodul
- Transformasi koordinat kutub bilangan kompleks (representasi formal polar):math,cmathmodul
- Penghitungan bilangan kompleks (kuadrat, pangkat, akar kuadrat)
Nggawe variabel kompleks
Tegese unit khayalan kanthi j lan tulisen ing ngisor iki, elinga yen dudu i.
c = 3 + 4j
print(c)
print(type(c))
# (3+4j)
# <class 'complex'>
Yen bagean imajiner 1, ngilangi bakal nyebabake NameError. Yen variabel sing dijenengi j ditetepake dhisik, iki dianggep minangka variabel kasebut.
1j
Sampeyan kudu kasebut kanthi tegas kanthi cara iki.
# c = 3 + j
# NameError: name 'j' is not defined
c = 3 + 1j
print(c)
# (3+1j)
Yen bagean nyata 0, bisa diilangi.
c = 3j
print(c)
# 3j
Yen sampeyan pengin nemtokake nilai kanthi bagean khayalan 0 minangka jinis kompleks kompleks, tulis 0 kanthi jelas. Kaya sing diterangake ing ngisor iki, operasi bisa ditindakake ing antarane jinis kompleks lan jinis integer utawa jinis floating-point.
c = 3 + 0j
print(c)
# (3+0j)
Bagean nyata lan khayalan bisa ditemtokake minangka jinis floating-point float. Notasi eksponensial uga bisa ditampa.
c = 1.2e3 + 3j
print(c)
# (1200+3j)
Bisa uga digawe dening konstruktor saka jinis “kompleks”, kaya ing “kompleks (bagean nyata, bagean khayalan)”.
c = complex(3, 4)
print(c)
print(type(c))
# (3+4j)
# <class 'complex'>
Entuk bagean nyata lan khayalan saka nomer kompleks:real,imagatribut
Bagean nyata lan khayalan saka jinis kompleks kompleks bisa dipikolehi kanthi atribut nyata lan gambar. Loro-lorone minangka jinis floating-point float.
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'>
Iku mung diwaca lan ora bisa diganti.
# c.real = 5.5
# AttributeError: readonly attribute
Entuk bilangan kompleks konjugasi:conjugate()
Kanggo njupuk conjugate nomer Komplek, nggunakake conjugate () cara.
c = 3 + 4j
print(c.conjugate())
# (3-4j)
Entuk nilai absolut (gedhe) saka nomer kompleks:abs()
Kanggo njupuk nilai absolut (gedhe) saka nomer Komplek, nggunakake dibangun ing fungsi abs ().
c = 3 + 4j
print(abs(c))
# 5.0
c = 1 + 1j
print(abs(c))
# 1.4142135623730951
Entuk deklinasi (fase) saka bilangan kompleks:math,cmathmodul
Kanggo entuk deklinasi (fase) saka nomer kompleks, gunakake modul math utawa cmath.
Modul cmath minangka modul fungsi matematika kanggo nomer kompleks.
Bisa diwilang karo fungsi tangent kuwalik math.atan2 () minangka ditetepake, utawa nggunakake cmath.phase (), kang ngasilake deklinasi (phase).
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
Ing kasus kasebut, unit sudut sing bisa dipikolehi yaiku radian. Kanggo ngowahi derajat, nggunakake math.degrees ().
print(math.degrees(cmath.phase(c)))
# 45.0
Transformasi koordinat kutub bilangan kompleks (representasi formal polar):math,cmathmodul
Kaya kasebut ing ndhuwur, nilai absolut (gedhe) lan deklinasi (phase) saka nomer Komplek bisa dijupuk, nanging nggunakake cmath.polar (), padha bisa dijupuk bebarengan minangka (Nilai absolut, deklinasi) 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
Konversi saka koordinat polar kanggo koordinat Cartesian wis rampung nggunakake cmath.rect (). cmath.rect (nilai absolut, penyimpangan) lan argumen sing padha bisa digunakake kanggo entuk nilai saka jinis kompleks kompleks sing padha.
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)
Bagean nyata lan maye padha karo asil diwilang dening cosine math.cos () lan sinus math.sin () saka nilai Absolute lan ngarepke deklinasi.
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
Penghitungan bilangan kompleks (kuadrat, pangkat, akar kuadrat)
Papat operasi aritmetika lan petungan daya bisa ditindakake kanthi nggunakake operator aritmetika biasa.
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)
ROOT kothak bisa diwilang karo ** 0,5, nanging pirso kesalahan. cmath.sqrt () bisa digunakake kanggo ngetung Nilai pas.
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
Uga bisa nindakake operasi aritmetika kanthi jinis kompleks, jinis int, lan jinis float.
print(c1 + 3)
# (6+4j)
print(c1 * 0.5)
# (1.5+2j)