Python має стандартний тип для обробки комплексних чисел, тип COMPLEX. Якщо ви просто хочете виконувати прості обчислення, вам не потрібно імпортувати будь-які модулі, але якщо ви імпортуєте стандартну бібліотеку cmath, ви також можете використовувати математичні функції (експоненціальні, логарифмічні, тригонометричні тощо), що відповідають комплексним числам.
Наведений нижче вміст пояснюється тут із прикладом коду.
- Генерувати комплексні змінні
- Отримайте реальні та уявні частини:
real
,imag
атрибут - Отримати спряжені комплексні числа:
conjugate()
метод - Отримати абсолютне значення (величину):
abs()
функція (наприклад, математика, програмування, програмування) - Отримати схилення (фаза):
math
,cmath
модуль - Перетворення полярних координат (подання полярної форми):
math
,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)
Він також може бути згенерований конструктором типу “комплекс”, як у “комплекс (дійсна частина, уявна частина)”.
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модуль
Щоб отримати схилення (фазу) комплексного числа, скористайтеся модулем 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)
Дійсна та уявна частини еквівалентні результатам, обчисленим косинусами 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 і типами float.
print(c1 + 3)
# (6+4j)
print(c1 * 0.5)
# (1.5+2j)