cmath.md
1> **Источник:** https://python-all.ru/3.2/library/cmath.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 8.3. [`cmath`](https://python-all.ru/3.2/library/cmath.html#module-cmath) – Математические функции для комплексных чисел89Этот модуль всегда доступен. Он предоставляет доступ к математическим функциям для комплексных чисел. Функции этого модуля принимают целые числа, числа с плавающей запятой или комплексные числа в качестве аргументов. Они также примут любой объект Python, у которого есть метод [`__complex__()`](https://python-all.ru/3.2/reference/datamodel.html#object.__complex__) или [`__float__()`](https://python-all.ru/3.2/reference/datamodel.html#object.__float__): эти методы используются для преобразования объекта в комплексное число или число с плавающей запятой соответственно, после чего функция применяется к результату преобразования.1011> **Примечание**12>13> На платформах с аппаратной и системной поддержкой знакового нуля функции, использующие разрезы ветвей, непрерывны по *обе* стороны разреза: знак нуля отличает одну сторону от другой. На платформах без поддержки знакового нуля непрерывность описывается ниже.1415## 8.3.1. Преобразования в полярные координаты и обратно1617Комплексное число Python `z` хранится внутри в *прямоугольных* или *декартовых* координатах. Оно полностью определяется своей *действительной частью* `z.real` и своей *мнимой частью* `z.imag`. Иными словами:1819```python20z == z.real + z.imag*1j21```2223*Полярные координаты* дают альтернативный способ представления комплексного числа. В полярных координатах комплексное число *z* определяется модулем *r* и фазовым углом *phi*. Модуль *r* – это расстояние от *z* до начала координат, а фаза *phi* – это угол, измеряемый в радианах против часовой стрелки от положительной оси x до отрезка, соединяющего начало координат с *z*.2425Следующие функции можно использовать для преобразования из исходных прямоугольных координат в полярные и обратно.2627#### `cmath.phase(x)`2829Возвращает фазу *x* (также известную как *аргумент* *x*) в виде числа с плавающей запятой. `phase(x)` эквивалентно `math.atan2(x.imag, x.real)`. Результат лежит в диапазоне \[-π, π\], а разрез ветвей для этой операции проходит вдоль отрицательной действительной оси, непрерывно сверху. В системах с поддержкой знакового нуля (к которым относится большинство современных систем) это означает, что знак результата совпадает со знаком `x.imag`, даже если `x.imag` равен нулю:3031```python32>>> phase(complex(-1.0, 0.0))333.14159265358979334>>> phase(complex(-1.0, -0.0))35-3.14159265358979336```3738> **Примечание**39>40> Модуль (абсолютное значение) комплексного числа *x* можно вычислить с помощью встроенной функции [`abs()`](https://python-all.ru/3.2/library/functions.html#abs). Для этой операции нет отдельной функции модуля [`cmath`](https://python-all.ru/3.2/library/cmath.html#module-cmath).4142#### `cmath.polar(x)`4344Возвращает представление *x* в полярных координатах. Возвращает пару `(r, phi)`, где *r* – модуль *x*, а phi – фаза *x*. `polar(x)` эквивалентно `(abs(x), phase(x))`.4546#### `cmath.rect(r, phi)`4748Возвращает комплексное число *x* с полярными координатами *r* и *phi*. Эквивалентно `r * (math.cos(phi) + math.sin(phi)*1j)`.4950## 8.3.2. Степенные и логарифмические функции5152#### `cmath.exp(x)`5354Возвращает экспоненциальное значение `e**x`.5556#### `cmath.log(x[, base])`5758Возвращает логарифм *x* по заданному *основанию*. Если *основание* не указано, возвращает натуральный логарифм *x*. Имеется один разрез ветви: от 0 вдоль отрицательной вещественной оси до -∞, непрерывный сверху.5960#### `cmath.log10(x)`6162Возвращает десятичный логарифм *x*. Имеет тот же разрез ветвей, что и [`log()`](https://python-all.ru/3.2/library/cmath.html#cmath.log).6364#### `cmath.sqrt(x)`6566Возвращает квадратный корень *x*. Имеет тот же разрез ветвей, что и [`log()`](https://python-all.ru/3.2/library/cmath.html#cmath.log).6768## 8.3.3. Тригонометрические функции6970#### `cmath.acos(x)`7172Возвращает арккосинус *x*. Имеются два разреза ветвей: один простирается вправо от 1 вдоль вещественной оси до ∞, непрерывный снизу. Другой простирается влево от -1 вдоль вещественной оси до -∞, непрерывный сверху.7374#### `cmath.asin(x)`7576Возвращает арксинус *x*. Имеет те же разрезы ветвей, что и [`acos()`](https://python-all.ru/3.2/library/cmath.html#cmath.acos).7778#### `cmath.atan(x)`7980Возвращает арктангенс *x*. Есть два разреза ветвей: один простирается от `1j` вдоль мнимой оси до `∞j`, непрерывно справа. Другой простирается от `-1j` вдоль мнимой оси до `-∞j`, непрерывно слева.8182#### `cmath.cos(x)`8384Возвращает косинус *x*.8586#### `cmath.sin(x)`8788Возвращает синус *x*.8990#### `cmath.tan(x)`9192Возвращает тангенс *x*.9394## 8.3.4. Гиперболические функции9596#### `cmath.acosh(x)`9798Возвращает гиперболический арккосинус *x*. Имеется один разрез ветвей, идущий влево\\nот 1 вдоль вещественной оси до -∞, непрерывный сверху.99100#### `cmath.asinh(x)`101102Возвращает гиперболический арксинус *x*. Имеется два разреза ветвей:\\nОдин простирается от `1j` вдоль мнимой оси до `∞j`,\\nнепрерывный справа. Другой простирается от `-1j` вдоль\\nмнимой оси до `-∞j`, непрерывный слева.103104#### `cmath.atanh(x)`105106Возвращает гиперболический арктангенс *x*. Имеется два разреза ветвей: Один\\nпростирается от `1` вдоль вещественной оси до `∞`, непрерывный снизу. Другой\\nпростирается от `-1` вдоль вещественной оси до `-∞`, непрерывный\\nсверху.107108#### `cmath.cosh(x)`109110Возвращает гиперболический косинус *x*.111112#### `cmath.sinh(x)`113114Возвращает гиперболический синус *x*.115116#### `cmath.tanh(x)`117118Возвращает гиперболический тангенс *x*.119120## 8.3.5. Функции классификации121122#### `cmath.isfinite(x)`123124Возвращает `True`, если и действительная, и мнимая части *x* конечны, иначе `False`.125126Новое в версии 3.2.127128#### `cmath.isinf(x)`129130Возвращает `True`, если действительная или мнимая часть *x* является бесконечностью, иначе `False`.131132#### `cmath.isnan(x)`133134Возвращает `True`, если действительная или мнимая часть *x* является NaN, иначе `False`.135136## 8.3.6. Константы137138#### `cmath.pi`139140Математическая константа *π*, в виде числа с плавающей запятой.141142#### `cmath.e`143144Математическая константа *e*, в виде числа с плавающей запятой.145146Note that the selection of functions is similar, but not identical, to that in module [`math`](https://python-all.ru/3.2/library/math.html#module-math). The reason for having two modules is that some users aren’t interested in complex numbers, and perhaps don’t even know what they are. They would rather have `math.sqrt(-1)` raise an exception than return a complex number. Also note that the functions defined in [`cmath`](https://python-all.ru/3.2/library/cmath.html#module-cmath) always return a complex number, even if the answer can be expressed as a real number (in which case the complex number has an imaginary part of zero).147148Примечание о разрезах ветвей: это кривые, вдоль которых данная функция перестаёт быть непрерывной. Они являются необходимым свойством многих комплексных функций. Предполагается, что если вам нужно вычислять комплексные функции, вы разбираетесь в разрезах ветвей. Для понимания обратитесь к любой (не слишком элементарной) книге по комплексному анализу. Для получения информации о правильном выборе разрезов ветвей для численных расчётов хорошим справочником может служить следующее издание:149150> **См. также**151>152> Кахан, У: Разрезы ветвей для комплексных элементарных функций; или Много шума из-за знакового бита. В книге Изерлеса, А. и Пауэлла, М. (ред.), Современное состояние численного анализа. Clarendon Press (1987) стр. 165-211.153