math.md
1> **Источник:** https://python-all.ru/3.0/library/math.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# `math` – Математические функции89Этот модуль всегда доступен. Он предоставляет доступ к математическим функциям, определённым в стандарте C.1011Эти функции нельзя использовать с комплексными числами; для работы с ними используйте одноимённые функции из модуля [`cmath`](https://python-all.ru/3.0/library/cmath.html#module-cmath), если необходима поддержка комплексных чисел. Функции разделены на поддерживающие комплексные числа и не поддерживающие, потому что большинство пользователей не хотят изучать столько математики, сколько требуется для понимания комплексных чисел. Получение исключения вместо комплексного результата позволяет раньше обнаружить неожиданное комплексное число, переданное как параметр; так программист может выяснить, как и почему оно появилось.1213Модуль предоставляет следующие функции. Если не указано иное, все возвращаемые значения являются числами с плавающей запятой.1415## Теоретико-числовые функции и функции представления1617#### `[math.ceil]math.ceil(x)`1819Возвращает потолок2021*x*2223, наименьшее целое число, большее или равное2425*x*2627. Если2829*x*3031– не число с плавающей запятой, передает управление3233`x.__ceil__()`3435, которая должна вернуть целочисленное значение3637`Integral`3839.4041#### `[math.copysign]math.copysign(x, y)`4243Возвращает4445*x*4647со знаком4849*y*5051.5253`copysign`5455копирует знаковый бит числа с плавающей запятой IEEE 754;5657`copysign(1, -0.0)`5859возвращает6061*-1.0*6263.6465#### `[math.fabs]math.fabs(x)`6667Возвращает абсолютное значение6869*x*7071.7273#### `[math.factorial]math.factorial(x)`7475Возвращает факториал7677*x*7879. Вызывает8081[`ValueError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.ValueError)8283, если8485*x*8687не является целым числом или отрицательно.8889#### `[math.floor]math.floor(x)`9091Возвращает пол9293*x*9495, наибольшее целое число, меньшее или равное9697*x*9899. Если100101*x*102103– не число с плавающей запятой, передает управление104105`x.__floor__()`106107, которая должна вернуть целочисленное значение108109`Integral`110111.112113#### `[math.fmod]math.fmod(x, y)`114115Возвращает116117`fmod(x, y)`118119, как определено в библиотеке C платформы. Обратите внимание, что выражение Python120121`x % y`122123может возвращать не тот же результат. По стандарту C124125`fmod(x, y)`126127должен быть точно (математически, с бесконечной точностью) равен128129`x - n*y`130131для некоторого целого132133*n*134135, такого что результат имеет тот же знак, что и136137*x*138139, и модуль меньше140141`abs(y)`142143. Выражение Python144145`x % y`146147возвращает результат со знаком148149*y*150151и может быть невычислимо точно для аргументов с плавающей запятой. Например,152153`fmod(-1e-100, 1e100)`154155равно156157`-1e-100`158159, но результат Python160161`-1e-100 % 1e100`162163равен164165`1e100-1e-100`166167, который не может быть представлен точно как float и округляется до неожиданного168169`1e100`170171. По этой причине функция172173[`fmod()`](https://python-all.ru/3.0/library/math.html#math.fmod)174175обычно предпочтительнее при работе с числами с плавающей запятой, а выражение Python176177`x % y`178179– при работе с целыми числами.180181#### `[math.frexp]math.frexp(x)`182183Возвращает мантиссу и экспоненту184185*x*186187в виде пары188189`(m, e)`190191.192193*m*194195– число с плавающей запятой,196197*e*198199– целое число, такие что200201`x == m * 2**e`202203точно. Если204205*x*206207равно нулю, возвращает208209`(0.0, 0)`210211, иначе212213`0.5 <= abs(m) < 1`214215. Используется для «разбора» внутреннего представления числа с плавающей запятой переносимым способом.216217#### `[math.fsum]math.fsum(iterable)`218219Возвращает точную сумму чисел с плавающей запятой из итерируемого объекта. Избегает потери точности, отслеживая несколько промежуточных частичных сумм. Точность алгоритма зависит от гарантий арифметики IEEE-754 и типичного случая, когда режим округления – half-even.220221> **Примечание**222>223> Точность fsum() может ухудшаться в сборках, которые используют сложение с расширенной точностью и затем дважды округляют результаты.224225#### `[math.isinf]math.isinf(x)`226227Проверяет, является ли число с плавающей запятой228229*x*230231положительной или отрицательной бесконечностью.232233#### `[math.isnan]math.isnan(x)`234235Проверяет, является ли число с плавающей запятой236237*x*238239NaN (не числом). NaN являются частью стандартов IEEE 754. Такие операции, как (но не ограничиваясь)240241`inf * 0`242243,244245`inf / inf`246247или любая операция с NaN, например248249`nan * 1`250251, возвращают NaN.252253#### `[math.ldexp]math.ldexp(x, i)`254255Возвращает256257`x * (2**i)`258259. Это, по сути, обратная функция к260261[`frexp()`](https://python-all.ru/3.0/library/math.html#math.frexp)262263.264265#### `[math.modf]math.modf(x)`266267Возвращает дробную и целую части268269*x*270271. Оба результата имеют тот же знак, что и272273*x*274275, и являются числами с плавающей запятой.276277#### `[math.trunc]math.trunc(x)`278279Возвращает значение280281`Real`282283*x*284285, усечённое до типа286287`Integral`288289(обычно целого числа). Передает управление290291`x.__trunc__()`292293.294295Обратите внимание, что [`frexp()`](https://python-all.ru/3.0/library/math.html#math.frexp) и [`modf()`](https://python-all.ru/3.0/library/math.html#math.modf) имеют другой шаблон вызова/возврата, чем их эквиваленты в C: они принимают один аргумент и возвращают пару значений, а не возвращают второе значение через «выходной параметр» (такого в Python нет).296297Для функций [`ceil()`](https://python-all.ru/3.0/library/math.html#math.ceil), [`floor()`](https://python-all.ru/3.0/library/math.html#math.floor) и [`modf()`](https://python-all.ru/3.0/library/math.html#math.modf) обратите внимание, что *все* числа с плавающей запятой достаточно большой величины являются точными целыми числами. Числа с плавающей запятой Python обычно имеют не более 53 бит точности (как и тип double в C), и в этом случае любой float *x* с `abs(x) >= 2**52` обязательно не имеет дробных битов.298299## Степенные и логарифмические функции300301#### `[math.exp]math.exp(x)`302303Возвращает304305`e**x`306307.308309#### `[math.log]math.log(x[, base])`310311Возвращает логарифм312313*x*314315по заданному основанию316317*base*318319. Если основание320321*base*322323не указано, возвращает натуральный логарифм324325*x*326327(то есть логарифм по основанию328329*e*330331).332333#### `[math.log1p]math.log1p(x)`334335Возвращает натуральный логарифм336337*1+x*338339(основание340341*e*342343). Результат вычисляется способом, точным для344345*x*346347вблизи нуля.348349#### `[math.log10]math.log10(x)`350351Возвращает десятичный логарифм (по основанию 10) числа352353*x*354355.356357#### `[math.pow]math.pow(x, y)`358359Возвращает360361`x`362363, возведённое в степень364365`y`366367. Особые случаи по возможности следуют Приложению ‘F’ стандарта C99. В частности,368369`pow(1.0, x)`370371и372373`pow(x, 0.0)`374375всегда возвращают376377`1.0`378379, даже когда380381`x`382383– ноль или NaN. Если и384385`x`386387, и388389`y`390391конечны,392393`x`394395отрицательно, а396397`y`398399не является целым, то400401`pow(x, y)`402403не определён и вызывает404405[`ValueError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.ValueError)406407.408409#### `[math.sqrt]math.sqrt(x)`410411Возвращает квадратный корень из412413*x*414415.416417## Тригонометрические функции418419#### `[math.acos]math.acos(x)`420421Возвращает арккосинус422423*x*424425в радианах.426427#### `[math.asin]math.asin(x)`428429Возвращает арксинус430431*x*432433в радианах.434435#### `[math.atan]math.atan(x)`436437Возвращает арктангенс438439*x*440441в радианах.442443#### `[math.atan2]math.atan2(y, x)`444445Возвращает446447`atan(y / x)`448449в радианах. Результат находится между450451`-π`452453и454455`π`456457. Вектор на плоскости от начала координат до точки458459`(x, y)`460461образует этот угол с положительной осью X. Смысл462463[`atan2()`](https://python-all.ru/3.0/library/math.html#math.atan2)464465заключается в том, что ей известны знаки обоих аргументов, поэтому она может вычислить правильный квадрант для угла. Например,466467`atan(1`468469) и470471`atan2(1, 1)`472473оба равны474475`π/4`476477, но478479`atan2(-1, -1)`480481равен482483`-3*π/4`484485.486487#### `[math.cos]math.cos(x)`488489Возвращает косинус490491*x*492493радиан.494495#### `[math.hypot]math.hypot(x, y)`496497Возвращает евклидову норму,498499`sqrt(x*x + y*y)`500501. Это длина вектора от начала координат до точки502503`(x, y)`504505.506507#### `[math.sin]math.sin(x)`508509Возвращает синус510511*x*512513радиан.514515#### `[math.tan]math.tan(x)`516517Возвращает тангенс518519*x*520521радиан.522523## Преобразование углов524525#### `[math.degrees]math.degrees(x)`526527Преобразует угол528529*x*530531из радианов в градусы.532533#### `[math.radians]math.radians(x)`534535Преобразует угол536537*x*538539из градусов в радианы.540541## Гиперболические функции542543#### `[math.acosh]math.acosh(x)`544545Возвращает обратный гиперболический косинус546547*x*548549.550551#### `[math.asinh]math.asinh(x)`552553Возвращает обратный гиперболический синус554555*x*556557.558559#### `[math.atanh]math.atanh(x)`560561Возвращает обратный гиперболический тангенс562563*x*564565.566567#### `[math.cosh]math.cosh(x)`568569Возвращает гиперболический косинус570571*x*572573.574575#### `[math.sinh]math.sinh(x)`576577Возвращает гиперболический синус578579*x*580581.582583#### `[math.tanh]math.tanh(x)`584585Возвращает гиперболический тангенс586587*x*588589.590591# Константы592593#### `[math.pi]math.pi`594595Математическая константа596597*π*598599.600601#### `[math.e]math.e`602603Математическая константа604605*e*606607.608609> **Примечание**610>611> Модуль `math` в основном состоит из тонких обёрток вокруг функций математической библиотеки языка C на данной платформе. Поведение в исключительных случаях слабо определено стандартами C, и Python заимствует большую часть поведения при сообщении об ошибках математических функций от реализации библиотеки C на конкретной платформе. В результате конкретные исключения, возбуждаемые в ошибочных случаях (и даже то, считаются ли некоторые аргументы исключительными вообще), не определены таким образом, чтобы быть переносимыми между платформами и версиями. Например, возвращает ли `math.log(0)` `-Inf` или возбуждает [`ValueError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.ValueError) или [`OverflowError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.OverflowError) не определено, и в случаях, когда `math.log(0)` возбуждает [`OverflowError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.OverflowError), `math.log(0L)` может возбуждать [`ValueError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.ValueError) вместо этого.612>613> Все функции возвращают тихое *NaN*, если хотя бы один из аргументов равен *NaN*. Сигнальные *NaN* возбуждают исключение. Тип исключения по-прежнему зависит от платформы и реализации libm. Обычно это [`ValueError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.ValueError) для *EDOM* и [`OverflowError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.OverflowError) для errno *ERANGE*.614615> **См. также**616>617> **Модуль [`cmath`](https://python-all.ru/3.0/library/cmath.html#module-cmath)**618>619> Версии многих из этих функций для комплексных чисел.620