math
— Mathematical functions¶
Цей модуль забезпечує доступ до математичних функцій, визначених стандартом C.
Ці функції не можна використовувати з комплексними числами; використовуйте однойменні функції з модуля cmath
, якщо вам потрібна підтримка комплексних чисел. Розрізнення між функціями, які підтримують комплексні числа, і тими, які не підтримують, зроблено, оскільки більшість користувачів не хочуть вивчати стільки математики, скільки потрібно для розуміння комплексних чисел. Отримання винятку замість комплексного результату дозволяє раніше виявити неочікуване комплексне число, яке використовується як параметр, щоб програміст міг визначити, як і чому воно взагалі було згенероване.
Цей модуль забезпечує такі функції. За винятком випадків, коли явно зазначено інше, усі повернуті значення є числами з плаваючою точкою.
Number-theoretic functions |
|
Number of ways to choose k items from n items without repetition and without order |
|
n factorial |
|
Greatest common divisor of the integer arguments |
|
Integer square root of a nonnegative integer n |
|
Least common multiple of the integer arguments |
|
Number of ways to choose k items from n items without repetition and with order |
|
Floating point arithmetic |
|
Ceiling of x, the smallest integer greater than or equal to x |
|
Absolute value of x |
|
Floor of x, the largest integer less than or equal to x |
|
Fused multiply-add operation: |
|
Remainder of division |
|
Fractional and integer parts of x |
|
Remainder of x with respect to y |
|
Integer part of x |
|
Floating point manipulation functions |
|
Magnitude (absolute value) of x with the sign of y |
|
Mantissa and exponent of x |
|
Check if the values a and b are close to each other |
|
Check if x is neither an infinity nor a NaN |
|
Check if x is a positive or negative infinity |
|
Check if x is a NaN (not a number) |
|
|
|
Floating-point value steps steps after x towards y |
|
Value of the least significant bit of x |
|
Power, exponential and logarithmic functions |
|
Cube root of x |
|
e raised to the power x |
|
2 raised to the power x |
|
e raised to the power x, minus 1 |
|
Logarithm of x to the given base (e by default) |
|
Natural logarithm of 1+x (base e) |
|
Base-2 logarithm of x |
|
Base-10 logarithm of x |
|
x raised to the power y |
|
Square root of x |
|
Summation and product functions |
|
Euclidean distance between two points p and q given as an iterable of coordinates |
|
Sum of values in the input iterable |
|
Euclidean norm of an iterable of coordinates |
|
Product of elements in the input iterable with a start value |
|
Sum of products from two iterables p and q |
|
Angular conversion |
|
Convert angle x from radians to degrees |
|
Convert angle x from degrees to radians |
|
Trigonometric functions |
|
Arc cosine of x |
|
Arc sine of x |
|
Arc tangent of x |
|
|
|
Cosine of x |
|
Sine of x |
|
Tangent of x |
|
Hyperbolic functions |
|
Inverse hyperbolic cosine of x |
|
Inverse hyperbolic sine of x |
|
Inverse hyperbolic tangent of x |
|
Hyperbolic cosine of x |
|
Hyperbolic sine of x |
|
Hyperbolic tangent of x |
|
Special functions |
|
Error function at x |
|
Gamma function at x |
|
Natural logarithm of the absolute value of the Gamma function at x |
|
Constants |
|
π = 3.141592… |
|
e = 2.718281… |
|
τ = 2π = 6.283185… |
|
Positive infinity |
|
«Not a number» (NaN) |
Number-theoretic functions¶
- math.comb(n, k)¶
Повертає кількість способів вибору k елементів з n елементів без повторення та без порядку.
Оцінюється як
n! / (k! * (n - k)!)
колиk <= n
and evaluates to zero whenk > n
.Also called the binomial coefficient because it is equivalent to the coefficient of k-th term in polynomial expansion of
(1 + x)ⁿ
.Викликає
TypeError
, якщо один із аргументів не є цілим числом. ВикликаєValueError
, якщо будь-який з аргументів негативний.Added in version 3.8.
- math.factorial(n)¶
Return n factorial as an integer. Raises
ValueError
if n is not integral or is negative.Змінено в версії 3.10: Floats with integral values (like
5.0
) are no longer accepted.
- math.gcd(*integers)¶
Повертає найбільший спільний дільник указаних цілих аргументів. Якщо будь-який з аргументів не дорівнює нулю, то повернуте значення є найбільшим натуральним числом, яке є дільником усіх аргументів. Якщо всі аргументи дорівнюють нулю, то повертається значення
0
.gcd()
без аргументів повертає0
.Added in version 3.5.
Змінено в версії 3.9: Додано підтримку довільної кількості аргументів. Раніше підтримувалися лише два аргументи.
- math.isqrt(n)¶
Повертає цілий квадратний корінь із цілого невід’ємного числа n. Це нижня частина точного квадратного кореня з n або, що еквівалентно, найбільше ціле число a таке, що a² ≤ n.
Для деяких програм може бути зручніше мати найменше ціле a таке, що n ≤ a², або іншими словами, стеля точного квадратного кореня з n. Для позитивного n це можна обчислити за допомогою
a = 1 + isqrt(n - 1)
.Added in version 3.8.
- math.lcm(*integers)¶
Повертає найменше спільне кратне вказаних цілих аргументів. Якщо всі аргументи відмінні від нуля, тоді повертається найменше натуральне число, кратне всім аргументам. Якщо будь-який з аргументів дорівнює нулю, то повертається значення
0
.lcm()
без аргументів повертає1
.Added in version 3.9.
- math.perm(n, k=None)¶
Повернути кількість способів вибору k елементів з n елементів без повторення та з порядком.
Оцінюється як
n! / (n - k)!
колиk <= n
and evaluates to zero whenk > n
.If k is not specified or is
None
, then k defaults to n and the function returnsn!
.Викликає
TypeError
, якщо один із аргументів не є цілим числом. ВикликаєValueError
, якщо будь-який з аргументів негативний.Added in version 3.8.
Floating point arithmetic¶
- math.ceil(x)¶
Повертає максимальне значення x, найменше ціле число, більше або рівне x. Якщо x не є числом з плаваючою точкою, делегує
x.__ceil__
, який має повернути значенняIntegral
.
- math.fabs(x)¶
Повертає абсолютне значення x.
- math.floor(x)¶
Повертає нижню частину x, найбільше ціле число, менше або дорівнює x. Якщо x не є числом з плаваючою точкою, делегує
x.__floor__
, який має повернути значенняIntegral
.
- math.fma(x, y, z)¶
Fused multiply-add operation. Return
(x * y) + z
, computed as though with infinite precision and range followed by a single round to thefloat
format. This operation often provides better accuracy than the direct expression(x * y) + z
.This function follows the specification of the fusedMultiplyAdd operation described in the IEEE 754 standard. The standard leaves one case implementation-defined, namely the result of
fma(0, inf, nan)
andfma(inf, 0, nan)
. In these cases,math.fma
returns a NaN, and does not raise any exception.Added in version 3.13.
- math.fmod(x, y)¶
Повертає
fmod(x, y)
, як визначено бібліотекою платформи C. Зверніть увагу, що вираз Pythonx % y
може не повернути той самий результат. Метою стандарту C є те, щоfmod(x, y)
точно (математично; з нескінченною точністю) дорівнюєx - n*y
для деякого цілого числа n, щоб результат мав той самий знак, що й x, і величина менша заabs(y)
.x % y
Python замість цього повертає результат зі знаком y і може бути неточно обчислюваним для аргументів з плаваючою точкою. Наприклад,fmod(-1e-100, 1e100)
є-1e-100
, але результатом-1e-100 % 1e100
Python є1e100-1e-100
, який не може бути точно представлений як число з плаваючою точкою, і округлюється до несподіваного1e100
. З цієї причини функціяfmod()
зазвичай є кращою під час роботи з числами з плаваючою точкою, тоді якx % y
Python є кращою під час роботи з цілими числами.
- math.modf(x)¶
Повертає дробову та цілу частини x. Обидва результати мають знак x і є числами з плаваючою точкою.
Note that
modf()
has a different call/return pattern than its C equivalents: it takes a single argument and return a pair of values, rather than returning its second return value through an „output parameter“ (there is no such thing in Python).
- math.remainder(x, y)¶
Повертає залишок x у стилі IEEE 754 відносно y. Для кінцевого x і кінцевого ненульового y це різниця
x - n*y
, деn
є найближчим цілим числом до точного значення часткиx / y
. Якщоx / y
знаходиться точно посередині між двома послідовними цілими числами, дляn
використовується найближче парне ціле число. Таким чином, залишокr = залишок(x, y)
завжди задовольняєabs(r) <= 0,5 * abs(y)
.Спеціальні випадки відповідають стандарту IEEE 754: зокрема,
remainder(x, math.inf)
є x для будь-якого кінцевого x, аremainder(x, 0)
іremainder(math.inf). inf, x)
піднятиValueError
для будь-якого не-NaN x. Якщо результатом операції залишку є нуль, цей нуль матиме той самий знак, що й x.On platforms using IEEE 754 binary floating point, the result of this operation is always exactly representable: no rounding error is introduced.
Added in version 3.7.
- math.trunc(x)¶
Поверніть x із видаленням дробової частини, залишаючи цілу частину. Це округляє до 0:
trunc()
еквівалентноfloor()
для додатного x та еквівалентноceil()
для від’ємного x. Якщо x не є числом з плаваючою точкою, делегуєx.__trunc__
, який має повернути значенняIntegral
.
Для функцій ceil()
, floor()
і modf()
зауважте, що всі числа з плаваючою комою досить великої величини є точними цілими числами. Python зазвичай містить не більше 53 бітів точності (так само, як і подвійний тип платформи C), у цьому випадку будь-яке число з плаваючою речовиною x із abs(x) >= 2**52
обов’язково не має дробових бітів. .
Floating point manipulation functions¶
- math.copysign(x, y)¶
Повертає число з плаваючою точкою з величиною (абсолютним значенням) x, але зі знаком y. На платформах, які підтримують нулі зі знаком,
copysign(1.0, -0.0)
повертає -1.0.
- math.frexp(x)¶
Повертає мантису та експонент x як пару
(m, e)
. m є числом з плаваючою точкою, а e є цілим числом таким чином, щоx == m * 2**e
точно. Якщо x дорівнює нулю, повертає(0,0, 0)
, інакше0,5 <= abs(m) < 1
. Це використовується, щоб «розібрати» внутрішнє представлення float переносним способом.Note that
frexp()
has a different call/return pattern than its C equivalents: it takes a single argument and return a pair of values, rather than returning its second return value through an „output parameter“ (there is no such thing in Python).
- math.isclose(a, b, *, rel_tol=1e-09, abs_tol=0.0)¶
Повертає
True
, якщо значення a і b близькі одне до одного, іFalse
в іншому випадку.Whether or not two values are considered close is determined according to given absolute and relative tolerances. If no errors occur, the result will be:
abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol)
.rel_tol is the relative tolerance – it is the maximum allowed difference between a and b, relative to the larger absolute value of a or b. For example, to set a tolerance of 5%, pass
rel_tol=0.05
. The default tolerance is1e-09
, which assures that the two values are the same within about 9 decimal digits. rel_tol must be nonnegative and less than1.0
.abs_tol is the absolute tolerance; it defaults to
0.0
and it must be nonnegative. When comparingx
to0.0
,isclose(x, 0)
is computed asabs(x) <= rel_tol * abs(x)
, which isFalse
for anyx
and rel_tol less than1.0
. So add an appropriate positive abs_tol argument to the call.Спеціальні значення IEEE 754
NaN
,inf
і-inf
оброблятимуться відповідно до правил IEEE. Зокрема,NaN
не вважається близьким до будь-якого іншого значення, включаючиNaN
.inf
і-inf
вважаються лише близькими до самих себе.Added in version 3.5.
Дивись також
PEP 485 – Функція для перевірки приблизної рівності
- math.isfinite(x)¶
Повертає
True
, якщо x не є ні нескінченністю, ні NaN, іFalse
в іншому випадку. (Зверніть увагу, що0.0
вважається кінцевим.)Added in version 3.2.
- math.isinf(x)¶
Повертає
True
, якщо x є додатною або від’ємною нескінченністю, іFalse
в іншому випадку.
- math.isnan(x)¶
Повертає
True
, якщо x є NaN (а не число), іFalse
в іншому випадку.
- math.nextafter(x, y, steps=1)¶
Return the floating-point value steps steps after x towards y.
If x is equal to y, return y, unless steps is zero.
приклади:
math.nextafter(x, math.inf)
йде вгору: до позитивної нескінченності.math.nextafter(x, -math.inf)
йде вниз: до мінус нескінченності.math.nextafter(x, 0.0)
рухається до нуля.math.nextafter(x, math.copysign(math.inf, x))
відходить від нуля.
Дивіться також
math.ulp()
.Added in version 3.9.
Змінено в версії 3.12: Added the steps argument.
- math.ulp(x)¶
Повертає значення молодшого біта числа з плаваючою точкою x:
Якщо x є NaN (а не числом), поверніть x.
Якщо x від’ємне, поверніть
ulp(-x)
.Якщо x є позитивною нескінченністю, поверніть x.
Якщо x дорівнює нулю, поверніть найменше додатне деноралізоване число з плаваючою точкою (менше ніж мінімальне позитивне нормалізоване число з плаваючою точкою,
sys.float_info.min
).Якщо x дорівнює найбільшому додатному репрезентативному float, поверніть значення молодшого значущого біта x, щоб перше число з плаваючою точкою, менше за x, було
x - ulp(x)
.В іншому випадку (x — додатне скінченне число) поверніть значення молодшого біта x, щоб перше число з плаваючою речовиною, більше за x, було
x + ulp(x)
.
ULP розшифровується як «Unit in the Last Place».
Дивіться також
math.nextafter()
іsys.float_info.epsilon
.Added in version 3.9.
Power, exponential and logarithmic functions¶
- math.cbrt(x)¶
Return the cube root of x.
Added in version 3.11.
- math.exp(x)¶
Поверніть e у степені x, де e = 2,718281… є основою натуральних логарифмів. Зазвичай це точніше, ніж
math.e ** x
абоpow(math.e, x)
.
- math.exp2(x)¶
Return 2 raised to the power x.
Added in version 3.11.
- math.expm1(x)¶
Return e raised to the power x, minus 1. Here e is the base of natural logarithms. For small floats x, the subtraction in
exp(x) - 1
can result in a significant loss of precision; theexpm1()
function provides a way to compute this quantity to full precision:>>> 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
Added in version 3.2.
- math.log(x[, base])¶
З одним аргументом повертає натуральний логарифм x (за основою e).
З двома аргументами повертає логарифм від x до заданої основи, обчислений як
log(x)/log(основа)
.
- math.log1p(x)¶
Повертає натуральний логарифм 1+x (за основою e). Результат обчислюється таким чином, що є точним для x біля нуля.
- math.log2(x)¶
Повертає логарифм x за основою 2. Зазвичай це точніше, ніж
log(x, 2)
.Added in version 3.3.
Дивись також
int.bit_length()
повертає кількість бітів, необхідну для представлення цілого числа в двійковій формі, за винятком знака та нулів на початку.
- math.log10(x)¶
Повертає логарифм x за основою 10. Зазвичай це точніше, ніж
log(x, 10)
.
- math.pow(x, y)¶
Return x raised to the power y. Exceptional cases follow the IEEE 754 standard as far as possible. In particular,
pow(1.0, x)
andpow(x, 0.0)
always return1.0
, even when x is a zero or a NaN. If both x and y are finite, x is negative, and y is not an integer thenpow(x, y)
is undefined, and raisesValueError
.На відміну від вбудованого оператора
**
,math.pow()
перетворює обидва свої аргументи на типfloat
. Використовуйте**
або вбудовану функціюpow()
для обчислення точних цілих степенів.Змінено в версії 3.11: The special cases
pow(0.0, -inf)
andpow(-0.0, -inf)
were changed to returninf
instead of raisingValueError
, for consistency with IEEE 754.
- math.sqrt(x)¶
Повертає квадратний корінь з x.
Summation and product functions¶
- math.dist(p, q)¶
Повертає евклідову відстань між двома точками p і q, кожна з яких задана як послідовність (або повторювана) координат. Дві точки повинні мати однаковий розмір.
Приблизно еквівалентно:
sqrt(sum((px - qx) ** 2.0 for px, qx in zip(p, q)))
Added in version 3.8.
- math.fsum(iterable)¶
Return an accurate floating-point sum of values in the iterable. Avoids loss of precision by tracking multiple intermediate partial sums.
Точність алгоритму залежить від арифметичних гарантій IEEE-754 і типового випадку, коли режим округлення є напівпарним. У деяких збірках, відмінних від Windows, базова бібліотека C використовує розширену точність додавання та іноді може подвоїти округлення проміжної суми, спричиняючи її вимкнення у своєму молодшому розряді.
For further discussion and two alternative approaches, see the ASPN cookbook recipes for accurate floating-point summation.
- math.hypot(*coordinates)¶
Повертає евклідову норму,
sqrt(sum(x**2 для x у координатах))
. Це довжина вектора від початку координат до точки, заданої координатами.Для двовимірної точки
(x, y)
це еквівалентно обчисленню гіпотенузи прямокутного трикутника за допомогою теореми Піфагораsqrt(x*x + y*y)
.Змінено в версії 3.8: Додано підтримку n-вимірних точок. Раніше підтримувався лише двовимірний випадок.
Змінено в версії 3.10: Покращено точність алгоритму, щоб максимальна помилка була менше 1 ulp (одиниця на останньому місці). Як правило, результат майже завжди правильно округлюється з точністю до 1/2 ulp.
- math.prod(iterable, *, start=1)¶
Обчислити добуток усіх елементів у вхідному iterable. Типовим початковим значенням для продукту є «1».
Коли iterable порожній, поверніть початкове значення. Ця функція призначена спеціально для використання з числовими значеннями та може відхиляти нечислові типи.
Added in version 3.8.
- math.sumprod(p, q)¶
Return the sum of products of values from two iterables p and q.
Raises
ValueError
if the inputs do not have the same length.Приблизно еквівалентно:
sum(itertools.starmap(operator.mul, zip(p, q, strict=True)))
For float and mixed int/float inputs, the intermediate products and sums are computed with extended precision.
Added in version 3.12.
Кутове перетворення¶
- math.degrees(x)¶
Перетворіть кут x з радіан на градуси.
- math.radians(x)¶
Переведіть кут x із градусів у радіани.
Тригонометричні функції¶
- math.acos(x)¶
Повертає арккосинус x у радіанах. Результат між
0
іpi
.
- math.asin(x)¶
Повертає арксинус x у радіанах. Результат знаходиться між
-pi/2
іpi/2
.
- math.atan(x)¶
Повертає арктангенс x у радіанах. Результат знаходиться між
-pi/2
іpi/2
.
- 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.sin(x)¶
Повернути синус x радіан.
- math.tan(x)¶
Повертає тангенс x радіан.
Гіперболічні функції¶
Hyperbolic functions are analogs of trigonometric functions that are based on hyperbolas instead of circles.
- math.acosh(x)¶
Повертає арккосинус x.
- math.asinh(x)¶
Повертає гіперболічний арксинус x.
- math.atanh(x)¶
Повертає гіперболічний обернений тангенс x.
- math.cosh(x)¶
Повертає гіперболічний косинус x.
- math.sinh(x)¶
Повернути гіперболічний синус x.
- math.tanh(x)¶
Поверніть гіперболічний тангенс x.
Спеціальні функції¶
- math.erf(x)¶
Повертає функцію помилки у x.
The
erf()
function can be used to compute traditional statistical functions such as the cumulative standard normal distribution:def phi(x): 'Cumulative distribution function for the standard normal distribution' return (1.0 + erf(x / sqrt(2.0))) / 2.0
Added in version 3.2.
- math.erfc(x)¶
Повертає функцію додаткової помилки в x. Додаткова функція помилок визначається як
1.0 - erf(x)
. Він використовується для великих значень x, де віднімання від одиниці спричинило б втрату значущості.Added in version 3.2.
- math.gamma(x)¶
Повертає Гамма-функцію у x.
Added in version 3.2.
- math.lgamma(x)¶
Повертає натуральний логарифм абсолютного значення гамма-функції при x.
Added in version 3.2.
Константи¶
- math.pi¶
Математична константа π = 3,141592… з доступною точністю.
- math.e¶
Математична константа e = 2,718281… з доступною точністю.
- math.tau¶
Математична константа τ = 6,283185… з доступною точністю. Tau — постійна величина кола, що дорівнює 2π, відношенню довжини кола до його радіуса. Щоб дізнатися більше про Тау, перегляньте відео Ві Харт Пі (все ще) неправильне, і почніть святкувати День Тау, з’ївши вдвічі більше пирога!
Added in version 3.6.
- math.inf¶
Додатна нескінченність із плаваючою комою. (Для негативної нескінченності використовуйте
-math.inf
.) Еквівалент виведенняfloat('inf')
.Added in version 3.5.
- math.nan¶
A floating-point «not a number» (NaN) value. Equivalent to the output of
float('nan')
. Due to the requirements of the IEEE-754 standard,math.nan
andfloat('nan')
are not considered to equal to any other numeric value, including themselves. To check whether a number is a NaN, use theisnan()
function to test for NaNs instead ofis
or==
. Example:>>> import math >>> math.nan == math.nan False >>> float('nan') == float('nan') False >>> math.isnan(math.nan) True >>> math.isnan(float('nan')) True
Added in version 3.5.
Змінено в версії 3.11: It is now always available.
Деталі реалізації CPython: Модуль math
складається здебільшого з тонких обгорток навколо функцій математичної бібліотеки платформи C. Поведінка у виняткових випадках відповідає додатку F стандарту C99, де це необхідно. Поточна реалізація викличе ValueError
для недійсних операцій, таких як sqrt(-1.0)
або log(0.0)
(де C99 Додаток F рекомендує сигналізувати про недійсну операцію або ділення на нуль), і OverflowError
для результатів, які переповнюються (наприклад, exp(1000.0)
). NaN не буде повернено жодною з наведених вище функцій, якщо один або більше вхідних аргументів не були NaN; у цьому випадку більшість функцій повертатиме NaN, але (знову ж таки відповідно до Додатку F C99) є деякі винятки з цього правила, наприклад pow(float('nan'), 0.0)
або hypot(float ('nan'), float('inf'))
.
Зауважте, що Python не робить жодних зусиль, щоб відрізнити сигнальні NaN від тихих NaN, і поведінка для сигнальних NaN залишається невизначеною. Типовою поведінкою є ставлення до всіх NaN так, ніби вони тихі.
Дивись також
- Модуль
cmath
Версії комплексних чисел багатьох із цих функцій.