Python, kompleks ədədlərlə işləmək üçün kompleks növlər (mütləq dəyərlər, meyl, qütb çevrilmələri və s.)

Biznes

Python mürəkkəb nömrələri idarə etmək üçün standart tipə malikdir, KOMPLEKS tipi. Əgər sadəcə sadə hesablamalar aparmaq istəyirsinizsə, heç bir modulu idxal etməyə ehtiyac yoxdur, lakin standart kitabxana cmathını idxal etsəniz, kompleks ədədlərə uyğun gələn riyazi funksiyalardan (eksponensial, loqarifmik, triqonometrik və s.) da istifadə edə bilərsiniz.

Aşağıdakı məzmunlar burada nümunə kodu ilə izah olunur.

  • Kompleks dəyişənlər yaradın
  • Həqiqi və xəyali hissələri əldə edin:real,imagatribut
  • Birləşən kompleks ədədlər alın:conjugate()üsul
  • Mütləq dəyər əldə edin (bölgə):abs()funksiya (məsələn, riyaziyyat, proqramlaşdırma, proqramlaşdırma)
  • Meyil (faza) əldə edin:math,cmathmodul
  • Qütb koordinatlarının çevrilməsi (qütb formasında təmsil):math,cmathmodul
  • Kompleks ədədlərin hesablanması (kvadrat, dərəcələr, kvadrat köklər)

Kompleks dəyişənlər yaradın

Xəyali vahidi j ilə işarələyin və aşağıdakıları yazın, onun i olmadığını qeyd edin.

c = 3 + 4j

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

Xəyali hissə 1-dirsə, onu buraxmaq NameError ilə nəticələnir. Əgər j adlı dəyişən əvvəlcə müəyyən edilirsə, o, həmin dəyişən hesab olunur.

1j
Bu şəkildə açıq şəkildə ifadə edilməlidir.

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

c = 3 + 1j

print(c)
# (3+1j)

Həqiqi hissə 0 olarsa, onu buraxmaq olar.

c = 3j

print(c)
# 3j

Əgər 0-ın xəyali hissəsi olan dəyəri mürəkkəb kompleks tip kimi təyin etmək istəyirsinizsə, açıq şəkildə 0 yazın. Aşağıda təsvir olunduğu kimi, əməliyyatlar kompleks tip və tam tip və ya üzən nöqtə tipi arasında yerinə yetirilə bilər.

c = 3 + 0j

print(c)
# (3+0j)

Həqiqi və xəyali hissələr üzən nöqtəli float növü kimi təyin edilə bilər. Eksponensial qeyd də məqbuldur.

c = 1.2e3 + 3j

print(c)
# (1200+3j)

O, həmçinin “kompleks(real hissə, xəyali hissə)” kimi “kompleks” tipli konstruktor tərəfindən yaradıla bilər.

c = complex(3, 4)

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

Kompleks ədədlərin həqiqi və xəyali hissələrini alın:real,imagatribut

Mürəkkəb kompleks növün həqiqi və xəyali hissələri müvafiq olaraq real və təsvir atributları ilə əldə edilə bilər. Hər ikisi üzən nöqtəli float növləridir.

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

Yalnız oxunur və dəyişdirilə bilməz.

# c.real = 5.5
# AttributeError: readonly attribute

Birləşən kompleks ədədlər alın:conjugate()

Birləşən kompleks ədədləri əldə etmək üçün konjugat() metodundan istifadə edin.

c = 3 + 4j

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

Kompleks ədədin mütləq qiymətini (böyüklüyünü) əldə edin:abs()

Kompleks ədədin mütləq qiymətini (böyüklüyünü) əldə etmək üçün daxili funksiyadan istifadə edin abs().

c = 3 + 4j

print(abs(c))
# 5.0

c = 1 + 1j

print(abs(c))
# 1.4142135623730951

Kompleks ədədin meylini (fazasını) əldə edin:math,cmathmodul

Kompleks ədədin meylini (fazasını) əldə etmək üçün riyaziyyat və ya smath modulundan istifadə edin.

cmath modulu kompleks ədədlər üçün riyazi funksiya moduludur.

O, müəyyən edildiyi kimi math.atan2() tərs tangens funksiyası ilə hesablana bilər və ya meyli (faza) qaytaran cmath.phase() istifadə edə bilər.

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

Hər iki halda əldə edilə bilən bucaq vahidi radyandır. Dərəcələrə çevirmək üçün math.degrees() istifadə edin.

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

Kompleks ədədlərin qütb koordinatlarının çevrilməsi (qütb formal təmsil):math,cmathmodul

Yuxarıda qeyd edildiyi kimi, kompleks ədədin mütləq qiymətini (böyüklüyünü) və meylini (fazasını) əldə etmək olar, lakin cmath.polar() istifadə edərək, onlar birlikdə (mütləq dəyər, eniş) silsiləsi kimi əldə edilə bilər.

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

Qütb koordinatlarından Dekart koordinatlarına çevrilmə cmath.rect() vasitəsilə həyata keçirilir. cmath.rect(mütləq dəyər, sapma) və oxşar arqumentlərdən ekvivalent kompleks kompleks kompleks tipli qiymətləri almaq üçün istifadə edilə bilər.

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)

Həqiqi və xəyali hissələr mütləq qiymətlərdən və meyl bucaqlarından kosinus math.cos() və sinus math.sin() ilə hesablanmış nəticələrə ekvivalentdir.

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

Kompleks ədədlərin hesablanması (kvadrat, dərəcələr, kvadrat köklər)

Adi arifmetik operatorlardan istifadə etməklə dörd hesab əməliyyatı və güc hesablamaları həyata keçirilə bilər.

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)

Kvadrat kök **0.5 ilə hesablana bilər, lakin bu, xəta gətirir. Dəqiq dəyəri hesablamaq üçün cmath.sqrt() istifadə edilə bilər.

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

O, həmçinin mürəkkəb tiplər, int tipləri və float tipləri ilə arifmetik əməliyyatları yerinə yetirə bilər.

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

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