Извлечение корней в Python
Под извлечением корня из какого-либо числа чаще всего подразумевают нахождение решение уравнения x в степени n = value, соответственно для квадратного корня, число n — это два, для кубического — 3. Чаще всего под результатом и числом подразумеваются вещественные числа.
В программировании нахождение корней используется очень часто. Разберемся, как и какими методами можно эффективно извлекать корни из числа. Вначале рассмотрим, какие способы есть в Python, и определим самый эффективный. Потом более подробно разберём, как можно найти не только квадратный корень из числа, но и кубический, и потом корень n степени.
Способы извлечения корня
В языке программирования Python 3 существует три способа извлечения корней:
- Использование функции sqrt из стандартной математической библиотеки math.
- Операция возведения в степень **
- Применение функции pow(x, n)
Чтобы воспользоваться первым способом, необходимо вначале импортировать sqrt из модуля math. Это делается с помощью ключевого слова import: from math import sqrt . При помощи этой функции можно извлекать только квадратный корень из числа. Приведем пример:
from math import sqrt x = sqrt(4) print(x) 2.0
Если же нам нужно вычислить в Python корень квадратный из суммы квадратов, то можно воспользоваться функцией hypot из модуля math. Берется сумма квадратов аргументов функции, из нее получается корень. Аргументов у функции два.
from math import hypot x = hypot(4,3) print(x) 5.0
Еще одним, чуть более универсальным методом, будет использование возведения в степень. Известно, что для того, чтобы взять корень n из числа, необходимо возвести его в степень 1/n. Соответственно, извлечение квадратного корня из числа 4 будет выглядеть так:
n = 2 x = 4**(1./n) print(x) 2.0
Обратите внимание, что в Python 2 необходимо ставить точку после единицы, иначе произойдет целочисленное деление, и 1/n == 0, а не нужной нам дроби. В Python 3 можно не ставить точку.
Последний метод использует функцию pow(value, n). Эта функция в качестве аргумента value возьмет число, которое необходимо возвести в степень, а второй аргумент будет отвечать за степень числа. Как и в предыдущем методе, необходимо использовать дробь, для того, чтобы получить корень числа.
x = pow(4, 0.5) print(x) 2.0
Какой метод быстрее?
Для того, чтобы определить какой же метод предпочтительнее использовать, напишем программу. Замерять время выполнения будем с помощью метода monotonic библиотеки time.
from time import monotonic from math import sqrt iterations = 1000000 start = monotonic() for a in range(iterations): x = sqrt(4) print("sqrt time: .3f>".format(monotonic() - start) + " seconds") start = monotonic() for a in range(iterations): x = 4 ** 0.5 print("** time: .3f>".format(monotonic() - start) + " seconds") start = monotonic() for a in range(iterations): x = pow(4, 0.5) print("pow time: .3f>".format(monotonic() - start) + " seconds") sqrt time: 0.266 seconds ** time: 0.109 seconds pow time: 0.453 seconds
Как видно, самое быстрое решение — использовать **. На втором месте метод sqrt, а pow — самый медленный. Правда, метод sqrt наиболее нагляден при вычислении в Python квадратных корней.
Таким образом, если критична скорость, то используем **. Если скорость не критична, а важна читаемость кода, то следует использовать sqrt.
Квадратный корень
Для извлечения квадратного корня самым наглядным способом, правда не самым быстрым, будет использование sqrt из модуля math.
from math import sqrt x = sqrt (value)
Но можно использовать и трюки с возведением в степень 1/2, что тоже будет приводить к нужному результату.
x = value ** (0.5) или x = pow(value, 0.5) .
Кубический корень
Для извлечения кубического корня в Python 3 метод sqrt не подойдет, поэтому воспользуйтесь возведением в степень 1/3:
x = value ** (1./3) или x=pow(value, 1/3) .
Корень n-степени
Корень n-степени из числа в Python извлекается можно получить двумя способами с помощью возведения в степень 1.0/n:
- С помощью оператора **.
- Используя функцию pow.
Как было проверено выше, оператор ** быстрее. Поэтому его использовать более целесообразно. Приведем пример вычисления кубических корней в Python 3 с помощью этих двух методов:
n = 4. x = 16.0 ** (1./n) print(x) x = pow(16.0, 1./n) print(x) 2.0 2.0
Корень отрицательного числа
Рассмотрим, как поведут себя функции, если будем брать корень из отрицательного числа.
from math import sqrt x = sqrt(-4) File "main.py", line 2, in x = sqrt(-4) ValueError: math domain error
Как видим, функция sqrt выдаёт исключение.
Теперь посмотрим, что будет при использовании других методов.
x = -4 ** 0.5 print(x) x = pow(-4, 0.5) print(x) -2.0 (1.2246467991473532e-16+2j)
Как видно из результата, оператор ** не выдает исключения и возвращает некорректный результат. Функция pow работает корректно. В результате получаем комплексное число 2j, что является верным.
Вывод
В Python существуют два универсальных способа для извлечения корня из числа. Это возведение в необходимую степень 1/n. Кроме того, можно воспользоваться функцией из математического модуля языка, если необходимо извлечь квадратный корень числа.
Все эти методы имеют свои преимущества и недостатки. Самый наглядный это sqrt, но подходит только для квадратный корней из числа. Остальные методы не такие элегантные, но легко могут извлечь корень нужной степени из числа. Кроме того оператор ** оказался наиболее быстрым при тестировании.
Необходимо также помнить про целочисленное деление, неправильное использование которого может приводить к ошибке в вычислении.
Что такое функция sqrt в Python?
Функция sqrt() это функция встроенного в Python пакета math, которая возвращает квадратный корень числа (sqrt сокращение от square root — квадратный корень).
Синтаксис выглядит следующим образом:
math.sqrt(x)
Где x любое положительное число. Стоит учитывать, что тип возвращаемого числа будет float .
Для использования функции sqrt() необходимо сначала импортировать пакет math.
import math print(math.sqrt(4)) # => 2.0 print(math.sqrt(144)) # => 12.0
Как извлечь корень в Python
Квадратный корень из числа — это значение, которое при умножении само на себя дает исходное число. Каждое положительное число имеет два квадратных корня (то же значение с положительным и отрицательным знаками). Ниже приводится запись квадратного корня:
√25 = ±5
Для отрицательного числа результат извлечения квадратного корня включает комплексные числа, обсуждение которых выходит за рамки данной статьи.
Математическое представление квадрата числа
Все мы в детстве узнали, что, когда число умножается само на себя, мы получаем его квадрат. Также квадрат числа можно представить как многократное умножение этого числа. Попробуем разобраться в этом на примере.
Предположим, мы хотим получить квадрат 5. Если мы умножим число (в данном случае 5) на 5, мы получим квадрат этого числа. Для обозначения квадрата числа используется следующая запись:
5 2 = 25
При программировании на Python довольно часто возникает необходимость использовать функцию извлечения квадратного корня. Есть несколько способов найти квадратный корень числа в Python.
1. Используя оператор возведения в степень
num = 25 sqrt = num ** (0.5) print("Квадратный корень из числа "+str(num)+" это "+str(sqrt))Квадратный корень из числа 25 это 5.0Объяснение: Мы можем использовать оператор «**» в Python, чтобы получить квадратный корень. Любое число, возведенное в степень 0.5, дает нам квадратный корень из этого числа.
2. Использование math.sqrt()
Квадратный корень из числа можно получить с помощью функции sqrt() из модуля math , как показано ниже. Далее мы увидим три сценария, в которых передадим положительный, нулевой и отрицательный числовые аргументы в sqrt() .
a. Использование положительного числа в качестве аргумента.
import math num = 25 sqrt = math.sqrt(num) print("Квадратный корень из числа " + str(num) + " это " + str(sqrt))Вывод: Квадратный корень из числа 25 это 5.0 .
b. Использование ноля в качестве аргумента.
import math num = 0 sqrt = math.sqrt(num) print("Квадратный корень из числа " + str(num) + " это " + str(sqrt))Вывод: Квадратный корень из числа 0 это 0.0 .
c. Использование отрицательного числа в качестве аргумента.
import math num = -25 sqrt = math.sqrt(num) print("Квадратный корень из числа " + str(num) + " это " + str(sqrt))Traceback (most recent call last): File "C:\wb.py", line 3, in sqrt = math.sqrt(num) ValueError: math domain errorОбъяснение: Когда мы передаем отрицательное число в качестве аргумента, мы получаем следующую ошибку «math domain error». Из чего следует, что аргумент должен быть больше 0. Итак, чтобы решить эту проблему, мы должны использовать функцию sqrt() из модуля cmath .
3. Использование cmath.sqrt()
Ниже приведены примеры применения cmath.sqrt() .
а. Использование отрицательного числа в качестве аргумента.
Как в python извлечь корень?
Для этого нужно использовать циклы или что-то еще? Если известно только число, а корни надо найти.
- Вопрос задан более трёх лет назад
- 143510 просмотров
1 комментарий
Оценить 1 комментарий
Tahir_brother @Tahir_brother
import math #вызов модуля дополнительных математических функций print('вычислить квадратный корнь числа:') a=int(input()) #переменная а получит введённое значение print('Квадратный корень числа ',a,' = ',int(math.sqrt(a))) #нажмите F5, потом ОК
Решения вопроса 2
Python Enthusiast
Существует три способа вычисления квадратных корней: с помощью функции sqrt() модуля math, с помощью выражения ** и с помощью встроенной функции pow(). В данном случае я указал их в порядке снижения скорости вычисления. Т.е. быстрее других считает sqrt(), потом **, потом pow(). С другой стороны, отмечу, что для работы с sqrt() необходимо импортировать модуль math, а ** и pow() доступны сразу:
>>> import math >>> math.sqrt(9) 3.0 >>> 9 ** .5 3.0 >>> pow(9, .5) 3.0
Ответ написан более трёх лет назад
Нравится 11 8 комментариев
