Python, нийлмэл тоонуудтай ажиллах цогц төрлүүд (үнэмлэхүй утга, бууралт, туйлын хувиргалт гэх мэт)

Бизнес эрхэлдэг

Python нь нийлмэл тоотой харьцах стандарт төрөл, COMPLEX төрөлтэй. Хэрэв та энгийн тооцоолол хийхийг хүсч байвал ямар ч модулийг импортлох шаардлагагүй, гэхдээ стандарт номын сангийн cmath-ийг импортлох юм бол нийлмэл тоонд харгалзах математик функцийг (экпоненциал, логарифм, тригонометр гэх мэт) ашиглаж болно.

Дараах агуулгыг энд жишээ кодоор тайлбарлав.

  • Нарийн төвөгтэй хувьсагчдыг үүсгэх
  • Бодит болон зохиомол хэсгүүдийг аваарай:real,imagшинж чанар
  • Хавсарсан нийлмэл тоонуудыг авах:conjugate()арга
  • Үнэмлэхүй утгыг авах (том):abs()функц (жишээлбэл, математик, програмчлал, програмчлал)
  • Буурал (үе шат) авах:math,cmathмодуль
  • Туйлын координатын хувиргалт (туйл хэлбэрийн дүрслэл):math,cmathмодуль
  • Комплекс тоонуудын тооцоо (квадрат, зэрэглэл, квадрат язгуур)

Нарийн төвөгтэй хувьсагчдыг үүсгэх

Төсөөллийн нэгжийг j-ээр тэмдэглээд дараахь зүйлийг бичнэ үү, энэ нь i биш гэдгийг анхаарна уу.

c = 3 + 4j

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

Хэрэв төсөөллийн хэсэг нь 1 бол үүнийг орхигдвол NameError гарч ирнэ. Хэрэв j нэртэй хувьсагч эхлээд тодорхойлогдсон бол түүнийг тухайн хувьсагч гэж үзнэ.

1j
Үүнийг ингэж тодорхой хэлэх ёстой.

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

c = 3 + 1j

print(c)
# (3+1j)

Хэрэв бодит хэсэг нь 0 бол үүнийг орхиж болно.

c = 3j

print(c)
# 3j

Хэрэв та 0-ийн төсөөллийн хэсэгтэй утгыг нийлмэл цогц төрөл гэж тодорхойлохыг хүсвэл 0 гэж тодорхой бичнэ үү. Доор тайлбарласны дагуу нарийн төвөгтэй төрөл ба бүхэл тоо эсвэл хөвөгч цэгийн төрлүүдийн хооронд үйлдлүүд хийж болно.

c = 3 + 0j

print(c)
# (3+0j)

Бодит болон төсөөллийн хэсгүүдийг хөвөгч цэгийн хөвөгч төрөл гэж тодорхойлж болно. Экспоненциал тэмдэглэгээг бас зөвшөөрнө.

c = 1.2e3 + 3j

print(c)
# (1200+3j)

Үүнийг мөн “цогцолбор(бодит хэсэг, төсөөллийн хэсэг)&#8221;-ийн нэгэн адил “цогцолбор&#8221; төрлийн бүтээгч үүсгэж болно.

c = complex(3, 4)

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

Комплекс тоонуудын бодит ба төсөөлөлтэй хэсгүүдийг олоорой:real,imagшинж чанар

Нарийн төвөгтэй хэлбэрийн бодит ба төсөөллийн хэсгүүдийг бодит ба дүрслэлийн шинж чанаруудаар тус тус авч болно. Аль аль нь хөвөх цэгийн хөвөгч төрөл юм.

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

Энэ нь зөвхөн унших боломжтой бөгөөд өөрчлөх боломжгүй.

# c.real = 5.5
# AttributeError: readonly attribute

Хавсарсан нийлмэл тоонуудыг авах:conjugate()

Коньюгат комплекс тоо авахын тулд conjugate() аргыг ашиглана.

c = 3 + 4j

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

Комплекс тооны үнэмлэхүй утгыг (магнитудын) авна:abs()

Комплекс тооны үнэмлэхүй утгыг (том) авахын тулд abs() функцийг ашиглана уу.

c = 3 + 4j

print(abs(c))
# 5.0

c = 1 + 1j

print(abs(c))
# 1.4142135623730951

Комплекс тооны бууралтыг (үе шат) авна:math,cmathмодуль

Комплекс тооны хазайлтыг (фаз) авахын тулд математик эсвэл смат модулийг ашиглана уу.

cmath модуль нь нийлмэл тоонуудын математик функцийн модуль юм.

Үүнийг тодорхойлсон урвуу шүргэгч функцээр math.atan2()-аар тооцоолж болно, эсвэл хазайлтыг (фаз) буцаадаг cmath.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

Аль ч тохиолдолд өнцгийн нэгж нь радиан юм. Зэрэг рүү хөрвүүлэхийн тулд math.degrees() ашиглана уу.

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

Комплекс тоон туйлын координатын хувиргалт (туйлт албан ёсны дүрслэл):math,cmathмодуль

Дээр дурдсанчлан нийлмэл тооны абсолют утга (магнитуд) ба бууралтыг (фаз) авч болох боловч cmath.polar()-г ашиглан тэдгээрийг (үнэмлэхүй утга, бууралт) хамт авч болно.

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

Туйлын координатаас декарт координат руу хөрвүүлэх үйлдлийг cmath.rect() ашиглан хийнэ. cmath.rect(үнэмлэхүй утга, хазайлт) болон ижил төстэй аргументуудыг ашиглан эквивалент комплекс комплекс комплекс төрлийн утгуудыг гаргаж болно.

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)

Бодит болон төсөөллийн хэсгүүд нь үнэмлэхүй утгууд болон хазайлтын өнцгөөс cosinus math.cos() ба синус math.sin()-аар тооцсон үр дүнтэй тэнцүү байна.

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

Комплекс тоонуудын тооцоо (квадрат, зэрэглэл, квадрат язгуур)

Ердийн арифметик операторуудыг ашиглан дөрвөн арифметик үйлдэл, хүчийг тооцоолох боломжтой.

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)

Квадрат язгуурыг **0.5-аар тооцоолж болох боловч алдаа гаргадаг. cmath.sqrt()-г ашиглан яг утгыг тооцоолж болно.

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

Мөн нийлмэл төрлүүд, int төрлүүд, хөвөгч төрлүүдтэй арифметик үйлдлүүдийг гүйцэтгэх боломжтой.

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

print(c1 * 0.5)
# (1.5+2j)