Spec-Zone.ru › Python 3.14

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

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

Примечание

Для функций с разрезами ветвей возникает проблема: нужно решить, как определять эти функции непосредственно на разрезе. Следуя статье Кахана «Разрезы ветвей для элементарных комплексных функций», а также приложению G стандарта C99 и более поздних стандартов C, мы используем знак нуля, чтобы различать стороны разреза ветви: для разреза ветви вдоль (части) действительной оси мы смотрим на знак мнимой части, а для разреза ветви вдоль мнимой оси — на знак действительной части.

Например, функция cmath.sqrt() имеет разрез ветви вдоль отрицательной действительной оси. Аргумент -2-0j рассматривается так, как будто он находится ниже разреза ветви, поэтому результат лежит на отрицательной мнимой оси:

>>> cmath.sqrt(-2-0j)
-1.4142135623730951j

Но аргумент -2+0j рассматривается так, как будто он находится выше разреза ветви:

>>> cmath.sqrt(-2+0j)
1.4142135623730951j

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

phase(z)

Возвращает фазу z

polar(z)

Возвращает представление z в полярных координатах

rect(r, phi)

Возвращает комплексное число z с полярными координатами r и phi

Степенные и логарифмические функции

exp(z)

Возвращает e в степени z

log(z[, base])

Возвращает логарифм z по заданному основанию base (по умолчанию e)

log10(z)

Возвращает десятичный логарифм z

sqrt(z)

Возвращает квадратный корень из z

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

acos(z)

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

asin(z)

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

atan(z)

Возвращает арктангенс z

cos(z)

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

sin(z)

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

tan(z)

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

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

acosh(z)

Возвращает обратный гиперболический косинус z

asinh(z)

Возвращает обратный гиперболический синус z

atanh(z)

Возвращает обратный гиперболический тангенс z

cosh(z)

Возвращает гиперболический косинус z

sinh(z)

Возвращает гиперболический синус z

tanh(z)

Возвращает гиперболический тангенс z

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

isfinite(z)

Проверяет, являются ли конечными все компоненты z

isinf(z)

Проверяет, является ли бесконечной хотя бы одна компонента z

isnan(z)

Проверяет, является ли NaN хотя бы одна компонента z

isclose(a, b, *, rel_tol, abs_tol)

Проверяет, близки ли значения a и b друг к другу

Константы

pi

π = 3.141592…

e

e = 2.718281…

tau

τ = 2π = 6.283185…

inf

Положительная бесконечность

infj

Чисто мнимая бесконечность

nan

«Не число» (NaN)

nanj

Чисто мнимое значение NaN

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

Комплексное число 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)).

Степенные и логарифмические функции

cmath.exp(z)

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

cmath.log(z[, base])

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

cmath.log10(z)

Возвращает десятичный логарифм z. Разрез ветви совпадает с разрезом функции log().

cmath.sqrt(z)

Возвращает квадратный корень из z. Разрез ветви совпадает с разрезом функции log().

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

cmath.acos(z)

Возвращает арккосинус z. Имеются два разреза ветвей: один идёт вправо от 1 вдоль действительной оси до ∞. Другой идёт влево от -1 вдоль действительной оси до -∞.

cmath.asin(z)

Возвращает арксинус z. Разрезы ветвей совпадают с разрезами функции acos().

cmath.atan(z)

Возвращает арктангенс z. Имеются два разреза ветвей: один идёт от 1j вдоль мнимой оси до ∞j. Другой идёт от -1j вдоль мнимой оси до -∞j.

cmath.cos(z)

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

cmath.sin(z)

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

cmath.tan(z)

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

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

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.

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

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 — функция для проверки приблизительного равенства

Константы

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, всегда возвращают комплексное число, даже если ответ можно выразить действительным числом (в таком случае мнимая часть комплексного числа равна нулю).

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

См. также

Кахан, У.: Разрезы ветвей для элементарных комплексных функций, или Много шума из ничего: бит знака. В: Изерлес, А. и Пауэлл, М. (ред.), Современное состояние численного анализа. Clarendon Press (1987), с. 165–211.

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

Spec-Zone.ru

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