Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Python
Code

Математические модули в Python: Math и Cmath

by
Difficulty:IntermediateLength:MediumLanguages:
This post is part of a series called Mathematical Modules in Python.
Mathematical Modules in Python: Random

Russian (Pусский) translation by Anna k.Ivanova (you can also view the original English article)

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

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

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

Арифметические функции

Эти функции выполняют различные арифметические операции, такие как вычисление пола, потолка или абсолютного значения числа с использованием функций floor(x), ceil(x) и fabs(x) соответственно. Функция ceil(x) вернет наименьшее целое число, которое больше или равно x. Аналогично, floor(x) возвращает наибольшее целое число, меньшее или равное x. Функция fabs(x) возвращает абсолютное значение x.

Вы также можете выполнять нетривиальные операции, такие как вычисление факториала числа с использованием factorial(x). Факториал является произведением целого числа и всех положительных целых чисел, меньших его. Он широко используется при работе с комбинациями и перестановками. Его также можно использовать для вычисления значения функций синуса и косинуса.

Еще одна полезная функция в модуле math - gcd(x, y), которая дает вам наибольший общий делитель (GCD) двух чисел x и y. Когда x и y оба не равны нулю, эта функция возвращает наибольшее положительное целое число, которое делит как x, так и y. Вы можете косвенно использовать его для вычисления наименьшего общего кратного двух чисел, используя следующую формулу:

Вот несколько арифметических функций, которые предлагает Python:

Тригонометрические функции

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

Вы можете рассчитать sin(x), cos(x) и tan(x) непосредственно с помощью этого модуля. Однако нет прямой формулы для вычисления cosec(x), sec(x) и cot(x), но их значение равно обратному значению, возвращаемому sin(x), cos(x) и tan(x) соответственно.

Вместо того, чтобы вычислять значение тригонометрических функций под определенным углом, вы также можете сделать обратный и рассчитать угол, в котором они имеют заданное значение, используя asin(x), acos(x) и atan(x).

Вы знакомы с теоремой Пифагора? В нем говорится, что квадрат гипотенузы (сторона, противоположная прямому углу) равна сумме квадратов двух других сторон. Гипотенуза также является самой большой стороной прямоугольного треугольника. Математический модуль обеспечивает функцию hypot(a, b) для вычисления длины гипотенузы.

Гиперболические функции

Гиперболические функции являются аналогами тригонометрических функций, которые основаны на гиперболе вместо круга. В тригонометрии точки (cos b, sin b) представляют точки единичного круга. В случае гиперболических функций точки (cosh b, sinh b) представляют точки, которые образуют правую половину равносторонней гиперболы.

Точно так же, как тригонометрические функции, вы можете непосредственно вычислить значение sinh(x), cosh(x) и tanh(x). Остальные значения могут быть рассчитаны с использованием различных отношений между этими тремя значениями. Существуют также другие функции asinh(x), acosh(x) и atanh(x), которые могут быть использованы для вычисления обратных соответствующих гиперболических значений.

Так как math.pi равно примерно 3.141592653589793, когда мы использовали asinh() для значения, возвращаемого sinh(math.pi), мы получили нашу π обратно.

Степень и логарифмические функции

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

Вы можете использовать log(x, [base]) для вычисления log заданного числа x для данной базы. Если вы оставите необязательный аргумент базы, log x будет вычисляться до базы e. Здесь e - математическая константа, значение которой равно 2.71828182 .... и к ней можно получить доступ с использованием math.e. Кстати, Python также позволяет вам получить доступ к другой константе π, используя math.pi.

Если вы хотите рассчитать значения логарифма base-2 или base-10, использование log2(x) и log10(x) вернет более точные результаты, чем log(x, 2) и log(x, 10). Имейте в виду, что функция log3(x) отсутствует, поэтому вам нужно будет использовать log(x, 3) для вычисления значений логарифма базы-3. То же самое касается всех других баз.

Если значение, логарифм которого вы вычисляете, очень близко к 1, вы можете использовать log1p(x). 1p в log1p означает 1 плюс. Поэтому log1p(x) вычисляет log(1 + x), где x близок к нулю. Однако результаты более точны с log1p(x).

Вы также можете рассчитать значение числа x, возведённого в степень y, используя pow(x, y). Перед вычислением степени эта функция преобразует оба аргумента в тип float. Если вы хотите, чтобы конечный результат был вычислен в точных целых степенях, вы должны использовать встроенную функцию pow() или оператор **.

Вы также можете вычислить квадратный корень любого заданного числа x, используя sqrt(x), но то же самое можно также сделать, используя pow(x, 0.5).

Сложные числа

Сложные числа хранятся внутри с использованием прямоугольных или декартовых координат. Комплексное число z будет представлено в декартовых координатах как z = x + iy, где x представляет действительную часть, а y представляет собой мнимую часть. Другим способом их представления является использование полярных координат.

В этом случае комплексное число z будет определяться комбинацией модуля r и фазового угла phi. Модуль r является расстоянием между комплексным числом z и началом. Угол phi - угол против часовой стрелки, измеренный в радианах от положительной оси x до отрезка линии, соединяющего z и начало координат.

При работе с комплексными числами модуль cmath может оказать большую помощь. Модуль комплексного числа может быть рассчитан с использованием встроенной функции abs(), и его фаза может быть рассчитана с использованием функции phase(z), доступной в модуле cmath. Вы можете преобразовать комплексное число в прямоугольной форме в полярную форму, используя polar(z), которая вернет пару (r, phi), где r - abs(z), а phi - phase(z).

Аналогично, вы можете преобразовать комплексное число в полярной форме в прямоугольную форму с помощью rect(r, phi). Комплексное число, возвращаемое этой функцией, равно r * (math.cos (phi) + math.sin (phi) * 1j).

Модуль cmath также позволяет использовать регулярные математические функции со сложными числами. Например, вы можете вычислить квадратный корень из комплексного числа, используя sqrt(z) или его косинус, используя cos(z).

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

Заключение

Все эти функции, о которых мы говорили выше, имеют свои конкретные приложения. Например, вы можете использовать функцию factorial(x) для решения проблем с перестановкой и комбинацией. Вы можете использовать тригонометрические функции для преобразования вектора в декартовы координаты. Вы также можете использовать тригонометрические функции для имитации периодических функций, таких как звуковые и световые волны.

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

Надеюсь, вам понравился этот урок. Если у вас есть какие-либо вопросы, дайте мне знать в комментариях.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.