cmath — Математические функции для комплексных чисел
Этот модуль всегда доступен. Он предоставляет доступ к математическим функциям для комплексных чисел. Функции в этом модуле принимают целые числа, числа с плавающей точкой или комплексные числа в качестве аргументов. Они также примут любой объект Python, имеющий метод __complex__() или метод __float__(): эти методы используются для преобразования объекта в комплексное или число с плавающей точкой соответственно, и функция затем применяется к результату преобразования.
Примечание
На платформах с аппаратной и системной поддержкой знаковых нулей функции, включающие разветвления, непрерывны по обе стороны разветвления: знак нуля различает одну сторону разветвления от другой. На платформах, не поддерживающих знакомые нули, непрерывность задаётся, как указано ниже.
1. Преобразования из прямоугольных координат в полярные и назад
Комплексное число Python z хранится внутри с использованием прямоугольных или декартовых координат. Оно полностью определяется своей действительной частью z.real и своей мнимой частью z.imag. Другими словами:
z == z.real + z.imag*1j
Полярные координаты дают альтернативный способ представления комплексного числа. В полярных координатах комплексное число z определяется модулем r и фазовым углом phi. Модуль r — это расстояние от z до начала координат, а фаза phi — это угол против часовой стрелки, измеренный в радианах, от положительной оси x до отрезка прямой, соединяющего начало координат с z.
Следующие функции могут быть использованы для преобразования из родных прямоугольных координат в полярные и обратно.
-
cmath.phase(x) -
Возвращает фазу x (также известную как аргумент x), как число с плавающей точкой.
phase(x)эквивалентноmath.atan2(x.imag, x.real). Результат лежит в диапазоне [-π, π], а разрез ветвей для этой операции лежит вдоль отрицательной оси вещественных чисел, непрерывной сверху. На системах с поддержкой знаковых нулей (что включает большинство систем, используемых в настоящее время), это означает, что знак результата такой же, как знакx.imag, даже когдаx.imagравно нулю:>>> phase(complex(-1.0, 0.0)) 3.1415926535897931 >>> phase(complex(-1.0, -0.0)) -3.1415926535897931
Новое в версии 2.6.
Примечание
Модуль (абсолютное значение) комплексного числа x можно вычислить, используя встроенную функцию abs(). Нет отдельной функции модуля cmath для этой операции.
-
cmath.polar(x) -
Возвращает представление x в полярных координатах. Возвращает пару
(r, phi), где r — модуль x, а phi — фаза x.polar(x)эквивалентно(abs(x), phase(x)).Новое в версии 2.6.
-
cmath.rect(r, phi) -
Возвращает комплексное число x с полярными координатами r и phi. Эквивалентно
r * (math.cos(phi) + math.sin(phi)*1j).Новое в версии 2.6.
2. Степенные и логарифмические функции
-
cmath.exp(x) -
Возвращает экспоненциальное значение
e**x.
-
cmath.log(x[, base]) -
Возвращает логарифм x по заданному основанию. Если основание не указано, возвращает натуральный логарифм x. Существует один разрез ветвей, от 0 вдоль отрицательной вещественной оси до -∞, непрерывный сверху.
Изменено в версии 2.4: добавлен аргумент base.
-
cmath.log10(x) -
Возвращает десятичный логарифм x. У него такой же разрез ветвей, как у
log().
-
cmath.sqrt(x) -
Возвращает квадратный корень из x. У него такой же разрез ветвей, как у
log().
3. Тригонометрические функции
-
cmath.acos(x) -
Возвращает арккосинус x. Существует два разреза ветвей: Один простирается вправо от 1 вдоль оси действительных чисел до ∞, непрерывный снизу. Другой простирается влево от -1 вдоль оси действительных чисел до -∞, непрерывный сверху.
-
cmath.asin(x) -
Возвращает арксинус x. У него такие же разрезы ветвей, как у
acos().
-
cmath.atan(x) -
Возвращает арктангенс x. Существует два разреза ветвей: Один простирается от
1jвдоль мнимой оси до∞j, непрерывный справа. Другой простирается от-1jвдоль мнимой оси до-∞j, непрерывный слева.Изменено в версии 2.6: направление непрерывности верхнего разреза изменено
-
cmath.cos(x) -
Возвращает косинус x.
-
cmath.sin(x) -
Возвращает синус x.
-
cmath.tan(x) -
Возвращает тангенс x.
4. Гиперболические функции
-
cmath.acosh(x) -
Возвращает обратный гиперболический косинус x. Существует один разрез ветвей, простирающийся влево от 1 вдоль оси действительных чисел до -∞, непрерывный сверху.
-
cmath.asinh(x) -
Возвращает обратный гиперболический синус x. Существует два разреза ветвей: Один простирается от
1jвдоль мнимой оси до∞j, непрерывный справа. Другой простирается от-1jвдоль мнимой оси до-∞j, непрерывный слева.Изменено в версии 2.6: разрезы ветвей перемещены, чтобы соответствовать рекомендациям стандарта C99
-
cmath.atanh(x) -
Возвращает обратный гиперболический тангенс x. Существует два разреза ветвей: Один простирается от
1вдоль оси действительных чисел до∞, непрерывный снизу. Другой простирается от-1вдоль оси действительных чисел до-∞, непрерывный сверху.Изменено в версии 2.6: направление непрерывности правого разреза изменено
-
cmath.cosh(x) -
Возвращает гиперболический косинус x.
-
cmath.sinh(x) -
Возвращает гиперболический синус x.
-
cmath.tanh(x) -
Возвращает гиперболический тангенс x.
5. Функции классификации
-
cmath.isinf(x) -
Возвращает
Trueесли вещественная или мнимая часть x равна положительной или отрицательной бесконечности.Новое в версии 2.6.
-
cmath.isnan(x) -
Возвращает
Trueесли вещественная или мнимая часть x не является числом (NaN).Новое в версии 2.6.
6. Константы
-
cmath.pi -
Математическая константа π, как число с плавающей точкой.
-
cmath.e -
Математическая константа e, как число с плавающей точкой.
Обратите внимание, что выбор функций аналогичен, но не идентичен, тому, что в модуле math. Причина наличия двух модулей в том, что некоторые пользователи не заинтересованы в комплексных числах и, возможно, даже не знают, что это такое. Они бы предпочли, чтобы math.sqrt(-1) вызывала исключение, а не возвращала комплексное число. Также обратите внимание, что функции, определённые в cmath, всегда возвращают комплексное число, даже если ответ может быть выражен как вещественное число (в этом случае комплексное число имеет мнимую часть, равную нулю).
Примечание по разрезам ветвей: Они являются кривыми, вдоль которых заданная функция не является непрерывной. Это необходимая функция многих комплексных функций. Предполагается, что если вам нужно вычислять с комплексными функциями, вы будете понимать, что такое разрезы ветвей. Обратитесь почти к любой (не слишком элементарной) книге по комплексным переменным для прояснения. Для получения информации о правильном выборе разрезов ветвей в целях численного расчета, хорошей ссылкой будет следующее:
См. также
Kahan, W: Разрезы ветвей для комплексных элементарных функций; или, Много шума вокруг ничего. В Iserles, A., и Powell, M. (ред.), Состояние техники в численном анализе. Clarendon Press (1987) стр. 165–211.
© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/2.7/library/cmath.html