Создание
Комплексное число хранит действительную и мнимую часть в виде двух float. Мнимая единица обозначается суффиксом j:
a = 3 + 4jb = complex(1, 2)c = complex("2+5j")d = 1jprint(a)print(b)print(c)print(d ** 2)Результат последней строки: (-1+0j).
Пробелов внутри строки для complex() быть не должно: complex("2 + 5j") вызовет ValueError.
Атрибуты и методы
| Элемент | Описание |
|---|---|
real | Действительная часть |
imag | Мнимая часть |
conjugate() | Сопряжённое число |
abs(z) | Модуль числа |
z = 3 + 4jprint(z.real)print(z.imag)print(z.conjugate())print(abs(z))Результат: 3.0, 4.0, (3-4j), 5.0.
Арифметика
a = 1 + 2jb = 3 - 1jprint(a + b)print(a - b)print(a * b)print(a / b)print(a ** 2)print(a == b)Операции // и % для комплексных чисел не определены, также нельзя сравнивать их через < и >.
Модуль cmath
Функции из math не работают с комплексными числами. Для них есть cmath:
import cmathz = 1 + 1jprint(cmath.sqrt(-1))print(cmath.phase(z))print(cmath.polar(z))print(cmath.rect(2, cmath.pi / 2))print(cmath.exp(1j * cmath.pi))| Функция | Описание |
|---|---|
phase(z) | Аргумент числа в радианах |
polar(z) | Пара (модуль, фаза) |
rect(r, phi) | Число из полярных координат |
sqrt, exp, log, log10 | Основные функции |
sin, cos, tan и обратные | Тригонометрия |
isnan, isinf, isfinite, isclose | Проверки |
pi, e, tau, inf, nan, infj, nanj | Константы |
Применение
Комплексные числа удобны в расчётах электрических цепей, обработке сигналов, при решении квадратных уравнений с отрицательным дискриминантом:
import cmathdef solve_quadratic(a, b, c): d = cmath.sqrt(b ** 2 - 4 * a * c) return (-b + d) / (2 * a), (-b - d) / (2 * a)print(solve_quadratic(1, 2, 5))Задания
- Найдите все три корня кубического уравнения
x**3 = 1черезcmath.rect. - Реализуйте функцию вращения точки на плоскости на заданный угол с помощью умножения на комплексное число.
