Math — математические функции в Python

5464

Эта статья посвящена математическим функциям в Python. Для выполнения математических операций необходим модуль math.

Что такое модуль?

В C и C++ есть заголовочные файлы, в которых хранятся функции, переменные классов и так далее. При включении заголовочных файлов в код появляется возможность не писать лишние строки и не использовать одинаковые функции по несколько раз. Аналогично в Python для этого есть модули, которые включают функции, классы, переменные и скомпилированный код. Модуль содержит группу связанных функций, классов и переменных.

Есть три типа модулей в Python:

  1. Модули, написанные на Python (.py).
  2. Модули, написанные на C и загружаемые динамически (.dll, .pyd, .so, .sl и так далее).
  3. Модули, написанные на 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() — абсолютное значение

Python data course

Функция 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, решая следующее уравнение.

Функция frexp()

Пример:

# Импорт модуля 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.

  1. pi: это математическая константа со значением 3.1416..
  2. e: это математическая константа со значением 2.7183..

Пример:

# Импорт модуля math  
import math  

# вывод значения PI
print("значение PI", math.pi)

# вывод значения e
print("значение e", math.e)

Вывод:

значение PI 3.141592653589793
значение e 2.718281828459045

Учитесь программировать по книгам, подписывайте на телеграм каналы:

Книги Python разработчика RU / EN

Книги / Data Science / RU-EN

Тест на знание python

Какой будет результат выполнения этого кода?
Если выполнить код ниже, каков будет результат?
Что выведет этот код?
Какой будет результат выполнения этого кода?
Что выведет этот код?
Александр
Я создал этот блог в 2018 году, чтобы распространять полезные учебные материалы, документации и уроки на русском. На сайте опубликовано множество статей по основам python и библиотекам, уроков для начинающих и примеров написания программ. Пишу на популярные темы: веб-разработка, работа с базами данных, data sciense и другие...