Spec-Zone.ru › Python 3.13

cmath — Математические функции для комплексных чисел

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

Примечание

Для функций с разрезами ветвления возникает вопрос, как определить эти функции непосредственно на разрезе. Следуя статье Кахана «Разрезы ветвления для комплексных элементарных функций», а также приложению G стандарта C99 и более поздних стандартов C, мы используем знак нуля, чтобы различать стороны разреза ветвления: для разреза ветвления вдоль (части) действительной оси мы учитываем знак мнимой части, а для разреза ветвления вдоль мнимой оси — знак действительной части.

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

>>> cmath.sqrt(complex(-2.0, -0.0))
-1.4142135623730951j

Аргумент complex(-2.0, 0.0), напротив, рассматривается так, как будто он находится выше разреза ветвления:

>>> cmath.sqrt(complex(-2.0, 0.0))
1.4142135623730951j

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

phase(z)

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

polar(z)

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

rect(r, phi)

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

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

exp(z)

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

log(z[, base])

Возвращает логарифм z по заданному основанию base (по умолчанию 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

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

Комплексное число 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(complex(-1.0, 0.0))
3.141592653589793
>>> phase(complex(-1.0, -0.0))
-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)).

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

cmath.exp(z)

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

cmath.log(z[, base])

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

cmath.log10(z)

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

cmath.sqrt(z)

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

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

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.

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

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.

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

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 — Функция для проверки приближённого равенства

Константы

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

© 2001–2025 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/library/cmath.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API