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

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


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

Примечание

Для функций, использующих разрезы ветвей, возникает проблема определения этих функций на самом разрезе. Следуя работе Кахана «Branch cuts for complex elementary functions», а также Приложению G стандарта C99 и последующих стандартов C, мы используем знак нуля, чтобы различать стороны разреза ветви: для разреза вдоль (части) действительной оси мы смотрим на знак мнимой части, а для разреза вдоль мнимой оси – на знак действительной части.

Например, функция cmath.sqrt() имеет разрез ветви вдоль отрицательной действительной оси. Аргумент -2-0j рассматривается так, как если бы он находился ниже разреза, и поэтому даёт результат на отрицательной мнимой оси:

>>> cmath.sqrt(-2-0j)
-1.4142135623730951j

Но аргумент -2+0j рассматривается как лежащий выше разреза ветви:

>>> cmath.sqrt(-2+0j)
1.4142135623730951j

Преобразование в полярные координаты и обратно

phase(z)

Возвращает фазу z

polar(z)

Возвращает представление z в полярных координатах

rect(r, phi)

Возвращает комплексное число z с полярными координатами r и phi

Степенные и логарифмические функции

exp(z)

Возвращает e в степени z

log(z[, base])

Возвращает логарифм z по заданному основанию (по умолчанию e)

log10(z)

Возвращает десятичный логарифм z

sqrt(z)

Возвращает квадратный корень из z

Тригонометрические функции

acos(z)

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

asin(z)

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

atan(z)

Возвращает арктангенс z

cos(z)

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

sin(z)

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

tan(z)

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

Гиперболические функции

acosh(z)

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

asinh(z)

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

atanh(z)

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

cosh(z)

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

sinh(z)

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

tanh(z)

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

Функции классификации

isfinite(z)

Проверяет, все ли компоненты z конечны

isinf(z)

Проверяет, является ли какой-либо компонент z бесконечным

isnan(z)

Проверяет, является ли какой-либо компонент z NaN

isclose(a, b, *, rel_tol, abs_tol)

Проверяет, близки ли значения a и b друг к другу

Константы

pi

π = 3.141592…

e

e = 2.718281…

tau

τ = 2π = 6.283185…

inf

Положительная бесконечность

infj

Чисто мнимая бесконечность

nan

«Не число» (NaN)

nanj

Чисто мнимый NaN

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

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

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

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

cmath.phase(z)

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

>>> phase(-1+0j)
3.141592653589793
>>> phase(-1-0j)
-3.141592653589793

Примечание

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

cmath.polar(z)

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

cmath.rect(r, phi)

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

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

cmath.exp(z)

Возвращает e, возведённое в степень z, где e – основание натуральных логарифмов.

cmath.log(z[, base])

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

cmath.log10(z)

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

cmath.sqrt(z)

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

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

cmath.acos(z)

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

cmath.asin(z)

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

cmath.atan(z)

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

cmath.cos(z)

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

cmath.sin(z)

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

cmath.tan(z)

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

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

cmath.acosh(z)

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

cmath.asinh(z)

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

cmath.atanh(z)

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

cmath.cosh(z)

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

cmath.sinh(z)

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

cmath.tanh(z)

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

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

cmath.isfinite(z)

Возвращает True, если и вещественная, и мнимая части z конечны, и False в противном случае.

Добавлено в версии 3.2.

cmath.isinf(z)

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

cmath.isnan(z)

Возвращает True, если либо вещественная, либо мнимая часть z является NaN, и False в противном случае.

cmath.isclose(a, b, *, rel_tol=1e-09, abs_tol=0.0)

Возвращает True, если значения a и b близки друг к другу, и False иначе.

Близость двух значений определяется на основе заданных абсолютного и относительного допусков. Если ошибок не возникает, результатом будет: abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol).

rel_tol – это относительный допуск; это максимально допустимая разница между a и b, относительно большего абсолютного значения a или b. Например, чтобы установить допуск 5%, передайте rel_tol=0.05. По умолчанию допуск равен 1e-09, что гарантирует совпадение двух значений с точностью примерно до 9 десятичных знаков. rel_tol должен быть неотрицательным и меньше 1.0.

abs_tol – это абсолютный допуск; по умолчанию он равен 0.0 и должен быть неотрицательным. При сравнении x с 0.0, isclose(x, 0) вычисляется как abs(x) <= rel_tol  * abs(x), что равно False для любых значений x и rel_tol меньше 1.0. Поэтому передайте в вызов подходящий положительный аргумент abs_tol.

Особые значения IEEE 754: NaN, inf и -inf обрабатываются согласно правилам IEEE. В частности, NaN не считается близким ни к какому другому значению, включая NaN. inf и -inf считаются близкими только сами к себе.

Добавлено в версии 3.5.

См. также

PEP 485 – Функция для проверки приблизительного равенства

КонстантыConstants

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'). См. также math.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.