Рубрики
Без рубрики

Математический модуль Python [Ultimate Guide]

Узнайте необходимые функции из математического модуля Python, как использовать каждого оператора, общие научные константы, такие как PI, а также тригонометрические функции.

Автор оригинала: Adam Murphy.

Python’s Математический модуль Предоставляет вам некоторые из самых популярных математических функций, которые вы можете использовать. В этой статье я возьму вас через самые распространенные. Вы также можете посмотреть следующее учебное видео, в котором я проверю вас через статью:

Математика Модуль является частью стандартной библиотеки Python, и она всегда доступна с каждым Установка Python Отказ Тем не менее, вы должны импортировать его, прежде чем вы сможете начать использовать функции, которые он содержит.

import math

Теперь каждая функция в Математика Библиотека доступна по телефону math.function_name () Отказ Если вы хотите импортировать определенные функции, используйте стандарт Из Math Import Function_Name синтаксис.

Python Math Ploe.

math.floor (x) Функция принимает один аргумент х – либо плавать или int – и возвращает наибольшее целое число, меньше или равно х Отказ

>>> math.floor(3.9845794)
3
>>> math.floor(9673.0001)
9673
>>> math.floor(12)
12

Наибольшие номера меньше или равно 3,9845794 и 9673 0001 и 9673 0001, составляют 3 и 9673 соответственно. С 12 – целое число, результат math.floor (12) это 12 сам.

>>> math.floor(-10.5)
-11

Пол -10,5 составляет -11. Иногда это может быть запутано, но помните, что -11 <-10 <-9 <… <-1 <0.

Если вы создаете пользовательский A Пользовательский класс Python , вы можете заставить их работать с math.floor () Определяя __floor __ () метод.

Попробуй сам: Запустите следующую интерактивную оболочку Python.

Упражнение : Можете ли вы выяснить вывод, прежде чем запустить его?

Python Math. Цероваться

math.cheil (x) Функция принимает один аргумент х – либо поплавок, либо int – и возвращает наименьшее целое число, больше или равно х Отказ

>>> math.ceil(3.9845794)
4
>>> math.ceil(9673.0001)
9674
>>> math.ceil(12)
12

Наименьшие числа, превышающие или равно 3,9845794 и 9673.0001, составляют 4 и 9674 соответственно. С 12 – целое число, результат Math.Ceil (12) это 12 сам.

>>> math.ceil(-10.5)
-10

Потолок -10,5 –10. Ваш инстинкт, что 10 <10.5 верно, когда 10 является положительным числом. Но наоборот верно для отрицательных чисел, а так -10,5 <-10.

Если вы создаете пользовательский пользовательский класс Python, вы можете заставить их работать с Math.Ceil () Определяя __ceil __ () метод.

Математические операторы Python

Стандартные математические операторы не определены в математическом модуле, а скорее в синтаксисе самого Python.

Чтобы добавить два номера вместе, используйте + оператор.

>>> 5 + 10
15

Вычте два числа, используйте - оператор.

>>> 5 - 10
-5

Умножить два числа вместе, используйте * оператор.

>>> 5 * 10
50

Разделить два числа, используйте / оператор.

>>> 5 / 10
0.5

Обратите внимание, что это всегда Возвращает поплавок, даже если результат является целым числом.

>>> 10 / 5
2.0

Помните, что если вы возьмете два случайных числа и разделите их, очень маловероятно, что они прекрасно разделяют друг друга, поэтому логично, что все разделение с / Возвращает поплавок.

Чтобы поднять номер к определенной власти, используйте ** оператор.

>>> 5 ** 10
9765625

Это ‘ пять до степени десяти «И вы пишете это в том же порядке, вы бы написали это вручную.

Тогда есть некоторые другие операторы, используемые реже в математике, но невероятно полезны для информатики и кодирования: модуля и напольное разделение.

Оператор модуля возвращает остаток влево, когда один номер разделен на другой. Вы выполняете этот расчет с % Оператор в Python.

>>> 13 % 3
1

