Содержание страницы
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
Преобразование в полярные координаты и обратно |
|
Возвращает фазу z |
|
Возвращает представление z в полярных координатах |
|
Возвращает комплексное число z с полярными координатами r и phi |
|
Степенные и логарифмические функции |
|
Возвращает e в степени z |
|
Возвращает логарифм z по заданному основанию (по умолчанию 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 |
|
Преобразования в полярные координаты и обратно¶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 по отрицательной действительной оси до -∞.
Тригонометрические функции¶Trigonometric functions
- cmath.acos(z)¶
Возвращает арккосинус z. Имеется два разреза ветви: один идёт вправо от 1 вдоль действительной оси до ∞. Другой идёт влево от -1 вдоль действительной оси до -∞.
- 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: Ветви разрезов для комплексных элементарных функций; или Много шума из-за знакового бита. В Iserles, A., и Powell, M. (ред.), Современное состояние численного анализа. Clarendon Press (1987) стр. 165–211.