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
Преобразования полярных координат и обратно | |
Возвращает фазу z | |
Возвращает представление z в полярных координатах | |
Возвращает комплексное число z с полярными координатами r и phi | |
Степенные и логарифмические функции | |
Возвращает e в степени z | |
Возвращает логарифм z по заданному основанию base (по умолчанию e) | |
Возвращает десятичный логарифм z | |
Возвращает квадратный корень из z | |
Тригонометрические функции | |
Возвращает арккосинус z | |
Возвращает арксинус z | |
Возвращает арктангенс z | |
Возвращает косинус z | |
Возвращает синус z | |
Возвращает тангенс z | |
Гиперболические функции | |
Возвращает обратный гиперболический косинус z | |
Возвращает обратный гиперболический синус z | |
Возвращает обратный гиперболический тангенс z | |
Возвращает гиперболический косинус z | |
Возвращает гиперболический синус z | |
Возвращает гиперболический тангенс z | |
Функции классификации | |
Проверяет, являются ли все компоненты z конечными | |
Проверяет, является ли хотя бы одна компонента z бесконечной | |
Проверяет, является ли хотя бы одна компонента z значением NaN | |
Проверяет, близки ли значения a и b друг к другу | |
Константы | |
π = 3.141592… | |
e = 2.718281… | |
τ = 2π = 6.283185… | |
Положительная бесконечность | |
Чисто мнимая бесконечность | |
«Не число» (NaN) | |
Чисто мнимое значение 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