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.log10(x)

Возвращает логарифм по основанию 10 x. У него та же ветвь, что и у log().

cmath.sqrt(x)

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

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

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.

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

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.