Spec-Zone.ru › Python 3.7

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

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

Примечание

На платформах с аппаратной и системной поддержкой знаковых нулей, функции, связанные с разрезами ветвей, непрерывны с обеих сторон разреза ветви: знак нуля отличает одну сторону разреза ветви от другой. На платформах, которые не поддерживают знаковые нули, непрерывность определяется как указано ниже.

Преобразования между прямоугольными и полярными координатами

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

Примечание

Модуль (абсолютное значение) комплексного числа x можно вычислить с помощью встроенной функции abs(). Нет отдельной функции модуля cmath для этой операции.

cmath.polar(x)

Возвращает представление x в полярных координатах. Возвращает пару (r, phi) где r — модуль x, а phi — фаза x. polar(x) эквивалентно (abs(x), phase(x)).

cmath.rect(r, phi)

Возвращает комплексное число x с полярными координатами r и phi. Эквивалентно r * (math.cos(phi) + math.sin(phi)*1j).

Функции возведения в степень и логарифмы

cmath.exp(x)

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

cmath.log(x[, base])

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

cmath.log10(x)

Возвращает логарифм по основанию 10 от x. Это имеет тот же разрез ветви, что и log().

cmath.sqrt(x)

Возвращает квадратный корень из x. Это имеет тот же разрез ветви, что и log().

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

cmath.acos(x)

Возвращает арккосинус x. Есть два разреза ветвей: один простирается вправо от 1 вдоль действительной оси до ∞, непрерывно снизу. Другой простирается влево от -1 вдоль действительной оси до -∞, непрерывно сверху.

cmath.asin(x)

Возвращает арксинус x. Это имеет те же разрезы ветвей, что и acos().

cmath.atan(x)

Возвращает арктангенс x. Есть два разреза ветвей: один простирается от 1j вдоль мнимой оси до ∞j, непрерывно справа. Другой простирается от -1j вдоль мнимой оси до -∞j, непрерывно слева.

cmath.cos(x)

Возвращает косинус x.

cmath.sin(x)

Возвращает синус x.

cmath.tan(x)

Возвращает тангенс x.

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

cmath.acosh(x)

Возвращает обратную гиперболическую косинус x. Есть один разрез ветви, простирающийся влево от 1 вдоль действительной оси до -∞, непрерывно сверху.

cmath.asinh(x)

Возвращает обратную гиперболическую синус x. Есть два разреза ветвей: один простирается от 1j вдоль мнимой оси до ∞j, непрерывно справа. Другой простирается от -1j вдоль мнимой оси до -∞j, непрерывно слева.

cmath.atanh(x)

Возвращает обратную гиперболическую тангенс x. Есть два разреза ветвей: один простирается от 1 вдоль действительной оси до ∞, непрерывно снизу. Другой простирается от -1 вдоль действительной оси до -∞, непрерывно сверху.

cmath.cosh(x)

Возвращает гиперболическую косинус x.

cmath.sinh(x)

Возвращает гиперболическую синус x.

cmath.tanh(x)

Возвращает гиперболическую тангенс x.

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

cmath.isfinite(x)

Возвращает True если обе действительная и мнимая части x конечны, и False в противном случае.

Новая в версии 3.2.

cmath.isinf(x)

Возвращает True если либо действительная, либо мнимая часть x бесконечность, и False в противном случае.

cmath.isnan(x)

Возвращает True если либо действительная, либо мнимая часть x NaN, и False в противном случае.

cmath.isclose(a, b, *, rel_tol=1e-09, abs_tol=0.0)

Возвращает True если значения a и b близки друг к другу и False в противном случае.

Определяется ли близость двух значений, зависит от заданных абсолютной и относительной толерантностей.

rel_tol — относительная толерантность – это максимальное допустимое различие между a и b, относительно большего абсолютного значения a или b. Например, для установки толерантности в 5% передайте rel_tol=0.05. По умолчанию толерантность равна 1e-09, что гарантирует, что два значения совпадают с точностью до около 9 десятичных знаков. rel_tol должно быть больше нуля.

abs_tol — минимальная абсолютная толерантность — полезна для сравнений, близких к нулю. abs_tol должно быть не менее нуля.

Если ошибок не произошло, результат будет: abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), 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., and Powell, M. (ред.), Современное состояние численных методов. Clarendon Press (1987) стр. 165–211.

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

Spec-Zone.ru

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