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

math – Математические функцииmath – Mathematical functions

Этот модуль всегда доступен. Он предоставляет доступ к математическим функциям, определённым в стандарте C.

Эти функции нельзя использовать с комплексными числами; для работы с ними используйте одноимённые функции из модуля cmath, если необходима поддержка комплексных чисел. Функции разделены на поддерживающие комплексные числа и не поддерживающие, потому что большинство пользователей не хотят изучать столько математики, сколько требуется для понимания комплексных чисел. Получение исключения вместо комплексного результата позволяет раньше обнаружить неожиданное комплексное число, переданное как параметр; так программист может выяснить, как и почему оно появилось.

Модуль предоставляет следующие функции. Если не указано иное, все возвращаемые значения являются числами с плавающей запятой.

Теоретико-числовые функции и функции представленияNumber-theoretic and representation functions

math.ceil(x)
Возвращает потолок x, наименьшее целое число, большее или равное x. Если x – не число с плавающей запятой, передает управление x.__ceil__(), которая должна вернуть целочисленное значение Integral.
math.copysign(x, y)
Возвращает x со знаком y. copysign копирует знаковый бит числа с плавающей запятой IEEE 754; copysign(1, -0.0) возвращает -1.0.
math.fabs(x)
Возвращает абсолютное значение x.
math.factorial(x)
Возвращает факториал x. Вызывает ValueError, если x не является целым числом или отрицательно.
math.floor(x)
Возвращает пол x, наибольшее целое число, меньшее или равное x. Если x – не число с плавающей запятой, передает управление x.__floor__(), которая должна вернуть целочисленное значение Integral.
math.fmod(x, y)
Возвращает fmod(x, y), как определено в библиотеке C платформы. Обратите внимание, что выражение Python x % y может возвращать не тот же результат. По стандарту C fmod(x, y) должен быть точно (математически, с бесконечной точностью) равен x - n*y для некоторого целого n, такого что результат имеет тот же знак, что и x, и модуль меньше abs(y). Выражение Python x % y возвращает результат со знаком y и может быть невычислимо точно для аргументов с плавающей запятой. Например, fmod(-1e-100, 1e100) равно -1e-100, но результат Python -1e-100 % 1e100 равен 1e100-1e-100, который не может быть представлен точно как float и округляется до неожиданного 1e100. По этой причине функция fmod() обычно предпочтительнее при работе с числами с плавающей запятой, а выражение Python x % y – при работе с целыми числами.
math.frexp(x)
Возвращает мантиссу и экспоненту x в виде пары (m, e). m – число с плавающей запятой, e – целое число, такие что x == m * 2**e точно. Если x равно нулю, возвращает (0.0, 0), иначе 0.5 <= abs(m) < 1. Используется для «разбора» внутреннего представления числа с плавающей запятой переносимым способом.
math.fsum(iterable)

Возвращает точную сумму чисел с плавающей запятой из итерируемого объекта. Избегает потери точности, отслеживая несколько промежуточных частичных сумм. Точность алгоритма зависит от гарантий арифметики IEEE-754 и типичного случая, когда режим округления – half-even.

Примечание

Точность fsum() может ухудшаться в сборках, которые используют сложение с расширенной точностью и затем дважды округляют результаты.

math.isinf(x)
Проверяет, является ли число с плавающей запятой x положительной или отрицательной бесконечностью.
math.isnan(x)
Проверяет, является ли число с плавающей запятой x NaN (не числом). NaN являются частью стандартов IEEE 754. Такие операции, как (но не ограничиваясь) inf * 0, inf / inf или любая операция с NaN, например nan * 1, возвращают NaN.
math.ldexp(x, i)
Возвращает x * (2**i). Это, по сути, обратная функция к frexp().
math.modf(x)
Возвращает дробную и целую части x. Оба результата имеют тот же знак, что и x, и являются числами с плавающей запятой.
math.trunc(x)
Возвращает значение Real x, усечённое до типа Integral (обычно целого числа). Передает управление x.__trunc__().

