Spec-Zone.ru › Python 2.7

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

Spec-Zone.ru

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