Spec-Zone.ru › Python 2.7

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. Обратите внимание, что выражение Python x % y может не возвращать тот же результат. Цель стандарта C заключается в том, чтобы fmod(x, y) было точно (математически; с бесконечной точностью) равно x - n*y для некоторого целого n, такое, что результат имеет тот же знак, что и x, и величина меньше abs(y). Python’s x % y возвращает результат со знаком y вместо этого и может не быть точно вычислимым для аргументов с плавающей точкой. Например, fmod(-1e-100, 1e100) равно -1e-100, но результат Python’s -1e-100 % 1e100 равен 1e100-1e-100, что не может быть точно представлено как число с плавающей точкой и округляется до удивительного 1e100. По этой причине функция fmod() обычно предпочтительнее при работе с числами с плавающей точкой, в то время как Python’s 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)

Возвращает точное суммирование чисел с плавающей точкой из перечисляемых значений. Избегает потери точности путём отслеживания нескольких промежуточных частичных сумм:

>>> 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)

Возвращает значение Real x, усеченное до 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 поведение в особых случаях было слабо определено.

См. также

Module cmath

Комплексные числовые версии многих из этих функций.

© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/2.7/library/math.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API