cmath — Математические функции для комплексных чисел
Этот модуль всегда доступен. Он предоставляет доступ к математическим функциям для комплексных чисел. Функции в этом модуле принимают целые числа, числа с плавающей точкой или комплексные числа в качестве аргументов. Они также примут любой объект Python, у которого есть метод __complex__() или метод __float__(): эти методы используются для преобразования объекта в комплексное или число с плавающей точкой соответственно, и затем функция применяется к результату преобразования.
Примечание
На платформах с аппаратной и системной поддержкой знаковых нулей функции, связанные с разрывами ветвей, непрерывны с обеих сторон разрыва ветви: знак нуля отличает одну сторону разрыва ветви от другой. На платформах, не поддерживающих знаковые нули, непрерывность задается, как указано ниже.
9.3.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.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).
9.3.2. Функции степеней и логарифмы
-
cmath.exp(x) -
Возвращает экспоненциальное значение
e**x.
-
cmath.log(x[, base]) -
Возвращает логарифм x по заданному основанию. Если основание не указано, возвращает натуральный логарифм x. Существует один разрез ветви, от 0 вдоль отрицательной действительной оси до -∞, непрерывный сверху.
-
cmath.log10(x) -
Возвращает логарифм x по основанию 10. У него тот же разрез ветви, что и у
log().
-
cmath.sqrt(x) -
Возвращает квадратный корень из x. У него тот же разрез ветви, что и у
log().
9.3.3. Тригонометрические функции
-
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.
9.3.4. Гиперболические функции
-
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.
9.3.5. Функции классификации
-
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 — Функция для тестирования приблизительного равенства
9.3.6. Константы
-
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–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.6/library/cmath.html