Модуль 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() – это кортеж из двух значений:

  1. Дробная часть аргумента;
  2. Целая часть аргумента;
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
Нашу статью о возведении в степень в Python вы можете прочитать здесь.

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

-

😭
😕
😃
😍