math — Математические функции
Этот модуль всегда доступен. Он предоставляет доступ к математическим функциям, определённым стандартом C.
Эти функции не могут быть использованы с комплексными числами; используйте функции с тем же именем из модуля cmath, если вам требуется поддержка комплексных чисел. Различие между функциями, которые поддерживают комплексные числа, и теми, которые не поддерживают, сделано, так как большинство пользователей не хотят изучать столько математики, сколько необходимо для понимания комплексных чисел. Получение исключения вместо комплексного результата позволяет раньше обнаружить неожиданное комплексное число, используемое в качестве параметра, чтобы программист мог определить, как и почему оно было сгенерировано.
Следующие функции предоставляются этим модулем. За исключением явно указанных случаев, все возвращаемые значения являются числами с плавающей точкой.
1. Функции теории чисел и представления
-
math.ceil(x) -
Возвращает целую часть от x как число с плавающей точкой, наименьшее целое значение, большее или равное x.
-
math.copysign(x, y) -
Возвращает x со знаком y. На платформах, поддерживающих знаковые нули,
copysign(1.0, -0.0)возвращает -1.0.Введено в версии 2.6.
-
math.fabs(x) -
Возвращает абсолютное значение x.
-
math.factorial(x) -
Возвращает факториал x. Вызывает исключение
ValueError, если x не является целым числом или отрицательным.Введено в версии 2.6.
-
math.floor(x) -
Возвращает дробную часть от x как число с плавающей точкой, наибольшее целое значение, меньшее или равное x.
-
math.fmod(x, y) -
Возвращает
fmod(x, y), как определено платформенной библиотекой C. Обратите внимание, что выражение Pythonx % yможет не возвращать тот же результат. Цель стандарта C заключается в том, чтобыfmod(x, y)было точно (математически; с бесконечной точностью) равноx - n*yдля некоторого целого n, такое, что результат имеет тот же знак, что и x, и величина меньшеabs(y). Python’sx % yвозвращает результат со знаком y вместо этого и может не быть точно вычислимым для аргументов с плавающей точкой. Например,fmod(-1e-100, 1e100)равно-1e-100, но результат Python’s-1e-100 % 1e100равен1e100-1e-100, что не может быть точно представлено как число с плавающей точкой и округляется до удивительного1e100. По этой причине функцияfmod()обычно предпочтительнее при работе с числами с плавающей точкой, в то время как Python’sx % 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) -
Возвращает точное суммирование чисел с плавающей точкой из перечисляемых значений. Избегает потери точности путём отслеживания нескольких промежуточных частичных сумм:
>>> sum([.1, .1, .1, .1, .1, .1, .1, .1, .1, .1]) 0.9999999999999999 >>> fsum([.1, .1, .1, .1, .1, .1, .1, .1, .1, .1]) 1.0
Точность алгоритма зависит от гарантий арифметики IEEE-754 и типичного случая, когда режим округления — получение ближайшего. На некоторых не-Windows сборках, базовая библиотека C использует сложение с расширенной точностью и может иногда двойственно округлять промежуточную сумму, вызывая отклонение в её наименее значащем бите.
Для дальнейшего обсуждения и двух альтернативных подходов, смотрите рецепты сборника ASPN по точному суммированию чисел с плавающей точкой.
Введено в версии 2.6.
-
math.isinf(x) -
Проверяет, является ли число с плавающей точкой x положительной или отрицательной бесконечностью.
Введено в версии 2.6.
-
math.isnan(x) -
Проверяет, является ли число с плавающей точкой x NaN (не число). Для получения дополнительной информации о NaN, см. стандарты IEEE 754.
Введено в версии 2.6.
-
math.ldexp(x, i) -
Возвращает
x * (2**i). Это по существу обратная функцияfrexp().
-
math.modf(x) -
Возвращает дробную и целую части x. Оба результата имеют знак x и являются числами с плавающей точкой.
-
math.trunc(x) -
Возвращает значение
Realx, усеченное доIntegral(обычно длинное целое число). Использует метод__trunc__.Введено в версии 2.6.
Обратите внимание, что frexp() и modf() имеют другую структуру вызова/возврата, чем их аналоги в C: они принимают один аргумент и возвращают пару значений, а не возвращают второе возвращаемое значение через «параметр вывода» (такого понятия в Python нет).
Для функций ceil(), floor() и modf() обратите внимание, что *все* числа с плавающей точкой достаточно большой величины являются точными целыми числами. Числа с плавающей точкой Python обычно имеют не более 53 бит точности (такие же, как платформа C double), в этом случае любое число с плавающей точкой x с abs(x) >= 2**52 обязательно не имеет дробных битов.
2. Функции степеней и логарифмов
-
math.exp(x) -
Возвращает
e**x.
-
math.expm1(x) -
Возвращает
e**x - 1. Для малых чисел с плавающей точкой x, вычитание вexp(x) - 1может привести к существенной потере точности; функцияexpm1()предоставляет способ вычисления этой величины с полной точностью:>>> from math import exp, expm1 >>> exp(1e-5) - 1 # gives result accurate to 11 places 1.0000050000069649e-05 >>> expm1(1e-5) # result accurate to full precision 1.0000050000166668e-05
Введено в версии 2.7.
-
math.log(x[, base]) -
С одним аргументом, возвращает натуральный логарифм x (по основанию e).
С двумя аргументами, возвращает логарифм x по заданному основанию base, вычисляемый как
log(x)/log(base).Изменено в версии 2.3: Добавлен аргумент base.
-
math.log1p(x) -
Возвращает натуральный логарифм 1+x (по основанию e). Результат вычисляется таким образом, чтобы обеспечить точность для x, близкого к нулю.
Введено в версии 2.6.
-
math.log10(x) -
Возвращает десятичный логарифм x. Обычно это более точно, чем
log(x, 10).
-
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.pow()преобразует оба аргумента в типfloat. Используйте**или встроенную функциюpow()для вычисления точных степеней целых чисел.Изменено в версии 2.6: Результат
1**nanиnan**0был неопределённым.
-
math.sqrt(x) -
Возвращает квадратный корень из x.
3. Тригонометрические функции
-
math.acos(x) -
Возвращает арккосинус x в радианах.
-
math.asin(x) -
Возвращает арксинус x в радианах.
-
math.atan(x) -
Возвращает арктангенс x в радианах.
-
math.atan2(y, x) -
Возвращает
atan(y / x), в радианах. Результат находится в диапазоне от-piдоpi. Вектор на плоскости от начала координат до точки(x, y)образует этот угол с положительной осью X. Суть функцииatan2()в том, что она знает знаки обоих входных данных, поэтому может вычислить правильный квадрант для угла. Например,atan(1)иatan2(1, 1)— обаpi/4, ноatan2(-1, -1)—-3*pi/4.
-
math.cos(x) -
Возвращает косинус угла x в радианах.
-
math.hypot(x, y) -
Возвращает евклидову норму,
sqrt(x*x + y*y). Это длина вектора от начала координат до точки(x, y).
-
math.sin(x) -
Возвращает синус угла x в радианах.
-
math.tan(x) -
Возвращает тангенс угла x в радианах.
4. Преобразование углов
-
math.degrees(x) -
Преобразует угол x из радиан в градусы.
-
math.radians(x) -
Преобразует угол x из градусов в радианы.
5. Гиперболические функции
-
math.acosh(x) -
Возвращает обратный гиперболический косинус от x.
Добавлена в версии 2.6.
-
math.asinh(x) -
Возвращает обратный гиперболический синус от x.
Добавлена в версии 2.6.
-
math.atanh(x) -
Возвращает обратный гиперболический тангенс от x.
Добавлена в версии 2.6.
-
math.cosh(x) -
Возвращает гиперболический косинус от x.
-
math.sinh(x) -
Возвращает гиперболический синус от x.
-
math.tanh(x) -
Возвращает гиперболический тангенс от x.
6. Специальные функции
-
math.erf(x) -
Возвращает функцию ошибки в точке x.
Добавлена в версии 2.7.
-
math.erfc(x) -
Возвращает дополнительную функцию ошибки в точке x.
Добавлена в версии 2.7.
-
math.gamma(x) -
Возвращает гамма-функцию в точке x.
Добавлена в версии 2.7.
-
math.lgamma(x) -
Возвращает натуральный логарифм абсолютного значения гамма-функции в точке x.
Добавлена в версии 2.7.
7. Константы
-
math.pi -
Математическая константа π = 3,141592…, с доступной точностью.
-
math.e -
Математическая константа e = 2,718281…, с доступной точностью.
Деталь реализации CPython: Модуль math в основном состоит из тонких обёртки вокруг функций платформенной C-библиотеки математических функций. Поведение в исключительных случаях следует Приложению F стандарта C99, где это уместно. Текущая реализация будет поднимать ValueError для некорректных операций, таких как sqrt(-1.0) или log(0.0) (где Приложение F стандарта C99 рекомендует сигнализировать о некорректной операции или делении на ноль), и OverflowError для результатов, выходящих за пределы (например, exp(1000.0)). NaN не будет возвращаться ни из одной из вышеперечисленных функций, если хотя бы один из входных аргументов был NaN; в этом случае большинство функций вернут NaN, но (снова, в соответствии с Приложением F стандарта C99) есть некоторые исключения из этого правила, например pow(float('nan'), 0.0) или hypot(float('nan'), float('inf')).
Обратите внимание, что Python не предпринимает попыток различать сигнализирующие NaN от бесшумных NaN, и поведение для сигнализирующих NaN остаётся неопределённым. Типичное поведение заключается в том, чтобы обрабатывать все NaN как бесшумные.
Изменено в версии 2.6: Поведение в особых случаях теперь направлено на соответствие Приложению F стандарта C99. В предыдущих версиях Python поведение в особых случаях было слабо определено.
См. также
-
Modulecmath -
Комплексные числовые версии многих из этих функций.
© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/2.7/library/math.html