cmath.md
1> **Источник:** https://python-all.ru/3.1/library/cmath.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 9.3. `cmath` – Математические функции для комплексных чисел89Этот модуль всегда доступен. Он предоставляет доступ к математическим функциям для комплексных чисел. Функции этого модуля принимают целые числа, числа с плавающей запятой или комплексные числа в качестве аргументов. Они также примут любой объект Python, у которого есть метод [`__complex__()`](https://python-all.ru/3.1/reference/datamodel.html#object.__complex__) или [`__float__()`](https://python-all.ru/3.1/reference/datamodel.html#object.__float__): эти методы используются для преобразования объекта в комплексное число или число с плавающей запятой соответственно, после чего функция применяется к результату преобразования.1011> **Примечание**12>13> На платформах с аппаратной и системной поддержкой знакового нуля функции, использующие разрезы ветвей, непрерывны по *обе* стороны разреза: знак нуля отличает одну сторону от другой. На платформах без поддержки знакового нуля непрерывность описывается ниже.1415## 9.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.1/library/functions.html#abs). Отдельной функции модуля `cmath` для этой операции не существует.4142#### `cmath.polar(x)`4344Возвращает представление4546*x*4748в полярных координатах. Возвращает пару4950`(r, phi)`5152, где5354*r*5556– модуль5758*x*5960, а phi – фаза6162*x*6364.6566`polar(x)`6768эквивалентно6970`(abs(x), phase(x))`7172.7374#### `cmath.rect(r, phi)`7576Возвращает комплексное число7778*x*7980с полярными координатами8182*r*8384и8586*phi*8788. Эквивалентно8990`r * (math.cos(phi) + math.sin(phi)*1j)`9192.9394## 9.3.2. Степенные и логарифмические функции9596#### `cmath.exp(x)`9798Возвращает экспоненциальное значение99100`e**x`101102.103104#### `cmath.log(x[, base])`105106Возвращает логарифм107108*x*109110по заданному111112*основанию*113114. Если115116*основание*117118не указано, возвращает натуральный логарифм119120*x*121122. Имеется один разрез ветви: от 0 вдоль отрицательной вещественной оси до -∞, непрерывный сверху.123124#### `cmath.log10(x)`125126Возвращает десятичный логарифм127128*x*129130. Имеет тот же разрез ветвей, что и131132[`log()`](https://python-all.ru/3.1/library/cmath.html#cmath.log)133134.135136#### `cmath.sqrt(x)`137138Возвращает квадратный корень139140*x*141142. Имеет тот же разрез ветвей, что и143144[`log()`](https://python-all.ru/3.1/library/cmath.html#cmath.log)145146.147148## 9.3.3. Тригонометрические функции149150#### `cmath.acos(x)`151152Возвращает арккосинус153154*x*155156. Имеются два разреза ветвей: один простирается вправо от 1 вдоль вещественной оси до ∞, непрерывный снизу. Другой простирается влево от -1 вдоль вещественной оси до -∞, непрерывный сверху.157158#### `cmath.asin(x)`159160Возвращает арксинус161162*x*163164. Имеет те же разрезы ветвей, что и165166[`acos()`](https://python-all.ru/3.1/library/cmath.html#cmath.acos)167168.169170#### `cmath.atan(x)`171172Возвращает арктангенс173174*x*175176. Есть два разреза ветвей: один простирается от177178`1j`179180вдоль мнимой оси до181182`∞j`183184, непрерывно справа. Другой простирается от185186`-1j`187188вдоль мнимой оси до189190`-∞j`191192, непрерывно слева.193194#### `cmath.cos(x)`195196Возвращает косинус197198*x*199200.201202#### `cmath.sin(x)`203204Возвращает синус205206*x*207208.209210#### `cmath.tan(x)`211212Возвращает тангенс213214*x*215216.217218## 9.3.4. Гиперболические функции219220#### `cmath.acosh(x)`221222Возвращает гиперболический арккосинус223224*x*225226. Имеется один разрез ветвей, идущий влево\\nот 1 вдоль вещественной оси до -∞, непрерывный сверху.227228#### `cmath.asinh(x)`229230Возвращает гиперболический арксинус231232*x*233234. Имеется два разреза ветвей:\\nОдин простирается от235236`1j`237238вдоль мнимой оси до239240`∞j`241242,\\nнепрерывный справа. Другой простирается от243244`-1j`245246вдоль\\nмнимой оси до247248`-∞j`249250, непрерывный слева.251252#### `cmath.atanh(x)`253254Возвращает гиперболический арктангенс255256*x*257258. Имеется два разреза ветвей: Один\\nпростирается от259260`1`261262вдоль вещественной оси до263264`∞`265266, непрерывный снизу. Другой\\nпростирается от267268`-1`269270вдоль вещественной оси до271272`-∞`273274, непрерывный\\nсверху.275276#### `cmath.cosh(x)`277278Возвращает гиперболический косинус279280*x*281282.283284#### `cmath.sinh(x)`285286Возвращает гиперболический синус287288*x*289290.291292#### `cmath.tanh(x)`293294Возвращает гиперболический тангенс295296*x*297298.299300## 9.3.5. Функции классификации301302#### `cmath.isinf(x)`303304Возвращает305306*True*307308, если действительная или мнимая часть x положительна или отрицательная бесконечность.309310#### `cmath.isnan(x)`311312Возвращает313314*True*315316, если действительная или мнимая часть x не является числом (NaN).317318## 9.3.6. Константы319320#### `cmath.pi`321322Математическая константа323324*π*325326, в виде числа с плавающей запятой.327328#### `cmath.e`329330Математическая константа331332*e*333334, в виде числа с плавающей запятой.335336Обратите внимание: набор функций похож, но не идентичен набору из модуля [`math`](https://python-all.ru/3.1/library/math.html#module-math). Причина существования двух модулей в том, что некоторые пользователи не интересуются комплексными числами и, возможно, даже не знают, что это такое. Они предпочли бы, чтобы `math.sqrt(-1)` вызывал исключение, а не возвращал комплексное число. Также обратите внимание: функции, определённые в `cmath`, всегда возвращают комплексное число, даже если ответ можно выразить действительным числом (в этом случае комплексное число имеет нулевую мнимую часть).337338Примечание о разрезах ветвей: это кривые, вдоль которых данная функция перестаёт быть непрерывной. Они являются необходимым свойством многих комплексных функций. Предполагается, что если вам нужно вычислять комплексные функции, вы разбираетесь в разрезах ветвей. Для понимания обратитесь к любой (не слишком элементарной) книге по комплексному анализу. Для получения информации о правильном выборе разрезов ветвей для численных расчётов хорошим справочником может служить следующее издание:339340> **См. также**341>342> Кахан, У: Разрезы ветвей для комплексных элементарных функций; или Много шума из-за знакового бита. В книге Изерлеса, А. и Пауэлла, М. (ред.), Современное состояние численного анализа. Clarendon Press (1987) стр. 165-211.343