cmath
— Математические функции для комплексных чисел¶
Модуль предоставляет доступ к математическим функциям комплексных чисел.
Функции в этом модуле принимают целые числа, числа с плавающей запятой или
комплексные числа как аргументы. Они также принимают любой Python объект,
содержащий либо __complex__()
, либо __float__()
методы: эти методы
используются для преобразования объекта в комплексное число или число с плавающей
запятой соответственно, а затем функция применяется к результату преобразования.
Примечание
На платформах с аппаратным и системным уровнем поддержки для знаковых нулей, функций, включающие ответвления, непрерывны на обе стороны срезы ветви: знаковый нуль отличает одину сторону ветки среза с другой. На платформах, которые не поддерживают непрерывные знаковые нули, как указано ниже.
Преобразования полярных координат¶
Внутри Python хранит комплексное число z
с прямоугольными или
картезианскими координатами. Это полностью определено его реальную часть z.real
и
его мнимую часть z.imag
. Другими словами:
z == z.real + z.imag*1j
Полярные координаты дают альтернативный способ представления комплексного числа. В полярных координатах z комплексного числа определяется r модулем и phi фазового угла. Модуль r - это расстояние от z до начала координат, в то время как phi фазы - это угол против часовой стрелки, измеренный в радианах, от положительной оси X до сегмента линии, соединяющего начало координат с z.
Следующие функции можно использовать для преобразования прямоугольных координат в полярные координаты и обратно.
-
cmath.
phase
(x)¶ Возвращает фазу x (также известная как argument x), как плавающая.
phase(x)
эквивалентнаmath.atan2(x.imag, x.real)
. Результат лежит в диапазоне [-π, π], и ответвление для этой операции лежит вдоль отрицательной действительной оси, непрерывной сверху. На системах с поддержкой знаковых нулей (в состав которых входит большинство систем, используемых в настоящее время) это означает, что знак результата совпадает со знакомx.imag
, даже когдаx.imag
равен нулю:>>> phase(complex(-1.0, 0.0)) 3.141592653589793 >>> phase(complex(-1.0, -0.0)) -3.141592653589793
Примечание
Модуль (абсолютное значение) комплексного числа x может быть вычислен
с помощью встроенной функции abs()
. Для этой операции нет отдельной
функции cmath
модуля.
-
cmath.
polar
(x)¶ Возвращает представление x в полярных координатах. Возвращает пару
(r, phi)
где r - модуль x, а phi - фаза x.polar(x)
эквивалентна(abs(x), phase(x))
.
-
cmath.
rect
(r, phi)¶ Возвращает комплексное число x с полярными координатами r и phi. Эквивалентный
r * (math.cos(phi) + math.sin(phi)*1j)
.
Степенные и логарифмические функции¶
-
cmath.
exp
(x)¶ Возвращает e в степени x, где e - основа натурального логарифма.
-
cmath.
log
(x[, base])¶ Возвращает логарифм x по основанию base. Если base не указан, возвращает натуральный логарифм x. Существует одна ветвь отрезка, от 0 вдоль отрицательной вещественной оси до -∞, непрерывная сверху.
Тригонометрические функции¶
-
cmath.
acos
(x)¶ Возвращает арккосинус x. Есть два ответвления вырезов: один простирается прямо от 1 вдоль действительной оси до ∞, непрерывно снизу. Другой простирается слева от -1 вдоль действительной оси до -∞, непрерывно сверху.
-
cmath.
atan
(x)¶ Верните арктангенс x. Есть два среза: один простирается от
1j
вдоль мнимой оси до∞j
, непрерывно справа. Другая простирается от-1j
вдоль мнимой оси до-∞j
, непрерывно слева.
-
cmath.
cos
(x)¶ Возвращает косинус x.
-
cmath.
sin
(x)¶ Возвращает синус x.
-
cmath.
tan
(x)¶ Возвращает тангенс x.
Гиперболические функции¶
-
cmath.
acosh
(x)¶ Возвращает обратный гиперболический косинус x. Имеется один отрезок ответвления, продолжающийся слева от 1 вдоль реальной оси до -∞, непрерывного сверху.
-
cmath.
asinh
(x)¶ Возвращает обратный гиперболический синус x. Существует два отрезка ответвления: один простирается от
1j
вдоль мнимой оси до∞j
, непрерывно справа. Другой простирается от `` -1j`` вдоль мнимой оси `` -∞j``, непрерывная слева.
-
cmath.
atanh
(x)¶ Возвращает обратной гиперболической тангенс x. Есть два среза: один простирается от `` 1`` вдоль действительной оси до `` ∞``, непрерывно снизу. Другой простирается от `` -1`` вдоль действительной оси до `` -∞``, непрерывно назад.
-
cmath.
cosh
(x)¶ Возвращает гиперболический косинус x.
-
cmath.
sinh
(x)¶ Возвращает гиперболический синус x.
-
cmath.
tanh
(x)¶ Возвращает гиперболический тангенс x.
Функции классификации¶
-
cmath.
isfinite
(x)¶ Возвращает
True
, если и действительная, и мнимая части x конечны, иFalse
иначе.Добавлено в версии 3.2.
-
cmath.
isinf
(x)¶ Возвращает
True
, если либо реальная, либо мнимая часть x является бесконечными иFalse
иначе.
-
cmath.
isnan
(x)¶ Возвращает
True
, если действительная или мнимая часть x является NaN, иFalse
иначе.
-
cmath.
isclose
(a, b, *, rel_tol=1e-09, abs_tol=0.0)¶ Возвращает
True
, если значения a и b близки друг к другу иFalse
если иначе.То, считаются ли два значения близкими, определяется в соответствии с заданными абсолютными и относительными допусками.
rel_tol - это относительный допуск - это максимально допустимая разница между a и b относительно большего абсолютного значения a или b. Например, чтобы задать допуск 5%, пройдайте
rel_tol=0.05
. Допуск по умолчанию -1e-09
, что гарантирует, что эти два значения совпадают в пределах приблизительно 9 десятичных знаков. rel_tol должно быть больше нуля.abs_tol - это минимальный абсолютный допуск, полезный для сравнения, близкого к нулю. abs_tol должно быть не меньше нуля.
Если ошибок не будет, результат будет:
abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol)
.Специальные значения
NaN
,inf
и-inf
IEEE 754 будут обрабатываться согласно правилам IEEE. В частности,NaN
не считается близким к какому-либо другому значению, включаяNaN
.inf
и-inf
считаются близкими только самим себе.Добавлено в версии 3.5.
См.также
PEP 485 – Функция для проверки приближенного равенства
Константы¶
-
cmath.
pi
¶ Математическая константа π, как число с плавающей точкой.
-
cmath.
e
¶ Математическая константа e, как число с плавающей точкой.
-
cmath.
tau
¶ Математическая константа τ, как число с плавающей точкой.
Добавлено в версии 3.6.
-
cmath.
inf
¶ Положительная бесконечность с плавающей точкой. Эквивалентно
float('inf')
.Добавлено в версии 3.6.
-
cmath.
infj
¶ Комплексное число с нулевой вещественной частью и положительной бесконечной мнимой частью. Эквивалентно
complex(0.0, float('inf'))
.Добавлено в версии 3.6.
-
cmath.
nan
¶ Значение с плавающей запятой «не число» (NaN). Эквивалентно
float('nan')
.Добавлено в версии 3.6.
-
cmath.
nanj
¶ Комплексное число с нулевой вещественной частью и мнимой частью NaN. Эквивалентно
complex(0.0, float('nan'))
.Добавлено в версии 3.6.
Следует отметить, что функций аналогичны, но не идентичены модулю math
.
Причина наличия двух модулей в том, что некоторые пользователи не
интересуются комплексными числами и, возможно, даже не знают, что они такое. Они
предпочли бы исключение на math.sqrt(-1)
, чем возвращение комплексного числа. Также
заметим, что функции, определённые в cmath
, всегда возвращают
комплексное число, даже если ответ может быть выражен как действительное число
(в этом случае комплексное число имеет нулевую мнимую часть).
Заметка о вырезах ответвления - это кривые, вдоль которых данная функция не может быть непрерывной. Они являются необходимой особенностью многих сложных функций. Предполагается, что если требуется вычислить с помощью сложных функций, то вы поймете о вырезах ответвлений. Проконсультируйтесь практически с любой (не слишком элементарной) книгой по сложным переменным для просветления. Для получения информации о правильном выборе ответвлений для числовых целей следует использовать следующую справочную информацию
См.также
Kahan, W: Branch cuts for complex elementary functions; or, Much ado about nothing’s sign bit. In Iserles, A., and Powell, M. (eds.), The state of the art in numerical analysis. Clarendon Press (1987) pp165–211.