Документация Python неофициальный перевод

cmath.md

324 строк · 11.8 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.0/library/cmath.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# `cmath` – математические функции для комплексных чисел89Этот модуль всегда доступен. Он предоставляет доступ к математическим функциям для комплексных чисел. Функции этого модуля принимают целые числа, числа с плавающей запятой или комплексные числа в качестве аргументов. Они также примут любой объект Python, у которого есть метод [`__complex__()`](https://python-all.ru/3.0/reference/datamodel.html#object.__complex__) или [`__float__()`](https://python-all.ru/3.0/reference/datamodel.html#object.__float__): эти методы используются для преобразования объекта в комплексное число или число с плавающей запятой соответственно, после чего функция применяется к результату преобразования.1011> **Примечание**12>13> На платформах с аппаратной и системной поддержкой знакового нуля функции, использующие разрезы ветвей, непрерывны по *обе* стороны разреза: знак нуля отличает одну сторону от другой. На платформах без поддержки знакового нуля непрерывность описывается ниже.1415## Комплексные координаты1617Комплексные числа можно выразить с помощью двух важных систем координат. Тип [`complex`](https://python-all.ru/3.0/library/functions.html#complex) в Python использует прямоугольные координаты, где число на комплексной плоскости определяется двумя числами с плавающей запятой: действительной и мнимой частями.1819Определение:2021```python22z = x + 1j * y2324x := real(z)25y := imag(z)26```2728В технике для комплексных чисел популярна полярная система координат. В полярных координатах комплексное число определяется радиусом *r* и фазовым углом *phi*. Радиус *r* – это абсолютное значение комплексного числа, которое можно рассматривать как расстояние от точки (0, 0). Радиус *r* всегда равен 0 или положительному числу с плавающей запятой. Фазовый угол *phi* – это угол против часовой стрелки от положительной оси X, например, *1* имеет угол *0*, *1j* имеет угол *π/2*, а *-1* – угол *-π*.2930> **Примечание**31>32> Хотя [`phase()`](https://python-all.ru/3.0/library/cmath.html#cmath.phase) и func:*polar* возвращают *+π* для отрицательного действительного числа, они могут вернуть *-π* для комплексного числа с очень малой отрицательной мнимой частью, например, *-1-1E-300j*.3334Определение:3536```python37z = r * exp(1j * phi)38z = r * cis(phi)3940r := abs(z) := sqrt(real(z)**2 + imag(z)**2)41phi := phase(z) := atan2(imag(z), real(z))42cis(phi) := cos(phi) + 1j * sin(phi)43```4445#### `[cmath.phase]cmath.phase(x)`4647Возвращает фазу (также называемую аргументом) комплексного числа.4849#### `[cmath.polar]cmath.polar(x)`5051Преобразует5253[`complex`](https://python-all.ru/3.0/library/functions.html#complex)5455из прямоугольных координат в полярные координаты. Функция возвращает кортеж из двух элементов:5657*r*5859и6061*phi*6263.6465*r*6667– это расстояние от 0, а6869*phi*7071– фазовый угол.7273#### `[cmath.rect]cmath.rect(r, phi)`7475Преобразует из полярных координат в прямоугольные и возвращает7677[`complex`](https://python-all.ru/3.0/library/functions.html#complex)7879.8081## Функции модуля cmath8283#### `[cmath.acos]cmath.acos(x)`8485Возвращает арккосинус8687*x*8889. Имеются два разреза ветвей: один простирается вправо от 1 вдоль вещественной оси до ∞, непрерывный снизу. Другой простирается влево от -1 вдоль вещественной оси до -∞, непрерывный сверху.9091#### `[cmath.acosh]cmath.acosh(x)`9293Возвращает гиперболический арккосинус9495*x*9697. Имеется один разрез ветвей, идущий влево\\nот 1 вдоль вещественной оси до -∞, непрерывный сверху.9899#### `[cmath.asin]cmath.asin(x)`100101Возвращает арксинус102103*x*104105. Имеет те же разрезы ветвей, что и106107[`acos()`](https://python-all.ru/3.0/library/cmath.html#cmath.acos)108109.110111#### `[cmath.asinh]cmath.asinh(x)`112113Возвращает гиперболический арксинус114115*x*116117. Имеется два разреза ветвей:\\nОдин простирается от118119`1j`120121вдоль мнимой оси до122123`∞j`124125,\\nнепрерывный справа. Другой простирается от126127`-1j`128129вдоль\\nмнимой оси до130131`-∞j`132133, непрерывный слева.134135#### `[cmath.atan]cmath.atan(x)`136137Возвращает арктангенс138139*x*140141. Есть два разреза ветвей: один простирается от142143`1j`144145вдоль мнимой оси до146147`∞j`148149, непрерывно справа. Другой простирается от150151`-1j`152153вдоль мнимой оси до154155`-∞j`156157, непрерывно слева.158159#### `[cmath.atanh]cmath.atanh(x)`160161Возвращает гиперболический арктангенс162163*x*164165. Имеется два разреза ветвей: Один\\nпростирается от166167`1`168169вдоль вещественной оси до170171`∞`172173, непрерывный снизу. Другой\\nпростирается от174175`-1`176177вдоль вещественной оси до178179`-∞`180181, непрерывный\\nсверху.182183#### `[cmath.cos]cmath.cos(x)`184185Возвращает косинус186187*x*188189.190191#### `[cmath.cosh]cmath.cosh(x)`192193Возвращает гиперболический косинус194195*x*196197.198199#### `[cmath.exp]cmath.exp(x)`200201Возвращает экспоненциальное значение202203`e**x`204205.206207#### `[cmath.isinf]cmath.isinf(x)`208209Возвращает210211*True*212213, если действительная или мнимая часть x положительна или отрицательная бесконечность.214215#### `[cmath.isnan]cmath.isnan(x)`216217Возвращает218219*True*220221, если действительная или мнимая часть x не является числом (NaN).222223#### `[cmath.log]cmath.log(x[, base])`224225Возвращает логарифм226227*x*228229по заданному230231*основанию*232233. Если234235*основание*236237не указано, возвращает натуральный логарифм238239*x*240241. Имеется один разрез ветви: от 0 вдоль отрицательной вещественной оси до -∞, непрерывный сверху.242243#### `[cmath.log10]cmath.log10(x)`244245Возвращает десятичный логарифм246247*x*248249. Имеет тот же разрез ветвей, что и250251[`log()`](https://python-all.ru/3.0/library/cmath.html#cmath.log)252253.254255#### `[cmath.sin]cmath.sin(x)`256257Возвращает синус258259*x*260261.262263#### `[cmath.sinh]cmath.sinh(x)`264265Возвращает гиперболический синус266267*x*268269.270271#### `[cmath.sqrt]cmath.sqrt(x)`272273Возвращает квадратный корень274275*x*276277. Имеет тот же разрез ветвей, что и278279[`log()`](https://python-all.ru/3.0/library/cmath.html#cmath.log)280281.282283#### `[cmath.tan]cmath.tan(x)`284285Возвращает тангенс286287*x*288289.290291#### `[cmath.tanh]cmath.tanh(x)`292293Возвращает гиперболический тангенс294295*x*296297.298299Модуль также определяет две математические константы:300301#### `[cmath.pi]cmath.pi`302303Математическая константа304305*pi*306307в виде числа с плавающей запятой.308309#### `[cmath.e]cmath.e`310311Математическая константа312313*e*314315, в виде числа с плавающей запятой.316317Обратите внимание: набор функций похож, но не идентичен набору из модуля [`math`](https://python-all.ru/3.0/library/math.html#module-math). Причина существования двух модулей в том, что некоторые пользователи не интересуются комплексными числами и, возможно, даже не знают, что это такое. Они предпочли бы, чтобы `math.sqrt(-1)` вызывал исключение, а не возвращал комплексное число. Также обратите внимание: функции, определённые в `cmath`, всегда возвращают комплексное число, даже если ответ можно выразить действительным числом (в этом случае комплексное число имеет нулевую мнимую часть).318319Примечание о разрезах ветвей: это кривые, вдоль которых данная функция перестаёт быть непрерывной. Они являются необходимым свойством многих комплексных функций. Предполагается, что если вам нужно вычислять комплексные функции, вы разбираетесь в разрезах ветвей. Для понимания обратитесь к любой (не слишком элементарной) книге по комплексному анализу. Для получения информации о правильном выборе разрезов ветвей для численных расчётов хорошим справочником может служить следующее издание:320321> **См. также**322>323> Кахан, У: Разрезы ветвей для комплексных элементарных функций; или Много шума из-за знакового бита. В книге Изерлеса, А. и Пауэлла, М. (ред.), Современное состояние численного анализа. Clarendon Press (1987) стр. 165-211.324