Обратите внимание, что frexp() и modf() имеют другой шаблон вызова/возврата, чем их эквиваленты в C: они принимают один аргумент и возвращают пару значений, а не возвращают второе значение через «выходной параметр» (такого в Python нет).

Для функций ceil(), floor() и modf() обратите внимание, что все числа с плавающей запятой достаточно большой величины являются точными целыми числами. Числа с плавающей запятой Python обычно имеют не более 53 бит точности (как и тип double в C), и в этом случае любой float x с abs(x) >= 2**52 обязательно не имеет дробных битов.

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

math.exp(x)
Возвращает e**x.
math.log(x[, base])
Возвращает логарифм x по заданному основанию base. Если основание base не указано, возвращает натуральный логарифм x (то есть логарифм по основанию e).
math.log1p(x)
Возвращает натуральный логарифм 1+x (основание e). Результат вычисляется способом, точным для x вблизи нуля.
math.log10(x)
Возвращает десятичный логарифм (по основанию 10) числа x.
math.pow(x, y)
Возвращает x, возведённое в степень y. Особые случаи по возможности следуют Приложению ‘F’ стандарта C99. В частности, pow(1.0, x) и pow(x, 0.0) всегда возвращают 1.0, даже когда x – ноль или NaN. Если и x, и y конечны, x отрицательно, а y не является целым, то pow(x, y) не определён и вызывает ValueError.
math.sqrt(x)
Возвращает квадратный корень из x.

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

math.acos(x)
Возвращает арккосинус x в радианах.
math.asin(x)
Возвращает арксинус x в радианах.
math.atan(x)
Возвращает арктангенс x в радианах.
math.atan2(y, x)
Возвращает atan(y / x) в радианах. Результат находится между и π. Вектор на плоскости от начала координат до точки (x, y) образует этот угол с положительной осью X. Смысл atan2() заключается в том, что ей известны знаки обоих аргументов, поэтому она может вычислить правильный квадрант для угла. Например, atan(1) и atan2(1, 1) оба равны π/4, но atan2(-1, -1) равен -3*π/4.
math.cos(x)
Возвращает косинус x радиан.
math.hypot(x, y)
Возвращает евклидову норму, sqrt(x*x + y*y). Это длина вектора от начала координат до точки (x, y).
math.sin(x)
Возвращает синус x радиан.
math.tan(x)
Возвращает тангенс x радиан.

Преобразование угловAngular conversion

math.degrees(x)
Преобразует угол x из радианов в градусы.
math.radians(x)
Преобразует угол x из градусов в радианы.

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

math.acosh(x)
Возвращает обратный гиперболический косинус x.
math.asinh(x)
Возвращает обратный гиперболический синус x.
math.atanh(x)
Возвращает обратный гиперболический тангенс x.
math.cosh(x)
Возвращает гиперболический косинус x.
math.sinh(x)
Возвращает гиперболический синус x.
math.tanh(x)
Возвращает гиперболический тангенс x.

КонстантыConstants

math.pi
Математическая константа π.
math.e
Математическая константа e.

Примечание

Модуль math в основном состоит из тонких обёрток вокруг функций математической библиотеки языка C на данной платформе. Поведение в исключительных случаях слабо определено стандартами C, и Python заимствует большую часть поведения при сообщении об ошибках математических функций от реализации библиотеки C на конкретной платформе. В результате конкретные исключения, возбуждаемые в ошибочных случаях (и даже то, считаются ли некоторые аргументы исключительными вообще), не определены таким образом, чтобы быть переносимыми между платформами и версиями. Например, возвращает ли math.log(0) -Inf или возбуждает ValueError или OverflowError не определено, и в случаях, когда math.log(0) возбуждает OverflowError, math.log(0L) может возбуждать ValueError вместо этого.

Все функции возвращают тихое NaN, если хотя бы один из аргументов равен NaN. Сигнальные NaN возбуждают исключение. Тип исключения по-прежнему зависит от платформы и реализации libm. Обычно это ValueError для EDOM и OverflowError для errno ERANGE.

См. также

Модуль cmath
Версии многих из этих функций для комплексных чисел.