Документация Python неофициальный перевод
Содержание страницы

9.3. cmath – Математические функции для комплексных чиселcmath – Mathematical functions for complex numbers

Этот модуль всегда доступен. Он предоставляет доступ к математическим функциям для комплексных чисел. Функции в этом модуле принимают в качестве аргументов целые числа, числа с плавающей точкой или комплексные числа. Они также принимают любой объект Python, имеющий метод __complex__() или __float__(): эти методы используются для преобразования объекта в комплексное число или число с плавающей точкой соответственно, после чего функция применяется к результату преобразования.

Примечание

На платформах с аппаратной и системной поддержкой знакового нуля функции, использующие разрезы ветвей, непрерывны по обе стороны разреза: знак нуля отличает одну сторону от другой. На платформах без поддержки знакового нуля непрерывность описывается ниже.

9.3.1. Преобразования в полярные координаты и обратноConversions to and from polar coordinates

Комплексное число Python z хранится внутри в прямоугольных или декартовых координатах. Оно полностью определяется своей действительной частью z.real и своей мнимой частью z.imag. Иными словами:

z == z.real + z.imag*1j

Полярные координаты дают альтернативный способ представления комплексного числа. В полярных координатах комплексное число z определяется модулем r и фазовым углом phi. Модуль r – это расстояние от z до начала координат, а фаза phi – это угол, измеряемый в радианах против часовой стрелки от положительной оси x до отрезка, соединяющего начало координат с z.

Следующие функции можно использовать для преобразования из исходных прямоугольных координат в полярные и обратно.

cmath.phase(x)

Возвращает фазу x (также известную как аргумент числа x) в виде числа с плавающей точкой. phase(x) эквивалентно math.atan2(x.imag, x.real). Результат лежит в диапазоне [-π, π], а разрез ветви для этой операции проходит вдоль отрицательной действительной оси, непрерывный сверху. В системах с поддержкой знакового нуля (что включает большинство современных систем) это означает, что знак результата совпадает со знаком x.imag, даже если x.imag равно нулю:

>>> phase(complex(-1.0, 0.0))
3.1415926535897931
>>> phase(complex(-1.0, -0.0))
-3.1415926535897931

Новое в версии 2.6.

Примечание

Модуль (абсолютное значение) комплексного числа x можно вычислить с помощью встроенной функции abs(). Отдельной функции модуля cmath для этой операции нет.

cmath.polar(x)

Возвращает представление x в полярных координатах. Возвращает пару (r, phi), где r – модуль x, а phi – фаза x. polar(x) эквивалентно (abs(x), phase(x)).

Новое в версии 2.6.

cmath.rect(r, phi)

Возвращает комплексное число x с полярными координатами r и phi. Эквивалентно r * (math.cos(phi) + math.sin(phi)*1j).

Новое в версии 2.6.

9.3.2. Степенные и логарифмические функцииPower and logarithmic functions

cmath.exp(x)

Возвращает экспоненциальное значение e**x.

cmath.log(x[, base])

Возвращает логарифм x по заданному основанию. Если основание не указано, возвращает натуральный логарифм x. Имеется один разрез ветви: от 0 вдоль отрицательной вещественной оси до -∞, непрерывный сверху.

Изменено в версии 2.4: добавлен аргумент base.

cmath.log10(x)

Возвращает десятичный логарифм x. Имеет тот же разрез ветви, что log().

cmath.sqrt(x)

Возвращает квадратный корень x. Имеет тот же разрез ветви, что и log().

9.3.3. Тригонометрические функцииTrigonometric functions

cmath.acos(x)

Возвращает арккосинус x. Имеются два разреза ветвей: один простирается вправо от 1 вдоль вещественной оси до ∞, непрерывный снизу. Другой простирается влево от -1 вдоль вещественной оси до -∞, непрерывный сверху.

cmath.asin(x)

Return the arc sine of x. This has the same branch cuts as acos().

cmath.atan(x)

Возвращает арктангенс x. Имеются два разреза ветвей: один простирается от 1j вдоль мнимой оси до ∞j, непрерывный справа. Другой простирается от -1j вдоль мнимой оси до -∞j, непрерывный слева.

Изменено в версии 2.6: направление непрерывности верхнего разреза изменено на противоположное

cmath.cos(x)

Возвращает косинус x.

cmath.sin(x)

Возвращает синус x.

cmath.tan(x)

Возвращает тангенс x.

9.3.4. Гиперболические функцииHyperbolic functions

cmath.acosh(x)

Возвращает обратный гиперболический косинус x. Имеется один разрез ветви, простирающийся влево от 1 вдоль вещественной оси до -∞, непрерывный сверху.

cmath.asinh(x)

Возвращает обратный гиперболический синус x. Имеются два разреза ветвей: один простирается от 1j вдоль мнимой оси до ∞j, непрерывный справа. Другой простирается от -1j вдоль мнимой оси до -∞j, непрерывный слева.

Изменено в версии 2.6: разрезы ветвей перемещены в соответствии с рекомендациями стандарта C99

cmath.atanh(x)

Возвращает обратный гиперболический тангенс x. Имеются два разреза ветвей: один простирается от 1 вдоль вещественной оси до , непрерывный снизу. Другой простирается от -1 вдоль вещественной оси до -∞, непрерывный сверху.

Изменено в версии 2.6: направление непрерывности правого разреза изменено на противоположное

cmath.cosh(x)

Возвращает гиперболический косинус x.

cmath.sinh(x)

Возвращает гиперболический синус x.

cmath.tanh(x)

Возвращает гиперболический тангенс x.

9.3.5. Функции классификацииClassification functions

cmath.isinf(x)

Возвращает True, если действительная или мнимая часть x равна положительной или отрицательной бесконечности.

Новое в версии 2.6.

cmath.isnan(x)

Возвращает True, если действительная или мнимая часть x не является числом (NaN).

Новое в версии 2.6.

9.3.6. КонстантыConstants

cmath.pi

Математическая константа π, в виде числа с плавающей запятой.

cmath.e

Математическая константа e, в виде числа с плавающей запятой.

Обратите внимание, что набор функций похож на набор из модуля math, но не идентичен ему. Причина наличия двух модулей в том, что некоторым пользователям неинтересны комплексные числа, и они, возможно, даже не знают, что это такое. Они предпочли бы, чтобы math.sqrt(-1) вызывал исключение, а не возвращал комплексное число. Также следует отметить, что функции, определённые в cmath, всегда возвращают комплексное число, даже если ответ может быть выражен вещественным числом (в этом случае комплексное число имеет нулевую мнимую часть).

Примечание о разрезах ветвей: это кривые, вдоль которых данная функция перестаёт быть непрерывной. Они являются необходимым свойством многих комплексных функций. Предполагается, что если вам нужно вычислять комплексные функции, вы разбираетесь в разрезах ветвей. Для понимания обратитесь к любой (не слишком элементарной) книге по комплексному анализу. Для получения информации о правильном выборе разрезов ветвей для численных расчётов хорошим справочником может служить следующее издание:

См. также

Kahan, W: Ветви разрезов для комплексных элементарных функций; или Много шума из-за знакового бита. В Iserles, A., и Powell, M. (ред.), Современное состояние численного анализа. Clarendon Press (1987) стр. 165–211.