Автор оригинала: Carrie-Anne Pienaar.
Исполнители являются номерами суперприпций, которые описывают, сколько раз вы хотите умножить номер самостоятельно. Расчет стоимости, поднятой до власти другого значения, является фундаментальной операцией в прикладной математике, такой как финансы, машинное обучение, статистика и наука о данных. В этом руководстве показано вам, как это сделать в Python!
Определение
Для POW (X, Y)
, POW ()
Функция возвращает значение х
поднял до сил y
. Он выполняет ту же функцию, что и энергетический оператор **
, то есть x ** y , но отличается тем, что он поставляется с необязательным аргументом, называемым модом.
Примеры без мод
>>> pow(5, 2) 25 >>> pow(-3, 3) -27 >>> pow(2, -2) 0.25
Параметры и синтаксис
POW (BASE, EXP,) |
POW ()
Функция включает в себя два обязательных аргумента, база
и exp
и один дополнительный аргумент, мод
, чье значение по умолчанию является Нет
Отказ Все аргументы должны иметь числовой тип данных.
Параметр | Описание |
превышать | Номер, который представляет основание функции, мощность которой должна быть рассчитана. |
база | Номер, который представляет экспонент функции, к которому будет поднят базу. |
мод | Номер, с которым будет вычислен модуль. |
Возвращаемое значение: Выход база
поднял до сил exp
и будет числовым типом данных, int, float или комплекс в зависимости от того, что вы вводите.
Использование функции POW () без аргумента мода
При использовании POW (X, Y)
Функция без дополнительного аргумента мода, он выполнит ту же оператор, что и энергозакор x ** y
, поднимая х
к власти y
.
Сравнение двух методов
>>> pow(6, 4) 1296 >>> 6 ** 4 1296
POW ()
Функция принимает все числовые типы данных, то есть int, float и даже комплексные числа. Как правило, возвращаемое значение будет зависеть от того, какие типы данных вы вводите. Приведенный выше пример показывает, что оба аргумента являются типом INT, поэтому возвращается тип INT. Однако, если вы должны были вместо этого использовать плавать Номер как один или оба аргумента, функция автоматически вернет тип поплавком.
Примеры с использованием типов поплавок
>>> pow(3.0, 4) 81.0 >>> pow(4.5, 2.3) 31.7971929089206
Как и в случае с помощью входов типа Float, приводящие к поплавке выходов, те же рассуждения применяются к сложным числам. Если вы введете комплексное число как один или оба аргумента, будет возвращен комплексное число.
Пример с использованием сложных чисел
>>> pow(4+2j, 3) (16+88j)
Тип возврата также будет зависеть от того, являются ли ваши аргументы неотрицательными или отрицательными, как показано в таблице ниже.
база | превышать | Тип возврата |
Неотрицательный | Неотрицательный | int. |
Неотрицательный | Отрицательный | капля |
Отрицательный | Неотрицательный | int. |
Отрицательный | Отрицательный | плавать |
Примеры возвратных значений с различными типами ввода
>>> pow(7, 2) 49 >>> pow(4, -5) 0.0009765625 >>> pow(-6, 3) -216 >>> pow(-9, -4) 0.00015241579027587258
Использование функции POW () с аргументом мода
Что устанавливает POW ()
функционировать, кроме **
Оператор – это третий дополнительный аргумент, мод
, что дает вам возможность выполнять операцию по модулю в рамках функции.
Процесс операций при использовании аргумента мода выглядит следующим образом:
Если у нас есть POW (X, Y, Z)
Функция впервые выполняет задачу повышения х
к власти y
И тогда этот результат используется для выполнения задачи по модулю в отношении z
Отказ Это будет эквивалент (x ** y)% z
Отказ
Примеры с использованием мод
>>> pow(14, 7, 5) 4 >>> pow(-8, 3, 5) 3 >>> pow(2, 4, -3) -2
Общее правило для использования аргумента мода состоит в том, что все значения должны быть целочисленного типа, exp
Аргумент должен быть не отрицательным, а аргумент мода должен быть ненулевым. Тем не менее, Python 3.8 Теперь поставляется с функциональностью вычисления модульных аванс. В этом случае exp
Аргумент может быть отрицательным, при условии, что база относительно премьер Для мода, то есть единственный общий целочисленный делитель базы и мода составляет 1.
Итак, при использовании POW ()
Функция с отрицательным exp
Функция выполнится следующим образом:
pow(inv_base, -exp, mod)
Другими словами, функция будет вычислять модульную обращенную основу основы и в первую очередь мод, а затем в результате будет использоваться в POW ()
Функция, как база, которая должна быть вычислена как обычно, с аргументом EXP преобразуется в его неотрицательный аналог.
Пример модульной обратной
>>> pow(87, -1, 25) 23
В этом примере прямой модульный обратный вычисляется, потому что inv_base
будет поднят до власти 1.
Пример модульного обратного, когда exp не -1
>>> pow(34, -5, 19) 10 # The modular inverse of 34 mod 19 is 14, therefore, we end up with the function pow(14, 5, 19) >>> pow(14, 5, 19) 10
Расчет n-го корня числа с использованием POW ()
К сожалению, Python не имеет встроенной функции для расчета nth корень числа. Математический модуль имеет только функцию для расчета квадратных корней, math.sqrt ()
Поэтому мы должны быть творчески, чтобы рассчитать nth корнеплоды.
Мы знаем, что NX
эквивалентно x1n
Отказ Таким образом, используя эти знания, мы можем рассчитать n-й корня в Python, используя либо POW (X, (1/N))
или х ** (1/n)
Отказ
Примеры расчета nth orots
>>> pow(625, (1/4)) 4.0 >>> 729**(1/3) 8.999999999999998
Обратите внимание, что выполнение nth Корневой расчет всегда будет возвращать поплавок, когда не использует сложные числа. Так как Python’s Тип поплавка работает по приближениям Он часто будет возвращать приближение, а не точное число, даже если точный ответ возможен. Это продемонстрировано во втором примере выше.
При расчете nth root от отрицательного числа возвращаемое значение будет сложным числом, возможным ли целое число или нет.
Примеры расчета nth корней отрицательных оснований
>>> pow(-16, (1/2)) (2.4492935982947064e-16+4j) >>> pow(-27, (1/3)) (1.5000000000000004+2.598076211353316j)
Мы ожидали, что второй пример выше, кубизованный корень из -27, чтобы привести к -3, но вместо этого мы получаем комплексное число. Это потому, что Python возвращает основной корне, а не реальный корень. Для объяснения этих различных типов корней вы можете посмотреть на Фундаментальная теорема алгебры Отказ
math.pow () Функция
В Математический модуль Python, есть подобная функция под названием math.pow ()
Отказ Чтобы использовать это, нам сначала нужно импортировать математическую функцию, таким образом, Встроенный POW ()
Функция будет очень немного быстрее. Основные различия между двумя функциями в том, что math.pow ()
Не допускает дополнительный аргумент мода, и он всегда будет возвращать поплавок. Так что если вы хотите убедиться, что вы получите поплавок, math.pow ()
это лучший вариант.
Пример использования math.pow ()
>>> import math >>> math.pow(9, 5) 59049.0
Когда использовать функцию POW () VS, когда использовать ** Оператор
При принятии решения между использованием POW ()
Функция или **
Оператор, самый важный фактор для рассмотрения, будет эффективность вашего кода. Мы можем использовать TimeIt.Timeit ()
Функция из Время течения
Модуль, чтобы узнать, насколько быстро Python выполняет наш код.
Примеры использования Timeit с простыми числами
>>> import timeit >>> timeit.timeit('pow(5, 2)') 0.25059129999863217 >>> timeit.timeit('5**2') 0.008814800001346157
При выполнении простых вычислений мощности, **
Оператор кажется намного быстрее.
Примеры с использованием модуля
>>> timeit.timeit('pow(52, 2, 4)') 0.7482693000001746 >>> timeit.timeit('52**2 % 4') 0.012026999998852261
То же самое верно, даже когда мы включаем операцию по модулю.
Однако, когда мы хотим выполнить энергопотребление с очень большими числами, POW ()
Функция намного быстрее, показывая, что мощность POW ()
Функция заключается в выполнении более длительных вычислений.
Примеры с использованием больших чисел
>>> timeit.timeit('pow(5234, 2341, 124)') 0.9020593000004737 >>> timeit.timeit('5234**2341 % 124') 152.56075580000106
Здесь POW ()
Функция чрезвычайно быстрая по сравнению с **
оператор. Поэтому мы можем обобщать эти выводы, сказав, что когда вы хотите выполнить короткие, простые расчеты, ** Оператор является лучшим вариантом, однако, если ваша операция включает в себя очень большие числа, POW ()
Функция намного эффективнее.
Оригинал: “https://blog.finxter.com/a-guide-to-pythons-pow-function/”