Определить степень числа python

Степень в Python — как возвести?

Когда я был студентом, мой преподаватель по методам программирования любил повторять: «В математике все идеи простые». Чаще всего, фраза звучала в момент объяснения новой сложной темы, а потому вызывала определённые внутренние противоречия.

С возведением в степень всё не так — это действительно простая операция.

История

Возведение в степень — частный случай умножения, поэтому данную операцию изначально не рассматривали, как самостоятельную. Но уже в работах Диофанта Александрийского степени отведено особое место. В частности «Отец Алгебры» применял понятия кубов и квадратов числа.

Эта операция была известна ещё в древнем Вавилоне, однако современный её вид устоялся лишь в XVII веке.

Как умножение позволяет сократить количество символов сложения:

Так и степень сокращает запись умножения:

  • 6 — это основание;
  • 2 — показатель степени (это число говорит о том, сколько раз число в основании должно быть умножено само на себя).

До воцарения числового показателя, были и другие варианты его записи. Математики раннего Возрождения использовали буквы. Например, Q обозначала квадрат, а C — куб. Различные формы записи возведения в степень не обошли и языки программирования.

Для АЛГОЛа и некоторых диалектов Бейсика применяется значок ↑. В матлабе, R, Excel-е и Хаскеле используется «циркумфлекс» — ^ или «галочка». Этот символ популярен и вне программирования.

Читайте также:  Php one two three

Определение

В Python возведение в степень записывается при помощи двойной «звёздочки» — » ** «

Вторая форма записи — встроенная функция pow():

# первый аргумент — основание, а второй — показатель b = pow(2, 4) print(b) > 16

Обратные операции

Извлечение корня

У возведения в степень две обратные операции. Первая — извлечение корня. Подробнее о корнях в Python вы можете почитать в нашей статье . Отметим лишь, что корень в питоне вычисляется с помощью той же функции pow():

# корень четвёртой степени из 16 root = pow(16, (1/4)) print(root) > 2.0

Либо с применением оператора » ** «:

# корень кубический из 27 cub_root = 27 ** (1/3) print(cub_root) > 3.0

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

import math # квадратный корень из 100 sqr_root = math.sqrt(100) print(sqr_root) > 10.0

Логарифмирование

Логарифмирование — вторая обратная операция.

Логарифмом числа «b» по основанию «a» зовётся такой показатель степени, в который следует возвести «a», чтобы получить «b».

Здесь x — логарифм. Пример из математики — найдем значение выражения:

Легче всего эта запись читается в формате вопроса: «В какую степень нужно возвести 2, чтобы получить 16?». Очевидно, в 4-ю. Следовательно,

В питоне операция нахождения логарифма также заложена в функционал модуля math:

import math # отыщем логарифм 100 по основанию 10 # 100 — основание логарифма, а 10 — аргумент log = math.log(100, 10) print(log) > 2.0

Степень

Целочисленная

В целочисленную степень можно возводить положительные и отрицательные int и float числа:

# int print(3 ** 9) > 19683 print(pow(-2, 10)) > 1024 # float print(3.14 ** 9) > 29673.367320587102 print(pow(-1.1, 1001)) > -2.7169262098066285e+41

И функция pow() и оператор » ** » умеют возводить комплексные числа:

# complex a = complex(2, 1) print(pow(a, 2)) > (3+4j) print(a ** 2) > (3+4j)

Показатель степени может быть положительным, отрицательным и нулевым:

# + print(12 ** 4) > 20736 # — print(100 ** -2) > 0.0001 # 0 print(1231 ** 0) > 1

Результат не определён, когда 0 возводят в отрицательную степень:

print(0 ** -4) > ZeroDivisionError: 0.0 cannot be raised to a negative power

Ошибка деления на ноль возникает из-за следующего свойства степени:

Рациональная

Возведение числа в рациональную степень напрямую связано с извлечением корня из этого числа отношением:

Если рациональный показатель отрицательный, а основание равно нулю, то Питон все ещё будет выдавать ошибку:

print(0 ** -(5/4)) > ZeroDivisionError: 0.0 cannot be raised to a negative power

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

print(pow(-5, (5/4))) > (-5.286856317202822-5.286856317202821j) print(type(pow(-5, (5/4)))) >

В остальном возведение в рациональную степень работает, как и для целочисленной:

print(0 ** (3/2)) > 0.0 print(pow(1, (23/24))) > 1.0 print(10 ** (6/7)) > 7.196856730011519

Вещественная

В начале автор объявил, что возведение в степень — штука несложная. Так вот, для вещественных степеней это уже не совсем так. Идеи, заложенные в эту операцию, хоть и просты, но их много, и каждая из них достойна собственной статьи. Описать вкратце разложение в ряд Тейлора и численное интегрирование не получится. Это будет не справедливо, как по отношению к вам, так и к математике. Поэтому, выделим главное:

Python умеет возводить в вещественную степень даже вещественные числа (пусть и псевдо)

Сделать такое инструментами математики ой как непросто:

# возведём число Пи в степень e print(pow(math.pi, math.e)) > 22.45915771836104

Ноль в степени ноль

Дискуссии по поводу значения 0 в степени 0 продолжаются уже больше двух веков. Обычно значение нуля в нулевой степени принято считать неопределённым, но символическое соглашение о том, что «0 в степени 0 равно 1» помогает в записи формул и алгоритмов. Ровно поэтому так сделано и в Python:

print(pow(0, 0)) > 1 print(0 ** 0) > 1

Источник

