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

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

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

Примечание

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

8.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.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).

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

cmath.exp(x)

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

cmath.log(x[, base])

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

cmath.log10(x)

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

cmath.sqrt(x)

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

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

cmath.acos(x)

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

cmath.asin(x)

Возвращает арксинус x. Имеет те же разрезы ветвей, что и acos().

cmath.atan(x)

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

cmath.cos(x)

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

cmath.sin(x)

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

cmath.tan(x)

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

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

cmath.acosh(x)

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

cmath.asinh(x)

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

cmath.atanh(x)

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

cmath.cosh(x)

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

cmath.sinh(x)

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

cmath.tanh(x)

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

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

cmath.isfinite(x)

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

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

cmath.isinf(x)

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

cmath.isnan(x)

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

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

cmath.pi

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

cmath.e

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

Note that the selection of functions is similar, but not identical, to that in module math. The reason for having two modules is that some users aren’t interested in complex numbers, and perhaps don’t even know what they are. They would rather have math.sqrt(-1) raise an exception than return a complex number. Also note that the functions defined in cmath always return a complex number, even if the answer can be expressed as a real number (in which case the complex number has an imaginary part of zero).

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

См. также

Кахан, У: Разрезы ветвей для комплексных элементарных функций; или Много шума из-за знакового бита. В книге Изерлеса, А. и Пауэлла, М. (ред.), Современное состояние численного анализа. Clarendon Press (1987) стр. 165-211.