math — Математические функции
Этот модуль всегда доступен. Он предоставляет доступ к математическим функциям, определённым в стандарте C.
Эти функции нельзя использовать с комплексными числами; используйте функции с тем же именем из модуля cmath, если вам требуется поддержка комплексных чисел. Разделение функций, поддерживающих комплексные числа, и тех, которые не поддерживают, введено, поскольку большинство пользователей не хотят изучать математику, необходимую для понимания комплексных чисел. Получение исключения вместо комплексного результата позволяет раньше обнаружить неожиданное комплексное число, используемое в качестве параметра, чтобы программист мог определить, как и почему оно было сгенерировано.
Данный модуль предоставляет следующие функции. Если не указано иное, все возвращаемые значения являются числами с плавающей точкой.
1. Функции теории чисел и представления
-
math.ceil(x) -
Возвращает целую часть числа x, наименьшее целое число, большее или равное x. Если x не является числом с плавающей точкой, делегирует вызов к
x.__ceil__(), который должен вернуть значениеIntegral.
-
math.copysign(x, y) -
Возвращает число с плавающей точкой, имеющее модуль (абсолютное значение) x, но знак y. На платформах, поддерживающих знаковые нули,
copysign(1.0, -0.0)возвращает -1.0.
-
math.fabs(x) -
Возвращает абсолютное значение x.
-
math.factorial(x) -
Возвращает факториал x. Вызывает исключение
ValueError, если x не является целым или отрицательным.
-
math.floor(x) -
Возвращает наибольшее целое число, меньшее или равное x. Если x не является числом с плавающей точкой, делегирует вызов к
x.__floor__(), который должен вернуть значениеIntegral.
-
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 и типичного случая, когда режим округления — half-even. На некоторых сборках не Windows, используемые библиотеки C используют сложение с расширенной точностью и могут иногда удваивать округление промежуточной суммы, что приводит к неточности в её наименее значащем бите.
Для более подробного обсуждения и двух альтернативных подходов см. рецепты в ASPN cookbook для точного суммирования чисел с плавающей точкой.
-
math.gcd(a, b) -
Возвращает наибольший общий делитель (НОД) целых чисел a и b. Если a или b не равно нулю, то значение
gcd(a, b)— наибольшее положительное целое число, которое делит и a, и b.gcd(0, 0)возвращает0.Добавлена в версии 3.5.
-
math.isclose(a, b, *, rel_tol=1e-09, abs_tol=0.0) -
Возвращает
Trueесли значения a и b близки друг к другу, иFalseв противном случае.Влияют заданные абсолютная и относительная погрешности.
rel_tol — относительная погрешность — это максимальное допустимое различие между a и b, относительно большего абсолютного значения a или b. Например, для установки погрешности в 5%, передайте
rel_tol=0.05. По умолчанию погрешность составляет1e-09, что гарантирует, что два значения совпадают с точностью до примерно 9 десятичных знаков. rel_tol должно быть больше нуля.abs_tol — минимальная абсолютная погрешность — полезна для сравнения значений, близких к нулю. abs_tol должно быть неотрицательным.
Если ошибок нет, результат будет:
abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol).Специальные значения IEEE 754
NaN,inf, и-infбудут обработаны в соответствии с правилами IEEE. В частности,NaNне считается близким к какому-либо другому значению, включаяNaN.infи-infблизки только к самим себе.Добавлена в версии 3.5.
См. также
PEP 485 — Функция для тестирования приблизительного равенства
-
math.isfinite(x) -
Возвращает
Trueесли x не является бесконечностью и не является NaN, иFalseв противном случае. (Обратите внимание, что0.0является конечным).Добавлена в версии 3.2.
-
math.isinf(x) -
Возвращает
Trueесли x является положительной или отрицательной бесконечностью, иFalseв противном случае.
-
math.isnan(x) -
Возвращает
Trueесли x является NaN (не число), иFalseв противном случае.
-
math.ldexp(x, i) -
Возвращает
x * (2**i). Это по существу обратная функцияfrexp().
-
math.modf(x) -
Возвращает дробную и целую части x. Оба результата имеют знак x и являются числами с плавающей точкой.
-
math.trunc(x) -
Возвращает значение
Realx, усеченное доIntegral(обычно целого числа). Делегирует вызов кx.__trunc__().
Обратите внимание, что 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
Добавлена в версии 3.2.
-
math.log(x[, base]) -
С одним аргументом возвращает натуральный логарифм x (по основанию e).
С двумя аргументами возвращает логарифм x по заданному основанию base, вычисляемый как
log(x)/log(base).
-
math.log1p(x) -
Возвращает натуральный логарифм 1+x (по основанию e). Результат вычисляется так, чтобы быть точным для x, близкого к нулю.
-
math.log2(x) -
Возвращает двоичный логарифм от x. Обычно это более точный результат, чем
log(x, 2).Добавлена в версии 3.3.
См. также
int.bit_length()возвращает количество битов, необходимых для представления целого числа в двоичном формате, исключая знак и старшие нули.
-
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()для вычисления точных целочисленных степеней.
-
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.
-
math.asinh(x) -
Возвращает обратный гиперболический синус x.
-
math.atanh(x) -
Возвращает обратный гиперболический тангенс x.
-
math.cosh(x) -
Возвращает гиперболический косинус x.
-
math.sinh(x) -
Возвращает гиперболический синус x.
-
math.tanh(x) -
Возвращает гиперболический тангенс x.
6. Специальные функции
-
math.erf(x) -
Возвращает функцию ошибок в точке x.
Функция
erf()может использоваться для вычисления традиционных статистических функций, таких как кумулятивное стандартное нормальное распределение:def phi(x): 'Cumulative distribution function for the standard normal distribution' return (1.0 + erf(x / sqrt(2.0))) / 2.0Добавлена в версии 3.2.
-
math.erfc(x) -
Возвращает дополнительную функцию ошибок в точке x. Дополнительная функция ошибок определяется как
1.0 - erf(x). Она используется для больших значений x, где вычитание из единицы может привести к потере значимости.Добавлена в версии 3.2.
-
math.gamma(x) -
Возвращает гамма-функцию в точке x.
Добавлена в версии 3.2.
-
math.lgamma(x) -
Возвращает натуральный логарифм абсолютного значения гамма-функции в точке x.
Добавлена в версии 3.2.
7. Константы
-
math.pi -
Математическая константа π = 3,141592…, с доступной точностью.
-
math.e -
Математическая константа e = 2,718281…, с доступной точностью.
-
math.inf -
Положительная бесконечность с плавающей запятой. (Для отрицательной бесконечности используйте
-math.inf.) Эквивалентно выводу отfloat('inf').Добавлена в версии 3.5.
-
math.nan -
Значение с плавающей запятой «не число» (NaN). Эквивалентно выводу от
float('nan').Добавлена в версии 3.5.
Деталь реализации CPython: Модуль math в основном состоит из тонких обёртки вокруг функций платформенной библиотеки C math. Поведение в исключительных случаях следует Приложению 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 как тихие.
См. также
-
Modulecmath - Версии многих из этих функций для комплексных чисел.
© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.5/library/math.html