Возведение числа в степень на Python

В этом руководстве разберем процесс возведения в степень в Python.

В математике возведение в степень — это операция, при которой число умножается само на себя несколько раз. Python предоставляет встроенные операторы и функции для выполнения возведения в степень.

Оператор ** для возведения в степень

Многие разработчики считают, что символ карет ( ^ ) — это оператор возведения числа в степень, ведь именно он обозначает эту операцию в математике. Однако в большинстве языков программирования этот знак выступает в качестве побитового xor .

В Python оператор возведения в степень обозначается двумя символами звездочки ** между основанием и числом степени.

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

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

Проверим оператор с другими значениями.

Инициализируем целое число, отрицательное целое, ноль, два числа с плавающей точкой float , одно больше нуля, а второе — меньше. Степеням же присвоим случайные значения.

 
 
num1 = 2 num2 = -5 num3 = 0 num4 = 1.025 num5 = 0.5 print(num1, '^12 =', num1**12) print(num2, '^4 =', num2**4) print(num3, '^9999 =', num3**9999) print(num4, '^-3 =', num4**-3) print(num5, '^8 =', num5**8)
2 ^12 = 4096 -5 ^4 = 625 0 ^9999 = 0 1.025 ^-3 = 0.928599410919749 0.5 ^8 = 0.00390625

pow() или math.power() для возведения в степень

Также возводить в степень в Python можно с помощью функции pow() или модуля math, в котором есть своя реализация этого же модуля.

В обе функции нужно передать два аргумента: основание и саму степень. Попробуем вызвать обе функции и посмотрим на результат.

 
 
import math print(pow(-8, 7)) print(math.pow(-8, 7)) print(pow(2, 1.5)) print(math.pow(2, 1.5)) print(pow(4, 3)) print(math.pow(4,3)) print(pow(2.0, 5)) print(math.pow(2.0, 5))
-2097152 -2097152.0 2.8284271247461903 2.8284271247461903 64 64.0 32.0 32.0

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

numpy.np() для возведения в степень

В модуле numpy есть своя функция power() для возведения в степень. Она принимает те же аргументы, что и pow() , где первый — это основание, а второй — значение степени.

 
 
print(np.power(-8, 7)) print(np.power(2, 1.5)) print(np.power(4, 3)) print(np.power(2.0, 5))
-2097152 2.8284271247461903 64 32.0

Как получить квадрат числа в Python?
Для возведения числа в квадрат, нужно указать 2 в качестве степени. Встроенной функции для получения квадрата в Python нет.
Например, квадрат числа 6 — 6**2 —> 36.

Сравнение времени работы разных решений

Теперь сравним, сколько занимает выполнение каждой из трех функций и оператора ** . Для этого используем модуль timeit .

Основанием будет 2, а значением степени — 9999999.

 
 
import numpy as np import math import time start = time.process_time() val = 2**9999999 print('** за', time.process_time() - start, 'ms') start = time.process_time() val = pow(2, 9999999) print('pow() за', time.process_time() - start, 'ms') start = time.process_time() val = np.power(2, 9999999) print('np.power() за', time.process_time() - start, 'ms') start = time.process_time() val = math.pow(2, 9999999) print('math.pow() за', time.process_time() - start, 'ms')
** за 0.078125 ms pow() за 0.0625 ms np.power() за 0.0 ms Traceback (most recent call last): File "C:\Programs\Python\Python38\test.py", line 18, in val = math.pow(2, 9999999) OverflowError: math range error

В первую очередь можно обратить внимание на то, что math.pow() вернула ошибку OverflowError . Это значит, что функция не поддерживает крупные значения степени.

Различия между остальными достаточно простые, но можно увидеть, что np.power() — самая быстрая.

Источник

Нахождение степени числа с использованием рекурсии

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

Решение задачи

  1. Принимаем на вход число и значение его степени, записываем их в отдельные переменные.
  2. Передаем эти переменные в качестве аргументов в рекурсивную функцию.
  3. Определяем в качестве базового условия рекурсии равенство степени 1 . В этом случае функция выводит само число, так как любое число в степени 1 равно само себе.
  4. В противном случае мы выводим произведение числа на эту же функцию, в которой второй аргумент, степень, уменьшен на 1 .
  5. Выводим конечный результат на экран.
  6. Конец.

Исходный код

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

def power(base, exp): if (exp == 1): return (base) if (exp != 1): return (base * power(base, exp - 1)) base = int(input("Введите число: ")) exp = int(input("Введите его степень: ")) print("Результат возведения в степень равен:", power(base, exp))

Объяснение работы программы

  1. Принимаем на вход число и значение его степени, записываем их в отдельные переменные base и exp соответственно.
  2. Передаем эти переменные в качестве аргументов в рекурсивную функцию power() .
  3. Определяем в качестве базового условия рекурсии exp == 1 . В этом случае функция выводит само число из переменной base , так как любое число в степени 1 равно само себе.
  4. В противном случае мы выводим произведение числа на эту же функцию, в которой второй аргумент (степень) уменьшен на единицу: base * power(base, exp - 1) . Таким образом мы накапливаем произведение числа, хранящегося в переменной base , самого на себя ровно exp раз, что эквивалентно возведению числа base в степень exp .
  5. Выводим конечный результат на экран.

Результаты работы программы

Пример 1: Введите число: 2 Введите его степень: 5 Результат возведения в степень равен: 32 Пример 2: Введите число: 5 Введите его степень: 3 Результат возведения в степень равен: 125

Источник

Оцените статью