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





