Эта статья посвящена математическим функциям в Python. Для выполнения математических операций необходим модуль math
.
Что такое модуль?
В C и C++ есть заголовочные файлы, в которых хранятся функции, переменные классов и так далее. При включении заголовочных файлов в код появляется возможность не писать лишние строки и не использовать одинаковые функции по несколько раз. Аналогично в Python для этого есть модули, которые включают функции, классы, переменные и скомпилированный код. Модуль содержит группу связанных функций, классов и переменных.
Есть три типа модулей в Python:
- Модули, написанные на Python (
.py
). - Модули, написанные на
C
и загружаемые динамически (.dll
,.pyd
,.so
,.sl
и так далее). - Модули, написанные на
C
, но связанные с интерпретатором.import sys print(sys.builtin_module_names)
('_ast', '_bisect', '_codecs', '_codecs_cn', '_codecs_hk', '_codecs_iso2022', '_codecs_jp', '_codecs_kr', '_codecs_tw', '_collections', '_csv', '_datetime', '_functools', '_heapq', '_imp', '_io', '_json', '_locale', '_lsprof', '_md5', '_multibytecodec', '_opcode', '_operator', '_pickle', '_random', '_sha1', '_sha256', '_sha512', '_sre', '_stat', '_string', '_struct', '_symtable', '_thread', '_tracemalloc', '_warnings', '_weakref', '_winapi', 'array', 'atexit', 'audioop', 'binascii', 'builtins', 'cmath', 'errno', 'faulthandler', 'gc', 'itertools', 'marshal', 'math', 'mmap', 'msvcrt', 'nt', 'parser', 'signal', 'sys', 'time', 'winreg', 'xxsubtype', 'zipimport', 'zlib').
Для получения списка модулей, написанных на C
, но связанных с Python, можно использовать следующий код.
Как видно из списка выше, модуль math
написан на C
, но связан с интерпретатором. Он содержит математические функции и переменные, о которых дальше и пойдет речь.
Функции представления чисел
ceil() и floor() — целая часть числа
Сeil()
и floor()
— функции общего назначения. Функция ceil округляет число до ближайшего целого в большую сторону. Функция floor убирает цифры десятичных знаков. Обе принимают десятичное число в качестве аргумента и возвращают целое число.
Пример:
# Импорт модуля math
import math
# Дробный номер
number=8.10
# выводим целую часть числа с округлением к большему
print("Верхний предел 8.10 это:",math.ceil(number))
# выводим целую часть числа с округлением к меньшему
print("Нижний предел 8.10 это:",math.floor(number))
Вывод:
Верхний предел 8.10 это: 9
Нижний предел 8.10 это: 8
Функция fabs() — абсолютное значение
Функция fabs
используется для вычисления абсолютного значения числа. Если число содержит любой отрицательный знак (-
), то функция убирает его и возвращает положительное дробное число.
Пример:
# Импорт модуля math
import math
number = -8.10
# вывод абсолютного значения числа
print(math.fabs(number))
Вывод:
8.1
factorial() — функция факториала
Эта функция принимает положительное целое число и выводит его факториал.
Пример:
# Импорт модуля math
import math
number = 5
# вывод факториала числа
print("факториала числа", math.factorial(number))
Вывод:
факториала числа 120
Примечание: при попытке использовать отрицательное число, возвращается ошибка значения (Value Error
).
Пример:
# Импорт модуля math
import math
number = -5
# вывод факториала числа
print("факториала числа", math.factorial(number))
Вывод:
ValueError: factorial() not defined for negative values
Функция fmod() — остаток от деления
Функция fmod(x,y)
возвращает x % y
. Разница в том, что выражение x % y
работает только с целыми числами, а эту функцию можно использовать и для чисел с плавающей точкой.
Пример:
# Импорт модуля math
import math
print(math.fmod(5,2))
print(math.fmod(-5,2))
print(math.fmod(-5.2,2))
print(math.fmod(5.2,2))
Вывод:
1.0
-1.0
-1.2000000000000002
1.2000000000000002
Функция frexp()
Эта функция возвращает мантиссу и показатель степени в виде пары (m,n
) любого числа x
, решая следующее уравнение.
Пример:
# Импорт модуля math
import math
print(math.frexp(24.8))
Вывод:
(0.775, 5)
Функция fsum() — точная сумма float
Вычисляет точную сумму значений с плавающей точкой в итерируемом объекте и сумму списка или диапазона данных.
Пример:
# Импорт модуля math
import math
# сумма списка
numbers=[.1,.2,.3,.4,.5,.6,.7,.8,8.9]
print("сумма ", numbers, ":", math.fsum(numbers))
# сумма диапазона
print("сумма чисел от 1 до 10:", math.fsum(range(1,11)))
Вывод:
сумма [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 8.9] : 12.5
сумма чисел от 1 до 10: 55.0
Функции возведения в степень и логарифма
Функция exp()
Эта функция принимает один параметр в виде дробного числа и возвращает e^x
.
Пример:
# Импорт модуля math
import math
print("e в степени 5 ", math.exp(5))
print("e в степени 2.5", math.exp(2.5))
Вывод:
e в степени 5 148.4131591025766
e в степени 2.5 12.182493960703473
Функция expm1()
Эта функция работает так же, как и exp
, но возвращает exp(x)-1
. Здесь, expm1
значит exm-m-1
, то есть, exp-minus-1
.
Пример:
# Импорт модуля math
import math
print(math.exp(5)-1)
print(math.expm1(5))
Вывод:
147.4131591025766
147.4131591025766
Функция log() — логарифм числа
Функция log(x[,base])
находит логарифм числа x
по основанию e
(по умолчанию). base
— параметр опциональный. Если нужно вычислить логарифм с определенным основанием, его нужно указать.
Пример:
# Импорт модуля math
import math
# логарифм с основанием e
print(math.log(2))
# логарифм с указанным основанием (2)
print(math.log(64,2))
Вывод:
0.6931471805599453
6.0
Функция log1p()
Эта функция похожа на функцию логарифма, но добавляет 1
к x
. log1p
значит log-1-p
, то есть, log-1-plus
.
Пример:
# Импорт модуля math
import math
print(math.log1p(2))
Вывод:
1.0986122886681098
Функция log10()
Вычисляет логарифм по основанию 10.
Пример:
# Импорт модуля math
import math
print(math.log10(1000))
Вывод:
3.0
Функция pow() — степень числа
Используется для нахождение степени числа. Синтаксис функции pow(Base, Power)
. Она принимает два аргумента: основание и степень.
Пример:
# Импорт модуля math
import math
print(math.pow(5,4))
Вывод:
625.0
Функция sqrt() — квадратный корень числа
Эта функция используется для нахождения квадратного корня числа. Она принимает число в качестве аргумента и находит его квадратный корень.
Пример:
# Импорт модуля math
import math
print(math.sqrt(256))
Вывод:
16.0
Тригонометрические функции
В Python есть следующие тригонометрические функции.
Функция | Значение |
---|---|
sin | принимает радиан и возвращает его синус |
cos | принимает радиан и возвращает его косинус |
tan | принимает радиан и возвращает его тангенс |
asin | принимает один параметр и возвращает арксинус (обратный синус) |
acos | принимает один параметр и возвращает арккосинус (обратный косинус) |
atan | принимает один параметр и возвращает арктангенс (обратный тангенс) |
sinh | принимает один параметр и возвращает гиперболический синус |
cosh | принимает один параметр и возвращает гиперболический косинус |
tanh | принимает один параметр и возвращает гиперболический тангенс |
asinh | принимает один параметр и возвращает обратный гиперболический синус |
acosh | принимает один параметр и возвращает обратный гиперболический косинус |
atanh | принимает один параметр и возвращает обратный гиперболический тангенс |
Пример:
# Импорт модуля math
import math
# функция синусы
print("синус PI/2 :", math.sin(math.pi/2))
# функция косинуса
print("косинус 0 :", math.cos(0))
# функция тангенса
print("тангенс PI/4 :", math.tan(math.pi/4))
print()
# функция арксинуса
print("арксинус 0 :", math.acos(0))
# функция арккосинуса
print("арккосинус 1 :", math.acos(1))
# функция арктангенса
print("арктангенс 0.5 :", math.atan(0.5))
print()
# функция гиперболического синуса
print("гиперболический синус 1 :", math.sinh(1))
# функция гиперболического косинуса
print("гиперболический косинус 0 :", math.cos(0))
# функция гиперболического тангенса
print("гиперболический тангенс 1 :", math.tan(1))
print()
# функция обратного гиперболического синуса
print("обратный гиперболический синус 1 :", math.acosh(1))
# функция обратного гиперболического косинуса
print("обратный гиперболический косинус 1 :", math.acosh(1))
# функция обратного гиперболического тангенса
print("обратный гиперболический тангенс 0.5 :", math.atanh(0.5))
Вывод:
синус PI/2 : 1.0
косинус 0 : 1.0
тангенс PI/4 : 0.9999999999999999
арксинус 0 : 1.5707963267948966
арккосинус 1 : 0.0
арктангенс 0.5 : 0.4636476090008061
гиперболический синус 1 : 1.1752011936438014
гиперболический косинус 0 : 1.0
гиперболический тангенс 1 : 1.5574077246549023
обратный гиперболический синус 1 : 0.0
обратный гиперболический косинус 1 : 0.0
обратный гиперболический тангенс 0.5 : 0.5493061443340549
Функция преобразования углов
Эти функции преобразуют угол. В математике углы можно записывать двумя способами: угол и радиан. Есть две функции в Python, которые конвертируют градусы в радиан и обратно.
degrees()
: конвертирует радиан в градусы;radians()
: конвертирует градус в радианы;
Пример:
# Импорт модуля math
import math
print(math.degrees(1.57))
print(math.radians(90))
Вывод:
89.95437383553924
1.5707963267948966
Математические константы
В Python есть две математические константы: pi
и e
.
pi
: это математическая константа со значением3.1416..
e
: это математическая константа со значением2.7183..
Пример:
# Импорт модуля math
import math
# вывод значения PI
print("значение PI", math.pi)
# вывод значения e
print("значение e", math.e)
Вывод:
значение PI 3.141592653589793
значение e 2.718281828459045