Вы должны прочитать вышеуказанную строку как « 13 модуль 3 «И результат 1. Это связано с тем, что 3 входит в 13 четыре раза (3 x) и общая разница между 13 и 12 является: 13 -.

Еще один способ подумать об этом, если вы пишете 13/3 в качестве сложной фракции, вы получаете 4 + 1/3. Глядя на фракцию, оставленную над – 1/3 – возьмите числитель (верхняя часть), чтобы получить конечный результат: 1.

Если вы делаете многочисленные расчеты «Modulo N», Установить возможных результатов варьируется от 0 до и в том числе N-1 Отказ Таким образом, для 3 диапазон возможных результатов составляет 0, 1 и 2.

Вот еще несколько примеров:

>>> 14 % 3
2
>>> 15 % 3
0
>>> 16 % 3
1

Вы можете увидеть, что 15% 3 0. Этот результат имеет дело для всех кратных 3.

Один невероятный полезный способ использовать оператор модуля в для петли, если вы хотите сделать что-то каждую итерацию.

for i in range(10):
    if i % 4 == 0:
        print('Divisible by 4!!!')
    else:
        print('Not divisible by 4 :(')
Divisible by 4!!!
Not divisible by 4 :(
Not divisible by 4 :(
Not divisible by 4 :(
Divisible by 4!!!
Not divisible by 4 :(
Not divisible by 4 :(
Not divisible by 4 :(
Divisible by 4!!!
Not divisible by 4 :(

Здесь я использовал оператор модуля для печати Добримую на 4 !!! каждый раз Я был делится на 4 – то есть, когда Я% 4 – и распечатать Не делится на 4:( во всех остальных случаях.

Окончательный встроенный оператор связан с модулем. Он выполняет разделение пола и написано как // Отказ Как предполагает имя, разделение пола совпадает с обычным делением, но всегда раунд результат до ближайшего целого числа.

Если вы пишете 13/3 Как сложная фракция, вы получаете 4 + 1/3 Отказ Дивизия пола возвращает целую номерную часть этой фракции, 4 в таком случае.

>>> 13 // 3
4
>>> 13 / 3 
4.333333333333333

Здесь я рассчитал «Тринадцать этаж три» И это возвращает 4. Результат Тринадцать делится на три ‘ это 4.3333, и если вы обретете это, вы получаете 4.

Еще один способ думать об этом, если вы пишете 13/3 Как сложная фракция, вы получаете 4 + 1/3 Отказ Дивизия пола возвращает целую номерную часть этой фракции, 4 в таком случае.

Вот еще несколько примеров:

>>> 14 // 3
4
>>> 15 // 3
5
>>> 16 // 3
5

Обратите внимание, что все вышеупомянутые примеры int int inter, разделенные на Ints. В каждом случае Python возвращает int. Но если один из чисел – это поплавок, Python возвращает поплавок.

>>> 14.0 // 3
4.0
>>> 14 // 3.0
4.0

Этот результат отличается от обычного разделения / который всегда возвращает поплавок.

Вы можете выполнить разделение пола на любые два номера, но вы можете удивительно получить результаты, если вы добавляете десятичные места.

# No difference to normal
>>> 14.999 // 3
4.0
# Returns 3.0, not 4.0!
>>> 14 // 3.999
3.0
# Now we see why
>>> 14 / 3.999
3.500875218804701

Когда вы запустите 14//3.999 результат это 3.0 потому что 14/3.999 это 3.508 ... и пол 3.508 ... это 3 Отказ

Полное разделение для отрицательных чисел работает так же.

>>> -14 / 3
-4.666666666666667
>>> -14 // 3
-5

Напомним, что полное разделение занимает ниже номер и что -5 <-4 Отказ Таким образом, результат разделения пола для отрицательных чисел не совпадает с добавлением минусных знаков к результату отдела пола для положительных чисел.

Попробуй сам: Запустите следующую интерактивную оболочку Python.

Упражнение : Какая линия не производит выходное целое число 42?

Ошибка домена математики Python

Вы можете столкнуться с специальными ValueError При работе с математическим модулем Python.

ValueError: math domain error

Python поднимает эту ошибку, когда вы пытаетесь сделать то, что не математически возможно или математически определяется.

import numpy as np
import matplotlib.pyplot as plt

# Plotting y = log(x)
fig, ax = plt.subplots()
ax.set(xlim=(-5, 20), ylim=(-4, 4), title='log(x)', ylabel='y', xlabel='x')
x = np.linspace(-10, 20, num=1000)
y = np.log(x)

plt.plot(x, y)

Это график log (x) Отказ Не волнуйтесь, если вы не понимаете код, что важнее, является следующим точком. Вы можете видеть, что журнал (X) имеет тенденцию к отрицательной бесконечности, когда X имеет тенденцию к 0. Таким образом, математически бессмысленно рассчитать журнал отрицательного числа. Если вы попытаетесь сделать это, Python поднимает ошибку математической домена.

>>> math.log(-10)
Traceback (most recent call last):
  File "", line 1, in 
ValueError: math domain error

Python Math Round

Округление сложнее, чем вы могли ожидать. Неправильно округлые поплавки приводят к катастрофическим последствиям. Ванкувер фондовая биржа использовал чрезвычайно упрощенный алгоритм округления при торговле акциями. Менее чем через два года алгоритм привел к цене фондовой биржи половина из того, что это должно было быть!

раунд () Функция не является частью математического модуля, а скорее встроенная функция, которую вы можете вообще доступ.

Это принимает два аргумента:

round(number[, ndigits])

Номер это int или float, а ndigits Является ли точность округления, которую вы хотите после десятичная точка. Квадратные скобки вокруг ndigits Узнайте, что это необязательный аргумент. Если вы опускаете ndigits , Python Rounds Номер к ближайшему целым числу.

# Closest integer
>>> round(10.237)
10
# One decimal place
>>> round(10.237, 1)
10.2
# Two decimal places
>>> round(10.237, 2)
10.24

Здесь вы можете увидеть это раунд () работает как вы ожидаете.

Во-первых, я хочу раунд 10,237 до целого числа. Итак, давайте посмотрим на первое значение после десятичного места и раунд вниз, если он меньше 5 и выше, если он превышает 5. Первое значение 2, и поэтому вы раудителя, чтобы получить 10. Для следующего примера, раунд 10,237 до одного десятичного времени. Посмотрите на второе десятичное десятичное место – 3 – и настолько вокруг его, чтобы получить 10,2. Наконец, раунд 10,237 до двух десятичных знаков, глядя на третье десятичное десятичное место – 7 – и округление, чтобы получить 10,24.

Этот алгоритм работает как ожидалось; Тем не менее, это не так просто. Давайте посмотрим на округление 1,5 и 2,5.

>>> round(1.5)
2

Это раунды до 2, как и ожидалось.

>>> round(2.5)
2

Но это также раунды до 2! Что происходит?

раунд () Функция применяет тип округления, называемого «округлой половиной до даже». Это означает, что в случае галстука, Python раунды до ближайшего четного числа.

Математическая логика опирается, объясняется здесь , но, короче говоря, причина, по которой Python делает это, чтобы сохранить среднее значение чисел. Если все связи округляются (как нас преподают в школе), то если вы округлите Коллекция Из чисел среднее количество закругленных чисел будет больше, чем среднее значение фактической коллекции.

Python предполагает, что около половины будет нечетным для случайной коллекции чисел, а половина будет даже. На практике это верно в большинстве случаев. Тем не менее, есть больше Математически строгие методы Вы можете использовать в экстремальных обстоятельствах.

Обратите внимание, что арифметика с плавающей точкой имеет некоторые Присущие проблемы это не может быть решено. К счастью, это встроено во все Языки программирования , в основном потому, что компьютеры представляют Поплавки как двоичные номера Отказ Некоторые номера, которые имеют конечные представления с плавающей точкой – такие как 0,1 – имеют бесконечный бинарный Представления – 0,0001100110011 … – и наоборот. Таким образом, раунд () Функция не идеальна.

# Expected 2.68 but got 2.67
>>> round(2.675, 2)
2.67

Из того, что я сказал выше, этот пример должен вернуться 2,68, как это четное число. Однако он возвращает 2,67. Этот результат не ошибка и является известное свойство функции. Для подавляющего большинства случаев раунд () Работает, как я описал выше, но вы должны знать, что это не идеально. Если вы хотите что-то более точное, используйте Десятичный модуль Отказ

Python Math Pi.

Математический модуль включает некоторые математические константы, один из которых является π (PI).

>>> math.pi
3.141592653589793

Это соотношение окружности окружности до его диаметра и составляет 3,141592653589793-15 десятичных знаков. Если вы собираетесь использовать эту константу много, я рекомендую импортировать его отдельно, чтобы сохранить вы набрать математика Каждый раз, когда вы хотите использовать его.

>>> from math import pi
>>> pi
3.141592653589793

Python Math SQRT.

Чтобы рассчитать квадратный корень числа, используйте math.sqrt (n) функция.

>>> math.sqrt(2)
1.4142135623730951
>>> math.sqrt(16)
4.0

Обратите внимание, что это всегда возвращает поплавок. Даже если вы проходите INT и Python, могут выразить результат в качестве Int, он всегда возвращает поплавок. Эта функциональность аналогична оператору разделения и делает логический смысл; Подавляющее большинство раз вы рассчитываете квадратный корень, он не вернет целое число.

Как на Python 3.8, есть также функция math.isqrt (n) который возвращает целочисленный квадратный корень для некоторого целого числа N Отказ Этот результат вы получаете, так же, как применение math.sqrt (n) а потом math.floor () к результату.

# Only works with Python 3.8
>>> math.isqrt(2)
1
>>> math.isqrt(16)
4

Если вы проходите цифры, которые имеют точные квадратные корни, вы получаете аналогичный результат на math.sqrt () , но результат всегда целое число.

>>> math.isqrt(16.0)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'float' object cannot be interpreted as an integer

Вы не можете пройти поплавок.

>>> math.isqrt(17)
4
>>> math.floor(math.sqrt(17))
4

Функция math.isqrt (n) такой же, как math.floor (math.sqrt (n)) Если N целое число,

Python Math Abs.

ABS () Функция – это встроенная функция, которая возвращает абсолютное значение номера. Функция принимает целые числа, поплавки и комплексные числа в качестве ввода.

Если вы пройдете ABS () целое число или плавание, N , он возвращает неотрицательное значение N и сохраняет его тип. Другими словами, если вы проходите целое число, ABS () Возвращает целое число, и если вы проходите поплавок, он возвращает поплавок.

# Int returns int
>>> abs(20)
20
# Float returns float
>>> abs(20.0)
20.0
>>> abs(-20.0)
20.0

Первый пример возвращает INT, второй возвращает поплавок, а окончательный пример возвращает поплавок и демонстрирует, что ABS () всегда возвращает положительное число.

Комплексные числа состоят из двух частей и могут быть написаны как A + BJ где А и B являются либо int, либо плавают. Абсолютное значение A + BJ определяется математически, как Math.sqrt (A ** 2 + B ** 2) Отказ Таким образом, результат всегда положительный и всегда поплавок (поскольку приема квадратного корня всегда возвращает поплавок).

>>> abs(3 + 4j)
5.0
>>> math.sqrt(3**2 + 4**2)
5.0

Здесь вы можете увидеть это ABS () всегда возвращает поплавок и что результат ABS (A. + Bj) такой же, как Math.sqrt (A ** 2 + B ** 2) Отказ

Математика Python Random

Для генерации случайных чисел необходимо использовать случайный модуль Python, а не математический модуль. Эта ссылка берет вас в статью, которую я написал все об этом.

Математические градусы Python

Важно, чтобы вы могли быстро переключаться между градусами и радианами, особенно если вы работаете с тригонометрическими функциями.

Допустим, у вас есть угол R который в радианах, и вы хотите преобразовать его в градусы. Просто позвоните math.degrees (r) Отказ

Давайте посмотрим на несколько распространенных примеров.

# You need to use pi a lot, so let's import it
>>> from math import pi
>>> math.degrees(pi)
180.0
>>> math.degrees(pi/4)
45.0
>>> math.degrees(2*pi)
360.0

Во-первых, я импортировал Пи Так что я мог легко использовать его во всех функциях. Затем я рассчитал некоторые распространенные преобразования степени до радианов. Обратите внимание, что math.degrees () всегда возвращает поплавок. Этот результат ожидается в качестве подавляющего большинства времени, результат преобразования не является целым числом.

Обратите внимание, что, как всегда в случае арифметики с плавающей точкой, эта функция не идеальна.

>>> math.degrees(pi/3)
59.99999999999999

Это должно вернуть 60,0. Но обратите внимание, что с 0,999 … повторяющийся равен 1 , это не отрицательно не повлияет на ваши результаты.

Python математические радианы

Допустим, у вас есть угол D в градусах, и вы хотите преобразовать его в радианы. Просто позвоните math.radians (d) Отказ

Давайте посмотрим на несколько распространенных примеров.

>>> from math import pi
>>> math.radians(180)
3.141592653589793
>>> math.radians(180) == pi
True
>>> math.radians(45)
0.7853981633974483
>>> math.radians(45) == pi/4
True

Нижняя сторона с преобразованием градусов в радианы заключается в том, что для людей гораздо сложнее читать. Итак, я добавил в операторы равенства потом, чтобы показать вам, что на 180 градусов, при преобразовании в радианы, представляют собой π и аналогично для 45 градусов и π/4.

Эта функция особенно имеет решающее значение, если вы хотите использовать любой из тригонометрических функций, поскольку они предполагают, что вы передаете угол в радианах.

Python Math Sin.

Чтобы рассчитать синус какого-либо угла R , позвоните math.sin (r) Отказ Обратите внимание, что функция предполагает, что R в радианах.

>>> math.sin(0)
0
# Assumes angle is in radians!
>>> math.sin(90)
0.8939966636005579
# Convert to radians
>>> math.sin(math.radians(90))
1.0
# Enter as radians
>>> math.sin(pi/2)
1.0

Из математики средней школы мы знаем, что грех (90) .0 Если 90 находится в градусах. Но здесь я продемонстрирую, что вы не получаете 1.0, если вы вводите 90. Вместо этого ввод PI/2 и вы получаете ожидаемый результат. В качестве альтернативы вы можете использовать math.radians () Функция для преобразования любого угла в градусах до радианов.

Давайте посмотрим на результат для math.sin (pi) Отказ

>>> math.sin(pi)
1.2246467991473532e-16

Опять же, из математики старшей школы, вы ожидаете, что результат будет 0,0, но, как часто бывает случай с арифметикой с плавающей точкой, это не так. Хотя мы знаем, что синус 0 и π – это одинаковое значение, к сожалению, он не отражается на выходе. Этот результат заключается в том, что π – это бесконечный десятичный, который не может быть полностью представлен в компьютере. Однако число настолько мала, что не должно делать огромное значение для ваших расчетов. Но если вам нужно это равно 0, есть Некоторые методы Вы можете попробовать, но я не буду обсуждать их в этой статье для краткости.

Наконец, обратите внимание, что все возвращаемые значения плавают, даже если Python может представлять их как целые числа.

Python Math COS.

Для расчета косина какого-либо угла R , позвоните math.cos (r) Отказ Обратите внимание, что функция предполагает, что R в радианах.

>>> math.cos(0)
1.0
# Assumes angle is in radians
>>> math.cos(180)
-0.5984600690578581
# Convert to radians
>>> math.cos(math.radians(180))
-1.0
# Enter angle in radians
>>> math.cos(pi)
-1.0

Из математики средней школы мы знаем, что COS (180) = -1.0 Если 180 находится в градусах. Однако тригонометрические функции ожидают, что угла находиться в радианах. Итак, вы должны либо преобразовать его в Radians, используя Math.radians (180) функция или ввести фактическое значение радианов, которое является PI в таком случае. Оба метода дают вам ответ -1.0, как ожидалось.

Давайте посмотрим на результат math.cos (pi/2) Отказ

>>> math.cos(pi/2)
6.123233995736766e-17

Результат math.cos (pi/2) Должно быть 0,0, но вместо этого это крошечное число, близкое к 0. Это связано с тем, что π – бесконечный десятичный, который не может быть полностью представлен в компьютере. Эта функциональность должна быть в порядке для большинства случаев. Если вы должны быть равны 0, посмотрите это Переполнение стека Ответ Для альтернативных методов вы можете использовать.

Python Math Tan.

Для расчета касательства какого-либо угла R , позвоните math.tan (r) Отказ Обратите внимание, что функция предполагает, что R в радианах.

>>> math.tan(0)
0.0
>>> math.tan(pi/4)
0.9999999999999999
>>> math.tan(pi/2)
1.633123935319537e+16

Результаты для math.tan () похожи на эти для math.sin () и math.cos () Отказ Вы получаете результаты, которые вы ожидаете за 0.0, но после начнете в том числе PI Ничто не именно то, что вы ожидаете. Например, Tan (PI/4) 1, но Python возвращает 0,999 ... Отказ Это может не выглядеть одинаково, но, математически, они равный ). Результат Tan (PI/2) должна быть положительная бесконечность, но вместо этого Python возвращает огромный номер. Этот результат приятно, так как он позволяет выполнять расчеты с math.tan () Не бросая нагрузки на ошибки все время.

Вывод

Там у вас есть; Теперь вы знаете, как использовать наиболее распространенные функции в встроенном Python Математика Модуль!

Вы можете взять пол или потолок любого числа, используя math.floor () и Math.Ceil () Отказ Вы знаете все основные операторы, какие типы они возвращаются, и когда. Вы видели, что Python поднимает Ошибка математического домена Если вы попытаетесь сделать что-то математически невозможно. И вы можете использовать некоторые важные функции и константы для научных вычислений, таких как Math.pi , преобразование углов из градусов до радианов и используя наиболее распространенные тригонометрические функции – грех, COS и TAN.

Есть еще несколько функций, которые у меня не было возможности покрыть эту статью, такую как обратные и гиперболические тригонометрические функции. С вашими знаниями вы легко поймете и используете их, если вы быстро читаете документы.

Куда пойти отсюда?

Вы хотите, чтобы вы могли быть программистом на полный рабочий день, но не знаете, как начать?

Ознакомьтесь с чистым упаковочным величином, где Chris – Creator of Finxter.com – учит вас стать фрилансером Python в 60 дней или вернуть деньги!

https://tinyurl.com/become-a-python-freelancer

Неважно, если вы начинаете питон или Python Pro. Если вы не делаете шесть фигур/год с Python прямо сейчас, вы узнаете что-то из этого вебинара.

Это доказаны, методы NO-BS, которые получают ваши результаты быстро.

Этот вебинар не будет онлайн навсегда. Нажмите на ссылку ниже, прежде чем сиденья наполнится и научитесь стать фрилансером Python, гарантированно.

https://tinyurl.com/become-a-python-freelancer

Expert Writer & Content Creator – наука о науке и машине. – Я помогаю образовательным компаниям создавать привлечение в блоге и видеоконтентах преподавания данных науки для начинающих. В отличие от моих конкурентов, я узнаю новые концепции каждый день и так понимаю, что это нравится быть студентом. Мои статьи легко понять, эффективны и приятно читать. Мои видео достойны, участвуют и подробно. – Работать со мной, пожалуйста, обратитесь к Upwork https://tinyurl.com/hire-adam-murphy