Модуль Math в Python
Python библиотека math
содержит наиболее применяемые математические функции и константы. Все вычисления происходят на множестве вещественных чисел.
Если вам нужен соответствующий аппарат для комплексного исчисления, модуль math
не подойдёт. Используйте вместо него cmath
. Там вы найдёте комплексные версии большинства популярных math
-функций.
Синтаксис и подключение
Чтобы подключить модуль, необходимо в начале программы прописать следующую инструкцию:
import math
Теперь с помощью точечной нотации можно обращаться к константам и вызывать функции этой библиотеки. Например, так:
math.log()
Константы модуля Math
math.pi Представление математической константы π = 3.141592…. "Пи" — это отношение длины окружности к её диаметру.
print(math.pi)
> 3.141592653589793
math.e
Число Эйлера или просто e
. Иррациональное число, которое приблизительно равно 2,71828.
print(math.e)
> 2.718281828459045
math.tau Число τ — это отношение длины окружности к её радиусу. Т.е
import math
> print(math.tau)
print(math.tau == 2 * math.pi)
> True
math.inf Положительная бесконечность.
print(math.inf)
> inf
Для оперирования отрицательной бесконечно большой величиной, используйте -math.inf
Константа math.inf
эквивалента выражению float("inf")
.
math.nan
NaN
означает — "не число".
print(math.nan)
> nan
Аналогичная запись: float("nan")
.
Список функций
Теоретико-числовые функции и функции представления
math.ceil() Функция округляет аргумент до большего целого числа.
print(math.ceil(3.0001))
> 4
math.comb(n, k)
Число сочетаний из n
по k
. Показывает сколькими способами можно выбрать k
объектов из набора, где находится n
объектов. Формула:
Решим задачу: На столе лежат шесть рубинов. Сколько существует способов выбрать два из них?
print(math.comb(6,2))
> 15
💭 Можете подставить числа в формулу, и самостоятельно проверить правильность решения.
math.copysign() Функция принимает два аргумента. Возвращает первый аргумент, но со знаком второго.
print(math.copysign(-6, 2))
> 6.0
math.fabs() Функция возвращает абсолютное значение аргумента:
print(math.fabs(-42))
> 42.0
math.factorial() Вычисление факториала. Входящее значение должно быть целочисленным и неотрицательным.
print(math.factorial(5))
> 120
math.floor()
Антагонист функции ceil()
. Округляет число до ближайшего целого, но в меньшую сторону.
print(math.floor(3.99))
> 3
math.fmod(a, b)
Считает остаток от деления a
на b
. Является аналогом оператора "%
" с точностью до типа возвращаемого значения.
print(math.fmod(75, 4))
> 3.0
math.frexp(num) Возвращает кортеж из мантиссы и экспоненты аргумента. Формула:
, где M
— мантисса, E
— экспонента.
print(math.frexp(10))
> (0.625, 4)
# проверим
print(pow(2, 4) * 0.625)
> 10.0
math.fsum() Вычисляет сумму элементов итерируемого объекта. Например, вот так она работает для списка:
summable_list = [1, 2, 3, 4, 5]
print(math.fsum(summable_list))
> 15.0
math.gcd(a, b)
Возвращает наибольший общий делитель a
и b
. НОД — это самое большое число, на которое a
и b
делятся без остатка.
a = 5
b = 15
print(math.gcd(a, b))
> 5
math.isclose(x, y)
Функция возвращает True
, если значения чисел x
и y
близки друг к другу, и False
в ином случае. Помимо пары чисел принимает ещё два необязательных именованных аргумента:
rel_tol
— максимально допустимая разница между числами в процентах;abs_tol
— минимально допустимая разница.
x = 10
y = 11
print(math.isclose(x, y))
> False
print(math.isclose(x, y, rel_tol=1))
> True
math.isfinite()
Проверяет, является ли аргумент NaN
, False
или же бесконечностью. True
, если не является, False
— в противном случае.
norm = 3
inf = float('inf')
print(math.isfinite(norm))
> True
print(math.isfinite(inf))
> False
math.isinf()
True
, если аргумент — положительная/отрицательная бесконечность. False
— в любом другом случае.
not_inf = 42
inf = math.inf
print(math.isinf(not_inf))
> False
print(math.isinf(inf))
> True
math.isnan()
Возврат True
, если аргумент — не число (nan
). Иначе — False
.
not_nan = 0
nan = math.nan
print(math.isnan(not_nan))
> False
print(math.isnan(nan))
> True
math.isqrt() Возвращает целочисленный квадратный корень аргумента, округлённый вниз.
print(math.isqrt(44))
> 6
math.ldexp(x, i) Функция возвращает значение по формуле:
возвращаемое значение = x * (2 ** i)
print(math.ldexp(3, 2))
> 12.0
math.modf()
Результат работы modf()
— это кортеж из двух значений:
- Дробная часть аргумента;
- Целая часть аргумента;
print(math.modf(3.14))
> (0.14000000000000012, 3.0)
math.perm(n, k)
Возвращает число размещений из n
по k
. Формула:
Задача: Посчитать количество вариантов распределения трёх билетов на концерт Стаса Михайлова для пяти фанатов.
print(math.perm(5, 3))
> 60
Целых 60 способов! Главное — не запутаться в них, и не пропустить концерт любимого исполнителя!
math.prod() Принимает итерируемый объект. Возвращает произведение элементов.
multiple_list = [2, 3, 4]
print(math.prod(multiple_list))
> 24
math.remainder(m, n) Возвращает результат по формуле:
Результат = m – x * n,
где x
— ближайшее целое к выражению m/n
число.
print(math.remainder(55, 6))
> 1.0
print(math.remainder(4, 6))
> -2.0
math.trunc()
trunc()
вернёт вам целую часть переданного в неё аргумента.
print(math.trunc(4.6))
> 4
Степенные и логарифмические функции
math.exp(x)
Возвращает e
в степени x
. Более точный аналог pow(math.e, x)
.
print(math.exp(3))
> 20.085536923187668
math.expm1(x)
Вычисляет значение выражения exp(x) - 1
и возвращает результат.
print(math.expm1(3))
> 19.085536923187668
print(math.expm1(3) == (math.exp(3) - 1))
> True
math.log() Функция работает, как с одним, так и с двумя параметрами.
1 аргумент: вернёт значение натурального логарифма (основание e
):
print(math.log(math.e))
> 1.0
2 аргумента: вернёт значение логарифма по основанию, заданному во втором аргументе:
print(math.log(16, 4))
> 2.0
☝️ Помните, это читается, как простой вопрос: "в какую степень нужно возвести число 4
, чтобы получить 16
". Ответ, очевидно, 2
. Функция log()
с нами согласна.
math.log1p()
Это натуральный логарифм от аргумента (1 + x)
:
print(math.log(5) == math.log1p(4))
> True
math.log2()
Логарифм по основанию 2
. Работает точнее, чем math.log(x, 2)
.
math.log10()
Логарифм по основанию 10
. Работает точнее, чем math.log(x, 10)
.
math.pow(a, b)
Функция выполняет возведение числа a
в степень b
и возвращает затем вещественный результат.
print(math.pow(2,4))
> 16.0
math.sqrt() Возврат квадратного корня из аргумента
print(math.sqrt(16))
> 4.0
Тригонометрические функции
math.acos() Функция возвращает арккосинус в радианах:
print(math.acos(-1))
> 3.141592653589793
math.asin() Возврат арксинуса (угол в радианах):
# π/2
print(math.asin(1))
> 1.5707963267948966
math.atan() Арктангенс:
# π/4
print(math.atan(1))
> 0.7853981633974483
math.atan2(y, x)
Функция принимает на вход два аргумента и возвращает арктангенс y/x
. Значение будет в радианах. atan2()
учитывает четверть, в которой находится точка (x, y)
.
print(math.atan2(-12, 13))
> -0.7454194762741583
math.cos() Косинус угла, который следует указывать в радианах:
print(math.cos(math.pi))
> -1.0
math.dist(p, q)
Функция возвращает значение евклидова расстояния между точками p
и q
. У точек должны совпадать измерения. В прямоугольной системе координат dist(p, q)
эквивалентна следующей формуле:
# аналогично sqrt(8)
print(math.dist((0, 0), (2, 2)))
> 2.8284271247461903
math.hypot(x, y)
Возвращает длину вектора от начала координат до точки, заданной координатами. Иначе — функция вычисляет гипотенузу треугольника c катетами x
и y
.
print(math.hypot(3, 4))
> 5.0
math.sin() Функция вернёт синус угла. Угол следует задавать в радианах:
print(math.sin(0))
> 0.0
math.tan() Тангенс угла. Аргумент указываем в радианах.
print(math.tan(math.radians(315)))
> -1.0000000000000004
Угловые преобразования
math.degrees() Функция переводит радианное значение угла в градусы.
print(math.degrees(math.pi))
> 180.0
math.radians() Наоборот: из градусов — в радианы.
# функция отрабатывает прямо, как по табличке синусов =)
print(math.radians(30))
> 0.5235987755982988
print(math.pi / 6)
> 0.5235987755982988
Гиперболические функции
Гиперболические функции являются аналогами тригонометрических и тесно с ними связаны. Но тригонометрические функции основаны на окружностях, а гиперболические, соответственно, на гиперболах.
Для Python все они принимают один аргумент — точку, в которой вычисляется значение функции.
math.acosh() Обратный гиперболический косинус:
print(math.acosh(1))
> 0.0
math.asinh() Обратный гиперболический синус:
print(math.asinh(0))
> 0.0
math.atanh() Обратный гиперболический тангенс:
print(math.atanh(0))
> 0.0
math.cosh() Гиперболический косинус:
print(math.cosh(1.2))
> 1.8106555673243747
math.sinh() Гиперболический синус:
print(math.sinh(2.5))
> 6.0502044810397875
math.tanh() Гиперболический тангенс:
print(math.tanh(6))
> 0.9999877116507956
Специальные функции
math.erf(x)
Возвращает в x
функцию ошибки Гаусса.
math.erfc(x)
Возвращает в x
комплементарную функцию ошибки.
math.gamma()
Возвращает значение гамма-функции в точке x
.
print(math.gamma(4))
> 6.0
math.lgamma()
Аналогично возвращается натуральный логарифм модуля значения гамма-функции в точке x
.
print(math.log(math.gamma(4)))
> 1.791759469228055
print(math.lgamma(4))
> 1.7917594692280554
-