Квадратный корень в Python 3 — Извлечение кубических и n-ой степени
Под извлечением корня из какого-либо числа чаще всего подразумевают нахождение решение уравнения x в степени n = value, соответственно для квадратного корня, число n — это два, для кубического — 3. Чаще всего под результатом и числом подразумеваются вещественные числа.
В программировании нахождение корней используется очень часто. Разберемся, как и какими методами можно эффективно извлекать корни из числа. Вначале рассмотрим, какие способы есть в Python, и определим самый эффективный. Потом более подробно разберём, как можно найти не только квадратный корень из числа, но и кубический, и потом корень n степени.
Способы извлечения корня
В языке программирования Python 3 существует три способа извлечения корней:
- Использование функции sqrt из стандартной математической библиотеки math.
- Операция возведения в степень **
- Применение функции pow(x, n)
Чтобы воспользоваться первым способом, необходимо вначале импортировать sqrt из модуля math. Это делается с помощью ключевого слова import:
. При помощи этой функции можно извлекать только квадратный корень из числа. Приведем пример:
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, но подходит только для квадратный корней из числа. Остальные методы не такие элегантные, но легко могут извлечь корень нужной степени из числа. Кроме того оператор ** оказался наиболее быстрым при тестировании.
Необходимо также помнить про целочисленное деление, неправильное использование которого может приводить к ошибке в вычислении.
Извлечение корня в Python OTUS
В этой статье мы рассмотрим, как извлечь корень в Python, а также какой модуль и функция для этого используется. Но давайте обо всем по порядку.
Если мы знаем только общую площадь квадрата и хотим узнать размер одной его стороны либо же собираемся рассчитать расстояние между 2-мя точками в декартовых координатах, нам потребуется квадратный корень. Это не проблема, если речь идет о математике. Но что делать, когда речь идет о языке программирования? К нашему счастью разработчики Python предусмотрели для решения вышеописанной задачи специальную функцию. Но прежде чем продолжить, давайте немного вспомним теорию.
Квадратный корень — что это?
Квадратным корнем, полученным из числа «A», называют число «B», которое при возведении во 2-ю степень даст в итоге то самое изначальное число «A».
B2 = A
Непосредственную операцию, позволяющую найти значение «B», называют извлечением корня из «A». Математики применяют для обозначения этой операции специальный знак (его еще называют знаком радикала):
B = √A
Когда речь идет о корне в «Питоне», ситуация обстоит иначе, причем в обоих случаях. К примеру, само возведение числа в степень записывают посредством оператора «**«:
X = 2
Y = X ** 2
print(Y)
Ответ в консоли «Пайтона» будет равняться четырем.
Касаемо квадратного корня, то он в Python представлен функцией sqrt(). Однако она существует не сама по себе, а в рамках соответствующего математического модуля math. Таким образом, перед началом работы этот модуль надо будет импортировать, но это абсолютно не сложно сделать на практике:
import math
Идем дальше. Наша функция sqrt() принимает лишь один параметр – значение, из которого нам надо извлечь √. Давайте напишем простенький код и задействуем float в качестве типа данных возвращаемого значения.
import math
import random
# попробуем функцию sqrt() на практике
# найдем корень случайного числа с последующим выводом его на экран
rand_num = random.randint(5, 55)
sqrt_rand_num = math.sqrt(rand_num)
print('Наше случайное число = ', rand_num)
print('Искомое значение корня = ', sqrt_rand_num)
Вы можете попробовать работу этого кода у себя на компьютере или на любом онлайн-компиляторе. Вот, к примеру, компилятор для Python 3.
Результат может быть таким:
Или таким:
Так как мы используем модуль random, результат будет различаться при каждом выполнении кода.
Но никто не мешает сделать все намного проще:
print (math.sqrt(64))
Ответ очевиден:
Положительные числа
Функция sqrt() предназначена для работы с положительными значениями. Если число больше либо равно нулю, то неважно, какой тип данных у него, ведь извлечение корня возможно как из целых, так и из вещественных чисел.
Из целых:
import math
print(math.sqrt(81))
> 9.0
Из вещественных:
print(math.sqrt(81.5))
> 9.027735042633894
Сомневаетесь в корректности итоговых результатов предыдущего примера? Просто выполните обратное возведение в степень:
print(9.027735042633894 ** 2)
> 81.5
Также не забывайте, что сделать это можно и посредством специальной функции pow:
print(pow(9.027735042633894, 2))
> 81.5
Отрицательные значения и ноль
Функция sqrt в «Питоне» — вещь полезная и знать ее нужно, однако она не принимает отрицательного числа — лишь положительные (целые и вещественные), а также ноль.
Такая ограниченная возможность использования не соответствует математическим канонам, ведь в реальной жизни специалисты по математике без проблем извлекают √ и из отрицательных значений. Да, результат будет комплексным и пригодится лишь для решения довольно узкого спектра задач, типа расчетов волновых явлений в физике либо вычислений в энергетической сфере.
Учитывайте вышесказанное, если пытаетесь извлекать корни в Python посредством этой функции. Передав отрицательное значение, вы получите error:
import math
print(math.sqrt(-1))
А вот если говорить про ноль, то ошибки не будет, так как код отработает корректно. Однако результат тут очевиден, поэтому практическая ценность данной возможности весьма условна:
import math
print(math.sqrt(0))
> 0.0
Хотите знать о «Питоне» намного больше? Добро пожаловать на специализированный курс в «Отус»!
По материалам:
- http://python-teach.ru/python-dlya-nachinayushhih/vychislenie-kvadratnogo-kornya-chisla-v-python/.
Целочисленный квадратный корень в python
Похоже, вы могли бы проверить вот так:
if int(math.sqrt(n))**2 == n:
print n, 'is a perfect square'
Обновление:
Как вы указали выше, это не удается для больших значений n
. Для них следующее выглядит многообещающим, что является адаптацией примера кода C, написанного Мартином Гаем @ UKC, июнь 1985 года, для относительно простого на вид метода вычисления двоичного числа digit-by-digit, упомянутого в статье Википедии Методы вычисления квадратных корней :
from math import ceil, log
def isqrt(n):
res = 0
bit = 4**int(ceil(log(n, 4))) if n else 0 # smallest power of 4 >= the argument
while bit:
if n >= res + bit:
n -= res + bit
res = (res >> 1) + bit
else:
res >>= 1
bit >>= 2
return res
if __name__ == '__main__':
from math import sqrt # for comparison purposes
for i in range(17)+[2**53, (10**100+1)**2]:
is_perfect_sq = isqrt(i)**2 == i
print '{:21,d}: math.sqrt={:12,.7G}, isqrt={:10,d} {}'.format(
i, sqrt(i), isqrt(i), '(perfect square)' if is_perfect_sq else '')
Выход:
0: math.sqrt= 0, isqrt= 0 (perfect square)
1: math.sqrt= 1, isqrt= 1 (perfect square)
2: math.sqrt= 1.414214, isqrt= 1
3: math.sqrt= 1.732051, isqrt= 1
4: math.sqrt= 2, isqrt= 2 (perfect square)
5: math.sqrt= 2.236068, isqrt= 2
6: math.sqrt= 2.44949, isqrt= 2
7: math.sqrt= 2.645751, isqrt= 2
8: math.sqrt= 2.828427, isqrt= 2
9: math.sqrt= 3, isqrt= 3 (perfect square)
10: math.sqrt= 3.162278, isqrt= 3
11: math.sqrt= 3.316625, isqrt= 3
12: math.sqrt= 3.464102, isqrt= 3
13: math.sqrt= 3.605551, isqrt= 3
14: math.sqrt= 3.741657, isqrt= 3
15: math.sqrt= 3.872983, isqrt= 3
16: math.sqrt= 4, isqrt= 4 (perfect square)
9,007,199,254,740,992: math.sqrt=9.490627E+07, isqrt=94,906,265
100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,020,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,001: math.sqrt= 1E+100, isqrt=10,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,001 (perfect square)
Как выполнить квадратный корень без использования математического модуля?
Я хочу найти квадратный корень из числа без использования математического модуля,так как мне нужно вызвать функцию около 20 тысяч раз и не хочу замедлять выполнение, связываясь с математическим модулем каждый раз, когда функция вызывается
Есть ли более быстрый и простой способ найти квадратный корень?
pythonПоделиться Источник kaki 15 июня 2010 в 16:19
11 ответов
33
Импорт математического модуля происходит только один раз, и вы, вероятно, не получите намного быстрее, чем математический модуль. Существует также более старый вопрос Stackoverflow о том, что быстрее в Python: x**.5 или math.sqrt(x)? . Неясно, какой метод быстрее.
Возможно , взгляните на NumPy и SciPy, не обязательно для sqrt, но если вы делаете какие-то тяжелые вычисления, они могут быть полезны.
Поделиться Mad Scientist 15 июня 2010 в 16:23
12
Как сказал Фабиан, трудно быть быстрее, чем math.sqrt
. Причина в том, что он вызывает соответствующую функцию из библиотеки C с CPython.
Однако вы можете ускорить процесс, удалив накладные расходы на поиск атрибутов:
from math import sqrt
Каждый последующий вызов sqrt не будет искать его в математическом модуле, что экономит время выполнения:
print sqrt(2)
Вот цифры времени, от самого быстрого до самого медленного (Python 2.6.5, Mac OS X 10.6.3): sqrt
быстрее, чем **0.5
:
lebigot@weinberg ~ % python -m timeit -s 'from math import sqrt; x = 2' 'sqrt(x)'
1000000 loops, best of 3: 0.207 usec per loop
lebigot@weinberg ~ % python -m timeit -s 'x = 2' 'x**0.5'
1000000 loops, best of 3: 0.226 usec per loop
lebigot@weinberg ~ % python -m timeit -s 'import math; x = 2' 'math.sqrt(x)'
1000000 loops, best of 3: 0.268 usec per loop
Обратите внимание, что тесты синхронизации вычисляют квадратный корень из переменной . Они не вычисляют константу , такую как 2**0.5
, потому что 2**0.5
предварительно вычисляется в CPython:
import dis
def f():
return 2**0.5
print dis.dis(f)
печать
2 0 LOAD_CONST 3 (1.4142135623730951)
3 RETURN_VALUE
где вы видите постоянную плавающую sqrt(2) = 1.414…
Если вы манипулируете массивами чисел, NumPy sqrt
-это путь, как упоминалось в другом ответе.
Поделиться Eric O Lebigot 15 июня 2010 в 17:16
10
Я бы подумал, что математическая библиотека, скорее всего, будет такой же быстрой, как и все, что вы могли бы написать сами. Но если вы хотите написать свой собственный, вот один алгоритм. Я не знаю Python, так что я просто напишу какой-нибудь псевдокод.
function sqrt(x)
lastGuess=x/2
loop
guess=(lastGuess+x/lastGuess)/2
if abs(guess-lastGuess)<.000001 // or whatever threshold you want
exit loop
lastGuess=guess
return guess
и псевдокод, переведенный на Python:
def sqrt(x):
last_guess= x/2.0
while True:
guess= (last_guess + x/last_guess)/2
if abs(guess - last_guess) < .000001: # example threshold
return guess
last_guess= guess
Поделиться Jay 15 июня 2010 в 17:33
- Квадратный корень из серии dask
У меня есть следующий код, пытающийся вычислить квадратный корень из ряда Даска my_dask_df[‘a_column’] = numpy.sqrt(my_dask_df[‘a_column’]) То, что я получаю, — это следующее исключение: ValueError: Not all divisions are known, can’t align partitions. Please use `set_index` to set the index. Как я…
- квадратный корень без предопределенной функции в python
Как можно найти квадратный корень из числа, не используя никаких заранее определенных функций в python? Мне нужна основная логика того, как работает квадратный корень из программы. В общей математике мы будем делать это с помощью HCF, но в программировании я не могу найти логику.
5
В некоторых особых случаях вы можете обменять размер программы на скорость всплеска. Создайте большой массив и сохраните предварительно вычисленный результат для каждой операции с квадратным корнем (используя входное значение в качестве индекса). Это довольно ограничено, но вы ничего не получите быстрее.
(Вот как это сделал quake)
Поделиться Jay 15 июня 2010 в 17:35
5
Вы должны ввести эту строку в блокнот Jupyter:
25**(1/2)
Поделиться Unknown 14 июля 2018 в 06:31
4
Используйте оператор питания и увеличьте свои числа до 1/2 мощности:
>>> 2**0.5
1.4142135623730951
Что касается того, быстрее ли это:
>>> timeit.timeit(stmt='sqrt(x)', setup='from math import sqrt; x = 2')
0.7182440785071833
>>> timeit.timeit(stmt='x**0.5', setup='from math import sqrt; x = 2')
0.87514279049432275
Поделиться Seth 15 июня 2010 в 16:33
3
Вы могли бы реализовать метод Ньютона, но, хотя он действительно быстр, он вряд ли будет быстрее, чем версия C, которая, как я предполагаю, реализована в математическом модуле. См . http://en.wikipedia.org/wiki/ Methods_of_computing_square_roots .
Поделиться lhf 15 июня 2010 в 16:27
2
Функция Квадратного Корня
def sqrt(number):
if number ** 0.5 == int(number ** 0.5):
return True
else:
return False
Поделиться Davis Tanugraha 21 августа 2018 в 01:29
1
немного поздно для вечеринки, но в любом случае я хотел бы упомянуть об этих простых арифметиках:
25**(1/2)
или
pow(25, 0,5)
вернется как 5. Заказать.
Поделиться cabavyras 11 апреля 2020 в 21:47
0
Python фрагмент кода для вычисления квадрата. Сначала он делает первоначальную догадку, и если догадка недостаточно хороша, она повторяется до тех пор, пока у нас не будет хорошей догадки
def gen_square_root_v1(number, epsilon):
#boundary condition check
if number == '1':
return 1
elif number <= 0:
print('this computes square root for positive numbers only' )
else:
pass
prev_estimate = number/2
while True:
#each itearation, calculate a new estimate
new_estimate = (prev_estimate + number/prev_estimate)/2
#Alternatively can use if abs(new_estimate - prev_estimate) < epsilon:
#check the difference between square of new_estimate and number
if abs(new_estimate * new_estimate - number) < epsilon:
return prev_estimate
#if guess is not good enough, use it to make the next guess
prev_estimate = new_estimate
#call the function
print(gen_square_root_v1(16,1e-5))
Поделиться Sarvesh 13 ноября 2017 в 14:56
0
приведенный ниже код состоит в том, чтобы найти квадратный корень из числа без использования встроенных методов, используя python.the код очень прост для понимания, потому что я написал код, используя математическое простое решение.
x=float(input())
min1=0
max1=x
for i in range(10):
mid=(min1+max1)/2 #middle value
res=mid**2 #finding the square of middle value
if res==x: #if the middle value is square root program break here
break
elif res>x: #if the square value of the middle value is more than x then we need to take max value as middle
max1=mid
else: #if the square value of the middle value is less than x then we need to take min value as middle
min1=mid
print(mid)
Поделиться srikanth Gattu 28 апреля 2020 в 16:40
Похожие вопросы:
Assembly 8086 квадратный корень
Я пытаюсь написать программу с assembly, чтобы запросить у пользователя input, вычислить квадратный корень из числа, а затем вывести квадратный корень из числа. Я действительно не знаю, с чего…
Создайте программу, которая вычисляет квадратный корень из числа без использования Math.sqrt
Это формула, которая может быть использована для вычисления квадратного корня из числа. result=(guess+(number/guess))/2; Например, мне нужно получить квадратный корень из 9. Во-первых, мне нужно…
Наибольшее число раз квадратный корень может быть вычислен на числах между 2 интервалами
Я написал простую программу для вычисления максимального числа раз квадратный корень может быть вычислен на число , вход-это интервал от num1 до num2 , например: если вход равен (1,20), ответ-2 ,…
Умножение, деление и квадратный корень без использования арифметических операторов
Как я могу умножать и делить без использования арифметических операторов? Я читал подобный вопрос здесь , но у меня все еще есть проблема умножения и деления. Кроме того, как можно вычислить…
Отрицательный квадратный корень
Как вы берете квадратный корень из отрицательного числа в C++? Я знаю, что он должен вернуть реальную и сложную часть, я получаю NaN? Как мне принять реальную роль?
Квадратный корень из серии dask
У меня есть следующий код, пытающийся вычислить квадратный корень из ряда Даска my_dask_df[‘a_column’] = numpy.sqrt(my_dask_df[‘a_column’]) То, что я получаю, — это следующее исключение: ValueError:…
квадратный корень без предопределенной функции в python
Как можно найти квадратный корень из числа, не используя никаких заранее определенных функций в python? Мне нужна основная логика того, как работает квадратный корень из программы. В общей…
F# квадратный корень на Int
Я создаю программу в F#, в которой мне нужно сделать квадратный корень из целого числа. Я искал и не нашел ни одной функции, которая позволяла бы делать это без использования cast int -> float ….
Как взять квадратный корень из числа в Elixir?
Как взять квадратный корень из числа в Elixir? Там, кажется, нет модуля Math или чего-то еще, и нет такой функции, как sqrt() .
Как выполнить поэлементный квадратный корень вектора в Julia?
Мне нужно выполнить квадратный корень массива в Julia, но, похоже, функция sqrt() просто выполняет квадратные корни на скалярах и квадратных матрицах. Есть ли какой-нибудь простой компактный способ…
Целочисленный квадратный корень в python Ru Python
Существует ли целочисленный квадратный корень где-то в python или в стандартных библиотеках? Я хочу, чтобы он был точным (т. Е. Возвращал целое число) и лаем, если нет решения.
В настоящий момент я перевернул свой наивный:
Но это уродливо, и я не очень доверяю ему для больших целых чисел. Я мог бы перебирать квадраты и сдаваться, если бы я превысил ценность, но я предполагаю, что было бы слишком медленно делать что-то подобное. Также я предполагаю, что, вероятно, буду изобретать колесо, что-то вроде этого наверняка существует в питоне уже …
Метод Ньютона отлично работает на целых числах:
def isqrt(n): x = n y = (x + 1) // 2 while y < x: x = y y = (x + n // x) // 2 return x
Это возвращает наибольшее целое число x, для которого x * x не превосходит n . Если вы хотите проверить, является ли результат точно квадратным корнем, просто выполните умножение, чтобы проверить, является ли n идеальным квадратом.
Я обсуждаю этот алгоритм и три других алгоритма вычисления квадратных корней в моем блоге .
Извините за очень поздний ответ; Я просто наткнулся на эту страницу. В случае, если кто-либо посещает эту страницу в будущем, модуль python gmpy2 предназначен для работы с очень большими входами и включает в себя, помимо прочего, целочисленную функцию с квадратным корнем.
Пример:
>>> import gmpy2 >>> gmpy2.isqrt((10**100+1)**2) mpz(10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001L) >>> gmpy2.isqrt((10**100+1)**2 - 1) mpz(10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000L)
Конечно, все будет иметь тег «mpz», но mpz совместимы с int:
>>> gmpy2.mpz(3)*4 mpz(12) >>> int(gmpy2.mpz(12)) 12
См. Мой другой ответ для обсуждения эффективности этого метода относительно некоторых других ответов на этот вопрос.
Загрузить: https://code.google.com/p/gmpy/
Длинный алгоритм квадратного корня
Оказывается, существует алгоритм вычисления квадратных корней, который вы можете вычислить вручную, что-то вроде длинного деления. Каждая итерация алгоритма производит ровно одну цифру полученного квадратного корня, потребляя две цифры числа, квадратный корень которого вы ищете. В то время как «длинная рука» версия алгоритма указана в десятичной форме, она работает в любой базе, причем бинарные файлы проще всего реализовать и, возможно, самые быстрые для выполнения (в зависимости от базового представления bignum).
Поскольку этот алгоритм работает с цифрами по цифре, он дает точные результаты для произвольно больших совершенных квадратов, а для не-совершенных квадратов может потребовать столько цифр точности (справа от десятичного разряда), сколько захотите.
На сайте «Dr. Math» есть две хорошие записи, которые объясняют алгоритм:
- Квадратные корни в двоичном
- Длинные квадратные корни
И вот реализация в Python:
def exact_sqrt(x): """Calculate the square root of an arbitrarily large integer. The result of exact_sqrt(x) is a tuple (a, r) such that a**2 + r = x, where a is the largest integer such that a**2 <= x, and r is the "remainder". If x is a perfect square, then r will be zero. The algorithm used is the "long-hand square root" algorithm, as described at http://mathforum.org/library/drmath/view/52656.html Tobin Fricke 2014-04-23 Max Planck Institute for Gravitational Physics Hannover, Germany """ N = 0 # Problem so far a = 0 # Solution so far # We'll process the number two bits at a time, starting at the MSB L = x.bit_length() L += (L % 2) # Round up to the next even number for i in xrange(L, -1, -1): # Get the next group of two bits n = (x >> (2*i)) & 0b11 # Check whether we can reduce the remainder if ((N - a*a) << 2) + n >= (a<<2) + 1: b = 1 else: b = 0 a = (a << 1) | b # Concatenate the next bit of the solution N = (N << 2) | n # Concatenate the next bit of the problem return (a, Na*a)
Вы можете легко изменить эту функцию, чтобы провести дополнительные итерации для вычисления дробной части квадратного корня. Меня больше всего интересовало вычисление корней больших совершенных квадратов.
Я не уверен, как это сравнивается с алгоритмом «целочисленный метод Ньютона». Я подозреваю, что метод Ньютона выполняется быстрее, поскольку он может в принципе генерировать несколько бит решения на одной итерации, тогда как алгоритм «длинной руки» генерирует ровно один бит решения на итерацию.
Источник репо: https://gist.github.com/tobin/11233492
Одним из вариантов было бы использовать decimal
модуль и делать это в достаточно точных поплавках:
import decimal def isqrt(n): nd = decimal.Decimal(n) with decimal.localcontext() as ctx: ctx.prec = n.bit_length() i = int(nd.sqrt()) if i**2 != n: raise ValueError('input was not a perfect square') return i
который, я думаю, должен работать:
>>> isqrt(1) 1 >>> isqrt(7**14) == 7**7 True >>> isqrt(11**1000) == 11**500 True >>> isqrt(11**1000+1) Traceback (most recent call last): File "<ipython-input-121-e80953fb4d8e>", line 1, in <module> isqrt(11**1000+1) File "<ipython-input-100-dd91f704e2bd>", line 10, in isqrt raise ValueError('input was not a perfect square') ValueError: input was not a perfect square
Похоже, вы можете проверить вот так:
if int(math.sqrt(n))**2 == n: print n, 'is a perfect square'
Обновить:
Как вы указали выше, при больших значениях n
не выполняется. Для тех, которые выглядят многообещающе, что является адаптацией примера кода C Мартином Гаем @ UKC, июнь 1985 года, для относительно простого выглядящего двоичного численного численного метода расчета, упомянутого в статье в Википедии. Методы вычисления квадратных корней :
from math import ceil, log def isqrt(n): res = 0 bit = 4**int(ceil(log(n, 4))) if n else 0 # smallest power of 4 >= the argument while bit: if n >= res + bit: n -= res + bit res = (res >> 1) + bit else: res >>= 1 bit >>= 2 return res if __name__ == '__main__': from math import sqrt # for comparison purposes for i in range(17)+[2**53, (10**100+1)**2]: is_perfect_sq = isqrt(i)**2 == i print '{:21,d}: math.sqrt={:12,.7G}, isqrt={:10,d} {}'.format( i, sqrt(i), isqrt(i), '(perfect square)' if is_perfect_sq else '')
Вывод:
0: math.sqrt= 0, isqrt= 0 (perfect square) 1: math.sqrt= 1, isqrt= 1 (perfect square) 2: math.sqrt= 1.414214, isqrt= 1 3: math.sqrt= 1.732051, isqrt= 1 4: math.sqrt= 2, isqrt= 2 (perfect square) 5: math.sqrt= 2.236068, isqrt= 2 6: math.sqrt= 2.44949, isqrt= 2 7: math.sqrt= 2.645751, isqrt= 2 8: math.sqrt= 2.828427, isqrt= 2 9: math.sqrt= 3, isqrt= 3 (perfect square) 10: math.sqrt= 3.162278, isqrt= 3 11: math.sqrt= 3.316625, isqrt= 3 12: math.sqrt= 3.464102, isqrt= 3 13: math.sqrt= 3.605551, isqrt= 3 14: math.sqrt= 3.741657, isqrt= 3 15: math.sqrt= 3.872983, isqrt= 3 16: math.sqrt= 4, isqrt= 4 (perfect square) 9,007,199,254,740,992: math.sqrt=9.490627E+07, isqrt=94,906,265 100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,020,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,001: math.sqrt= 1E+100, isqrt=10,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,001 (perfect square)
Вот очень простая реализация:
def i_sqrt(n): i = n.(log_2(n)) = n. QED. # while m*m > n: m >>= 1 i -= 1 for k in xrange(i-1, -1, -1): x = m | (1 << k) if x*x <= n: m = x return m
Это всего лишь двоичный поиск. Инициализируйте значение m
как наибольшую степень 2, которая не превышает квадратный корень, затем проверьте, можно ли установить каждый меньший бит, сохраняя результат не больше, чем квадратный корень. (Проверяйте биты по одному, в порядке убывания.)
Для достаточно больших значений n
(например, около 10**6000
или около 20000
бит) это выглядит так:
- Быстрее, чем реализация метода Ньютона, описанная user448810 .
- Много, гораздо медленнее, чем встроенный в
gmpy2
метод в моем другом ответе . - Сопоставимый, но несколько медленнее, чем Longhand Square Root, описанный nibot .
Все эти подходы достигают успеха на входе такого размера, но на моей машине эта функция занимает около 1,5 секунд, тогда как @ Nibot занимает около 0,9 секунды, @ user448810 занимает около 19 секунд, а встроенный метод gmpy2 занимает менее миллисекунды (!). Пример:
>>> import random >>> import timeit >>> import gmpy2 >>> r = random.getrandbits >>> t = timeit.timeit >>> t('i_sqrt(r(20000))', 'from __main__ import *', number = 5)/5. # This function 1.5102493192883117 >>> t('exact_sqrt(r(20000))', 'from __main__ import *', number = 5)/5. # Nibot 0.8952787937686366 >>> t('isqrt(r(20000))', 'from __main__ import *', number = 5)/5. # user448810 19.326695976676184 >>> t('gmpy2.isqrt(r(20000))', 'from __main__ import *', number = 5)/5. # gmpy2 0.0003599147067689046 >>> all(i_sqrt(n)==isqrt(n)==exact_sqrt(n)[0]==int(gmpy2.isqrt(n)) for n in (r(1500) for i in xrange(1500))) True
Эта функция может быть легко обобщена, хотя она не такая приятная, потому что у меня нет такой же точной первоначальной предпосылки для m
:
def i_root(num, root, report_exactness = True): i = num.bit_length() / root m = 1 << i while m ** root < num: m <<= 1 i += 1 while m ** root > num: m >>= 1 i -= 1 for k in xrange(i-1, -1, -1): x = m | (1 << k) if x ** root <= num: m = x if report_exactness: return m, m ** root == num return m
Однако обратите внимание, что gmpy2
также имеет метод i_root
.(2k) if new_diff >= 0: d = new_diff m |= j return m
Заметим, что по конструкции k
й бит m << 1
не установлен, поэтому побитовым или может быть использован для реализации добавления (m<<1) + (1<<k)
. В конечном счете у меня есть (2*m*(2**k) + 2**(2*k))
записанный как (((m<<1) | (1<<k)) << k)
, поэтому это три сдвигами и одним поразрядным – или (с последующим вычитанием для получения new_diff
). Может быть, есть еще более эффективный способ получить это? Несмотря на это, это намного лучше, чем умножение m*m
! Сравните с выше:
>>> t('improved_i_sqrt(r(20000))', 'from __main__ import *', number = 5)/5. 0.10908999762373242 >>> all(improved_i_sqrt(n) == i_sqrt(n) for n in xrange(10**6)) True
Ваша функция не работает для больших входов:
In [26]: isqrt((10**100+1)**2) ValueError: input was not a perfect square
На сайте ActiveState есть рецепт, который, надеюсь, будет более надежным, поскольку он использует только математические целые числа. Он основан на более раннем вопросе StackOverflow: написание собственной функции квадратного корня
Я нашел эту ветку несколько дней назад и повторно написал решение nibot , и, сократив количество итераций пополам и сделав некоторые другие незначительные улучшения производительности, я смог улучшить производительность в 2,4 раза:
def isqrt(n): a = 0 # a is the current answer. r = 0 # r is the current remainder. for s in reversed(range(0, n.bit_length(), 2)): # Shift n by s bits. t = n >> s & 3 # t is the two next most significant bits of n. r = r << 2 | t # Increase the remainder as if no new bit is set. c = a << 2 | 1 # c is an intermediate value used for comparison. b = r >= c # b is the next bit in the remainder. if b: r -= c # b has been set, so reduce the remainder. a = a << 1 | b # Update the answer to include b. return (a, r)
Вот результаты от timeit
:
>>> timeit('isqrt(12345678901234567890)', setup='from __main__ import isqrt') 8.862877120962366
Затем для сравнения я применил наиболее часто используемый алгоритм с квадратным корнем: метод Ньютона . Это определение гораздо более компактно.
def isqrt(n): x, y = n, n >> 1 while x > y: x, y = y, (y + n//y) >> 1 return (x, n - x*x)
Оказывается, что даже оптимизированная версия длинномерных квадратных корней медленнее метода Ньютона, занимая примерно в 1,5 раза.
>>> timeit('isqrt(12345678901234567890)', setup='from __main__ import isqrt') 5.74083631898975
Итак, в заключение, если вам нужна быстрая чистая функция квадратного корня Python, посмотрите не дальше, чем приведенная выше.
Изменить: я исправил ошибку в методе Ньютона выше. На моей машине он работает на ~ 10% быстрее, чем решение user448810 .
Поплавки не могут быть точно представлены на компьютерах. Вы можете проверить желаемую настройку близости с небольшим значением в пределах точности поплавков python.
def isqrt(n): epsilon = .00000000001 i = int(n**.5 + 0.5) if abs(i**2 - n) < epsilon: return i raise ValueError('input was not a perfect square')
Я сравнил различные методы, приведенные здесь, с циклом:
for i in range (1000000): # 700 msec r=int(123456781234567**0.5+0.5) if r**2==123456781234567:rr=r else:rr=-1
что этот самый быстрый и не нуждается в математическом импорте. Очень долго может потерпеть неудачу, но посмотрите на это
15241576832799734552675677489**0.5 = 123456781234567.0
Попробуйте это условие (без дополнительных вычислений):
def isqrt(n): i = math.sqrt(n) if i != int(i): raise ValueError('input was not a perfect square') return i
Если вам нужно, чтобы он возвращал int
(а не float
с конечным нолем), то либо назначить вторую переменную, либо вычислить int(i)
дважды.
Как вычислить квадратный корень в Python
Автор оригинала: Team Python Pool.
В языке непрофессионалов квадратный корень может быть определен как Квадратный корень числа-это значение, которое при умножении на себя дает число. В Python или любом другом языке программирования для вычисления квадратного корня числа у нас есть разные методы. И в этом уроке мы постараемся охватить все методы вычисления квадратного корня из числа.
Для вычисления квадратного корня в Python у нас есть в основном 5 методов или способов. Самый распространенный или самый простой способ-это использование функции математического модуля sqrt. Функция Python sqrt встроена в математический модуль, вы должны импортировать математический пакет (модуль). Функция sqrt в языке программирования python, возвращающая квадратный корень из любого числа (число > 0).
Различные способы вычисления квадратного корня в Python
Как правило, у нас есть способы вычисления квадратного корня в Python, которые упоминаются ниже:
- Использование метода math.sqrt() Использование оператора ** Для вещественных или комплексных чисел с использованием математического модуля Использование цикла Python Квадратный корень из числа с помощью pow()
Вычисление квадратного корня в Python С помощью функции sqrt()
Математический модуль Python имеет дело с математическими функциями и вычислениями. Функция sqrt() в математическом модуле используется для вычисления квадратного корня из заданного числа.
Синтаксис
Ниже приведен синтаксис функции Python sqrt ().
import math
math.sqrt(num)
Параметры
номер – Здесь num может быть любым положительным числом, квадратный корень которого вы хотите.
Возвращаемое значение функции sqrt()
метод sqrt() в Python вернет квадратный корень из заданного числа с плавающей запятой. Если значение меньше 0, то он вернет ошибку времени выполнения.
Совместимость функций Python sqrt()
Python 2.x | Да |
Python 3.x | Да |
Примеры Вычисления Квадратного Корня С Помощью Функции sqrt()
Давайте рассмотрим несколько примеров вычисления квадратного корня Python с помощью функции sqrt ().
Пример 1: Вычисление квадратного корня из положительного целого числа
import math
print("The square root of 25 is",math.sqrt(64))
Выход:
The square root of 25 is 8.0
Пример 2: Вычисление квадратного корня из числа с плавающей запятой
import math
print("The square root of 9.9 is:", math.sqrt(12.9))
Выход:
The square root of 9.9 is: 3.591656999213594
Пример 3: Вычисление квадратного корня из 0
import math
print("The square root of 0 is",math.sqrt(0))
Выход:
The square root of 0 is 0.0
Выход:
import math
print("The square root of -16 is",math.sqrt(-16))
Выход:
Traceback (most recent call last):
File "c:/Users/Karan/Desktop/test.py", line 2, in
print("The square root of -16 is",math.sqrt(-16))
ValueError: math domain error
Таким образом, когда x <0 он не выполняется, вместо этого генерируется ValueError.
Пример 5: Вычисление квадратного корня из постоянной Больцмана
import math
# Find square root of boltzmann constant
.38064852*pow(10,-23)
print("Square root of Boltzmann constant:{}".format(math.sqrt(boltzmannConstant_SqRoot)))
Выход:
Square root of Boltzmann constant:3.715707900252655e-12
Записи:
- функция math.sqrt () – это встроенная функция в языке программирования Python, которая предоставляет квадратный корень из заданного числа. Для работы функции math.sqrt() необходимо импортировать модуль (библиотеку) “math”. Если вы передадите отрицательное значение в функцию sqrt, то python выдаст ошибку
Вычисление квадратного корня в Python с помощью оператора **
** оператор-это оператор экспоненты. а**б (а поднят до степени б).
Шаги по поиску квадратного корня в Python с помощью оператора **
- Определите функцию с именем sqrt(n) Уравнение, n**0.5-это нахождение квадратного корня, а результат хранится в переменной x. Возьмите входные данные от пользователя и сохраните их в переменной n. Функция вызывается для реализации действия и вывода результата. Выход
Пример 1: Вычисление квадратного корня из числа С помощью оператора * *
def sqrt(n):
if n < 0:
return
else:
return n**0.5
print(sqrt(61))
Выход:
Вычисление квадратного корня в Python с помощью модуля cmath
Модуль cmath используется для вычисления квадратного корня в python из Действительного или сложного числа.
Вышеприведенные два метода прекрасно работают для всех положительных вещественных чисел. Но для отрицательных или комплексных чисел это можно сделать следующим образом.
<Пример: Вычисление квадратного корня из числа с помощью math
# Find square root of real or complex numbers
# Import the complex math module
import cmath
# change this value for a different result+2j
# uncommment to take input from the user(input('Enter a number: ')).sqrt(num)
print('The square root of {0} is {1:0.3f}+{2:0.3f}j'.format(num ,num_sqrt.real,num_sqrt.imag))
Выход:
The square root of (1+2j) is 1.272+0.786j
В этой программе мы используем функцию sqrt() в href=”https://docs.python.org/2/library/cmath.html”>cmath (комплексная математика) модуль. Обратите внимание, что мы также использовали функцию eval() вместо float() для преобразования комплексного числа. Кроме того, обратите внимание на то, как форматируются выходные данные. href=”https://docs.python.org/2/library/cmath.html”>cmath (комплексная математика) модуль. Обратите внимание, что мы также использовали функцию eval() вместо float() для преобразования комплексного числа. Кроме того, обратите внимание на то, как форматируются выходные данные.
Вычисление квадратного корня в Python с помощью цикла
Пример:
Выход:
Please Enter any Postive Integer : 5
Enter Exponent Value to the power raise to : 3
The Result of 5 Power
Вычисление Квадратного Корня С Помощью pow()
В этом разделе мы будем использовать встроенный метод pow() для вычисления квадратного корня в Python.
Давайте разберемся, как работает функция pow() в Python.
Метод pow() принимает 2 параметра, первый параметр-числовое значение, а второй параметр-мощность числового значения. Если мы посмотрим на него, то вы заметите, что он похож на то, как мы вычисляли квадратный корень в приведенных выше примерах.
Метод pow() принимает 2 параметра, первый параметр-числовое значение, а второй параметр-мощность числового значения. Если мы посмотрим на него, то вы заметите, что он похож на то, как мы вычисляли квадратный корень в приведенных выше примерах.
Синтаксис
pow(x,y) # где y-сила x или x**y
Пример: Вычисление квадратного корня из числа С помощью pow()
# Python Square root program
import math(input(" Please Enter any numeric Value : "))
.pow(number, 0.5)
print("The Square Root of a Given Number {0} = {1}".format(number, squareRoot))
Выход:
Please Enter any numeric Value: 69
The Square Root of a Given Number.306623862918075
pow() также является предопределенным методом определения мощности числа, он принимает в качестве входных данных два аргумента: первый-само число, а второй — мощность этого числа. Программа такая же, как и первая программа, где мы используем знак ( * * ), чтобы узнать квадратный корень, но единственная разница заключается в том, что здесь мы используем предопределенный метод pow() вместо знака ( * * ), чтобы получить степень этого числа.
Программа Python Для Проверки Того, Является Ли Число Идеальным Квадратом или Нет
Любое число, которое может быть выражено как произведение двух целых равных чисел, классифицируется как совершенный квадрат. Например, 25 можно записать как 5*5, следовательно, 25-идеальный квадрат.
Алгоритм проверять
- Примите входные данные от пользователя Вычислите квадратный корень из заданного числа с помощью математической библиотеки Проверка того, является ли int(root + 0.5) ** 2, если это значение равно True, то число является идеальным квадратом
Пример:
import math
# Taking the input from user(input("Enter the Number: "))
.sqrt(number)
if int(root + 0.5) ** 2:
print(number, "is a perfect square")
else:
print(number, "is not a perfect square")
Выход:
Enter the Number: 81
81 is a perfect square
Функция sqrt() в Numpy для вычисления квадратного корня
numpy — это сторонняя библиотека и модуль, который обеспечивает вычисления матриц, рядов, больших данных и т. Д. Numpy также предоставляет функции sqrt() и pow(), и мы можем использовать эти функции для вычисления квадратного корня.
import numy
numpy.sqrt(9)
//The result is 3
numpy.pow(9,1/2)
//The result is 3
Также Читайте:
Как проверить версию Python в различных ОСPython User Input | Python Input () Function | Keyboard InputPython Stack | Реализация стека в PythonСколько времени требуется Для Изучения Python
Вывод
Поэтому в этом уроке мы попытались рассказать о том, как вычислить Квадратный корень In Python. Мы обсудили все методы и приемы, с помощью которых можно вычислить квадратный корень.
Если у вас еще есть какие-то сомнения или предложения. Дайте нам знать об этом в разделе комментариев ниже.
sqrt | NumPy
numpy.sqrt(x, *ufunc_args) = <ufunc 'sqrt'>
Функция sqrt() вычисляет квадратный корень элементов массива.
Данная функция эквивалентна команде x**0.5
(или x**(1/2)
).
Однако, numpy.sqrt()
является универсальной функцией, т.е. поддерживает целый ряд параметров, которые позволяют оптимизировать ее работу в зависимости от специфики алгоритма, в котором она необходима.
- Параметры:
- x — число, массив или подобный массиву объект
- Входные данные.
- *ufunc_args — аргументы универсальной функции
- Аргументы, позволяющие настроить и оптимизировать работу функции (подробнее см. универсальные функции).
- Возвращает:
- результат — массив NumPy или вещественное число
- Массив вычисленных квадратных корней элементов из x или число, если на вход подано одно число.
Замечание
Данная функция вычисляет квадратные корни только из положительных чисел, но при этом она не возвращает ошибки если на вход подано отрицательное число, вместо этого возвращается значение nan. Если входной массив имеет комплексный тип данных или содержит комплексные числа, то будет вычислен квадратный корень и отрицательных чисел, при этом результат будет преобразован к комплексному типу данных.
Примеры
>>> import numpy as np
>>>
>>> np.sqrt(25)
5.0
>>>
>>> np.sqrt(-1)
__main__:1: RuntimeWarning: invalid value encountered in sqrt
nan
>>>
>>> np.sqrt([2, 3, 5, 7])
array([1.41421356, 1.73205081, 2.23606798, 2.64575131])
>>>
>>> np.sqrt([0.01, 0.04, 0.09, 0.16])
array([0.1, 0.2, 0.3, 0.4])
>>>
>>> np.sqrt([-9, -4, -1, 3 + 4j, 8 + 6j])
array([0.+3.j, 0.+2.j, 0.+1.j, 2.+1.j, 3.+1.j])
>>>
>>> np.sqrt([-np.inf, -0, np.nan, np.inf])
array([nan, 0., nan, inf])
Функция квадратного корня Python — настоящий Python
Смотреть сейчас Это руководство содержит соответствующий видеокурс, созданный командой Real Python. Посмотрите его вместе с письменным руководством, чтобы углубить свое понимание: Функция квадратного корня в Python
Вы пытаетесь решить квадратное уравнение? Возможно, вам нужно рассчитать длину одной стороны прямоугольного треугольника. Для этих и других типов уравнений функция квадратного корня Python sqrt ()
может помочь вам быстро и точно рассчитать ваши решения.
К концу этой статьи вы узнаете:
- Что такое квадратный корень
- Как использовать функцию квадратного корня Python,
sqrt ()
- Когда
sqrt ()
может быть полезным в реальном мире
Погрузимся!
Python Pit Stop: Это руководство представляет собой быстрый и практический способ найти нужную информацию, так что вы вернетесь к своему проекту в кратчайшие сроки!
Квадратные корни в математике
В алгебре квадрат , x , является результатом умножения числа n на само себя: x = n²
Вы можете вычислить квадраты с помощью Python:
>>> >>> п = 5
>>> х = п ** 2
>>> х
25
Оператор Python **
используется для вычисления степени числа.В этом случае 5 в квадрате или 5 в степени 2 равно 25.
Таким образом, квадратный корень — это число n , которое при умножении само на себя дает квадрат x .
В этом примере n , квадратный корень, равен 5.
25 — это пример полного квадрата . Совершенные квадраты — это квадраты целых чисел:
>>> >>> 1 ** 2
1
>>> 2 ** 2
4
>>> 3 ** 2
9
Возможно, вы запомнили некоторые из этих совершенных квадратов, когда выучили свои таблицы умножения на уроках элементарной алгебры.
Если вам дан маленький точный квадрат, может быть достаточно просто вычислить или запомнить его квадратный корень. Но для большинства других квадратов этот расчет может стать немного более утомительным. Часто оценки бывает достаточно, когда у вас нет калькулятора.
К счастью, у вас, как у разработчика Python, есть калькулятор, а именно интерпретатор Python!
Функция квадратного корня Python
Python math
модуль в стандартной библиотеке может помочь вам работать с математическими проблемами в коде.Он содержит множество полезных функций, таких как restder ()
и factorial ()
. Он также включает функцию извлечения квадратного корня Python sqrt ()
.
Вы начнете с импорта math
:
Вот и все, что нужно! Теперь вы можете использовать math.sqrt ()
для вычисления квадратных корней.
sqrt ()
имеет простой интерфейс.
Требуется один параметр, x
, который (как вы видели ранее) обозначает квадрат, для которого вы пытаетесь вычислить квадратный корень.В предыдущем примере это будет 25
.
Возвращаемое значение sqrt ()
— это квадратный корень из x
в виде числа с плавающей запятой. В примере это будет 5,0
.
Давайте рассмотрим несколько примеров того, как (и как не использовать) sqrt ()
.
Квадратный корень положительного числа
Один из типов аргументов, который вы можете передать в sqrt ()
, — это положительное число. Сюда входят типы int
и float
.
Например, вы можете найти квадратный корень из 49
, используя sqrt ()
:
Возвращаемое значение — 7,0
(квадратный корень из 49
) в виде числа с плавающей запятой.
Наряду с целыми числами вы также можете передать значений с плавающей запятой
:
>>> math.sqrt (70.5)
8,396427811873332
Вы можете проверить точность этого квадратного корня, вычислив его обратную величину:
>>> >>> 8.396427811873332 ** 2
70,5
Квадратный корень нуля
Даже 0
— правильный квадрат для передачи функции квадратного корня Python:
Хотя вам, вероятно, не нужно часто вычислять квадратный корень из нуля, вы можете передать переменную в sqrt ()
, значение которой вы на самом деле не знаете. Итак, хорошо знать, что в таких случаях он может обрабатывать ноль.
Квадратный корень отрицательных чисел
Квадрат любого действительного числа не может быть отрицательным.Это потому, что отрицательный результат возможен только в том случае, если один фактор положительный, а другой отрицательный. Квадрат по определению является произведением числа и самого себя, поэтому получить отрицательный действительный квадрат невозможно:
>>> >>> math.sqrt (-25)
Отслеживание (последний вызов последний):
Файл "", строка 1, в
ValueError: ошибка математического домена
Если вы попытаетесь передать отрицательное число в sqrt ()
, вы получите ValueError
, потому что отрицательные числа не входят в область возможных действительных квадратов.Вместо этого квадратный корень отрицательного числа должен быть сложным, что выходит за рамки функции квадратного корня Python.
Квадратных корней в реальном мире
Чтобы увидеть реальное применение функции квадратного корня Python, давайте обратимся к теннису.
Представьте, что Рафаэль Надаль, один из самых быстрых игроков в мире, только что ударил справа из заднего угла, где базовая линия пересекается с боковой линией теннисного корта:
Теперь предположим, что его противник нанес контратакующий удар (тот, который закроет мяч с небольшим ускорением вперед) в противоположный угол, где другая боковая линия встречается с сеткой:
Как далеко Надаль должен бежать, чтобы дотянуться до мяча?
Из нормативных размеров теннисного корта можно определить, что длина базовой линии составляет 27 футов, а длина боковой линии (на одной стороне сетки) — 39 футов.Итак, по сути, это сводится к решению гипотенузы прямоугольного треугольника:
Используя ценное геометрическое уравнение, теорему Пифагора, мы знаем, что a² + b² = c² , где a и b — катеты прямоугольного треугольника, а c — гипотенуза.
Таким образом, мы можем рассчитать расстояние, которое Надаль должен пробежать, переписав уравнение, чтобы найти c :
Вы можете решить это уравнение, используя функцию квадратного корня Python:
>>> >>> a = 27
>>> b = 39
>>> математика.sqrt (а ** 2 + b ** 2)
47.434164569
Итак, Надаль должен пробежать около 47,4 фута (14,5 метра), чтобы дотянуться до мяча и сохранить точку.
Заключение
Поздравляем! Теперь вы знаете все о функции квадратного корня Python.
Вы покрыли:
- Краткое введение в квадратные корни
- Особенности функции квадратного корня Python,
sqrt ()
- Практическое применение
sqrt ()
на реальном примере
Умение использовать sqrt ()
— это только половина дела.Другое дело — понять, когда его использовать. Теперь вы знаете и то, и другое, так что примените свое новое мастерство в использовании функции извлечения квадратного корня в Python!
Смотреть сейчас Это руководство содержит соответствующий видеокурс, созданный командой Real Python. Посмотрите его вместе с письменным руководством, чтобы углубить свое понимание: Функция квадратного корня в Python
Математическая функция Python | sqrt ()
Функция sqrt () — это встроенная функция в языке программирования Python, которая возвращает квадратный корень из любого числа.
Синтаксис: math.sqrt (x) Параметр: x - любое число такое, что x> = 0 Возврат: Возвращает квадратный корень из числа передается в параметре.
|
Выход:
0,0 2.0 1,8708286933869707
Ошибка: Когда x <0, он не выполняется из-за ошибки времени выполнения.
|
Выход:
Отслеживание (последний вызов последний): Файл "/home/67438f8df14f0e41df1b55c6c21499ef.py", строка 8, в печать (math.sqrt (-1)) ValueError: ошибка математического домена
Практическое применение: Проверьте число, если оно простое или нет.
Подход: Выполните цикл от 2 до sqrt (n) и проверьте, делит ли какое-либо число в диапазоне (2-sqrt (n)) n.
|
02
000 Выход: основнойВнимание компьютерщик! Укрепите свои основы с помощью курса Python Programming Foundation и изучите основы.
Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS . И чтобы начать свое путешествие по машинному обучению, присоединяйтесь к Машинное обучение - курс базового уровня
Как вычислить квадратный корень в Python
На непрофессиональном языке квадратный корень можно определить как Квадратный корень из числа - это значение, которое при умножении на себя дает число. В Python или любом другом языке программирования для вычисления квадратного корня числа у нас есть разные методы.В этом уроке мы постараемся охватить все методы вычисления квадратного корня из числа.
Для вычисления квадратного корня в Python у нас есть пять основных методов или способов. Самый распространенный или самый простой способ - использовать функцию sqrt математического модуля. Функция Python sqrt встроена в математический модуль, вам необходимо импортировать математический пакет (модуль). Функция sqrt на языке программирования Python, которая возвращает квадратный корень из любого числа (число> 0).
Различные способы вычисления квадратного корня в Python
Как правило, у нас есть способы вычислить квадратный корень в Python, которые упомянуты ниже:
- Используя математику.Метод sqrt ()
- Использование оператора **
- Для вещественных или комплексных чисел с использованием модуля cmath
- Использование цикла
- Python Квадратный корень из числа с использованием функции pow ()
Вычисление квадратного корня в Python с использованием функции sqrt ()
Математический модульPython занимается математическими функциями и вычислениями. Функция sqrt () в математическом модуле используется для вычисления квадратного корня из заданного числа.
СинтаксисНиже приведен синтаксис функции Python sqrt ().
импорт математики
math.sqrt (число)
Параметры num - Здесь num может быть любым положительным числом, извлекаемым из квадратного корня.
Возвращаемое значение функции sqrt () Методsqrt () в Python вернет квадратный корень из заданного числа с плавающей запятой. Если значение меньше 0, будет возвращена ошибка времени выполнения.
Python
sqrt ()
Совместимость функцийPython 2.x | Да |
Python 3.x | Да |
Примеры вычисления квадратного корня с использованием функции sqrt ()
Рассмотрим несколько примеров вычисления квадратного корня Python с помощью функции sqrt ().
Пример 1: Вычисление квадратного корня из положительного целого числа
импорт математики
print («Квадратный корень из 25 равен», math.sqrt (64))
Выход:
Квадратный корень из 25 равен 8.0
Пример 2: Вычисление квадратного корня из числа с плавающей запятой
импорт математики
print («Квадратный корень из 9,9 равен:», math.sqrt (12,9))
Выход:
Квадратный корень 9,9: 3,591656999213594
Пример 3: Вычисление квадратного корня из 0
импорт математики
print («Квадратный корень из 0 равен», math.sqrt (0))
Выход:
Квадратный корень из 0 равен 0.0
Пример 4: Вычисление квадратного корня отрицательного числа
импорт математики
print («Квадратный корень из -16 равен», math.sqrt (-16))
Выход:
Traceback (последний звонок последний):
Файл "c: /Users/Karan/Desktop/test.py", строка 2, в
print ("Квадратный корень из -16 равен", math.sqrt (-16))
ValueError: ошибка математического домена
Итак, когда x <0, он не выполняется, а вместо этого генерирует ValueError.
Пример 5: Вычисление квадратного корня из постоянной Больцмана
импорт математики
# Найти квадратный корень из постоянной Больцмана
boltzmannConstant_SqRoot = 1,38064852 * pow (10, -23)
print ("Квадратный корень из постоянной Больцмана: {}". format (math.sqrt (boltzmannConstant_SqRoot)))
Выход:
Корень квадратный из постоянной Больцмана: 3,7157072655e-12
Примечания: - Функция math.sqrt () - это встроенная функция в языке программирования Python, которая вычисляет квадратный корень из заданного числа.
- Для работы функции math.sqrt () необходимо импортировать «математический» модуль (библиотеку).
- Если вы передадите отрицательное значение в функцию sqrt, тогда python выдаст ошибку
Расчет квадратного корня в Python с использованием ** оператора
** оператор экспоненты. a ** b (a в степени b).
шагов для поиска квадратного корня в Python с помощью оператора **
- Определите функцию с именем sqrt (n)
- Equation, n ** 0.5 находит квадратный корень, а результат сохраняется в переменной x.
- Принимать ввод от пользователя и сохранять в переменной n.
- Функция вызывается для реализации действия и печати результата.
- Выход
Пример 1: Вычисление квадратного корня числа с помощью оператора **
def sqrt (n):
если n <0:
возвращение
еще:
возврат n ** 0,5
печать (sqrt (61))
Выход:
7.810249675
4
Вычисление квадратного корня в Python с использованием модуля cmath
Модуль cmath используется для вычисления квадратного корня в Python из действительного или комплексного числа .
Два вышеуказанных метода подходят для всех положительных действительных чисел. Но для отрицательных или комплексных чисел это можно сделать следующим образом.
Пример: вычисление квадратного корня числа с помощью cmath
# Найти квадратный корень из действительных или комплексных чисел
# Импортируем сложный математический модуль
импорт cmath
# изменить это значение на другой результат
число = 1 + 2j
# раскомментируйте, чтобы принять ввод от пользователя
#num = eval (input ('Введите число:'))
num_sqrt = cmath.sqrt (число)
print ('Квадратный корень из {0} равен {1: 0.3f} + {2: 0.3f} j'.format (num, num_sqrt.real, num_sqrt.imag))
Выход:
Квадратный корень из (1 + 2j) равен 1,272 + 0,786j
В этой программе мы используем функцию sqrt () в модуле cmath (комплексная математика). Обратите внимание, что мы использовали функцию eval () вместо float () для преобразования комплексного числа. Также обратите внимание на способ форматирования вывода.
Вычисление квадратного корня в Python с использованием цикла
Пример :
num = int (input («Пожалуйста, введите любое положительное целое число:»))
epont = int (input ("Введите значение экспоненты для увеличения степени до:"))
мощность = 1
для цикла в диапазоне (1, epont + 1):
мощность = мощность * число
print ("Результат {0} мощности {1} = {2}".формат (число, epont, мощность))
Выход:
Пожалуйста, введите любое положительное целое число: 5
Введите значение экспоненты для увеличения степени до: 3
Результат 5 степени 3 = 125
Вычисление квадратного корня с помощью pow ()
В этом разделе мы собираемся использовать встроенный метод pow () для вычисления квадратного корня в Python.
Давайте разберемся, как работает функция pow () в Python.
Метод pow () принимает 2 параметра, первый параметр - это числовое значение, а второй параметр - это степень числового значения.Если мы посмотрим на него, то вы заметите, что он похож на способ вычисления квадратного корня в приведенных выше примерах.
Метод pow () принимает 2 параметра, первый параметр - это числовое значение, а второй параметр - это степень числового значения. Если мы посмотрим на него, то вы заметите, что он похож на способ вычисления квадратного корня в приведенных выше примерах.
Синтаксис
pow (x, y) # где y - степень x или x ** y
Пример: вычисление квадратного корня числа с помощью функции pow ()
# Программа для извлечения квадратного корня Python
импортная математика
number = float (input ("Пожалуйста, введите любое числовое значение:"))
squareRoot = математика.pow (число, 0,5)
print ("Квадратный корень заданного числа {0} = {1}". format (number, squareRoot))
Выход:
Введите любое числовое значение: 69
Квадратный корень заданного числа 69.0 = 8.306623862918075
pow () также является предопределенным методом для определения степени числа, он принимает два аргумента в качестве входных данных, первый - это само число, а второй - мощность этого числа. Программа такая же, как и первая программа, в которой мы используем знак (**) для определения квадратного корня, но единственная разница в том, что здесь мы используем предопределенный метод pow () вместо (**) знак, чтобы получить силу этого числа.
Программа Python для проверки, является ли число идеальным квадратом
Любое число, которое может быть выражено как произведение двух целых равных чисел, классифицируется как полный квадрат. Например, 25 можно записать как 5 * 5, следовательно, 25 - это полный квадрат.
Алгоритм для проверки
- Возьмите ввод от пользователя
- Вычислите квадратный корень из заданного числа с помощью математической библиотеки
- Проверка того, является ли int (root + 0,5) ** 2 == число, если оно оценивается как True, то число является полный квадрат
Пример :
импорт математики
# Принимая ввод от пользователя
number = int (input ("Введите число:"))
корень = математика.sqrt (число)
если int (root + 0.5) ** 2 == число:
print (число, «идеальный квадрат»)
еще:
print (число, «не является точным квадратом»)
Выход:
Введите номер: 81
81 - идеальный квадрат
Функция sqrt () в Numpy для вычисления квадратного корня
numpy
- это сторонняя библиотека и модуль, который обеспечивает вычисления для матриц, серий, больших данных и т. Д. Numpy также предоставляет функции sqrt ()
и pow ()
, и мы можем использовать эти функции для вычисления квадратного корня. .
импортные номера
numpy.sqrt (9)
// Результат - 3
numpy.pow (9,1 / 2)
// Результат 3
Также читают:
Как проверить версию Python в различных ОС
Пользовательский ввод Python | Функция Python Input () | Ввод с клавиатуры Стек Python
| Реализация стека в Python
Сколько времени нужно, чтобы изучить Python
Заключение
Итак, в этом руководстве мы попытались объяснить, как вычислить квадратный корень I n Python .
Обсудили все методы и приемы, с помощью которых можно вычислить квадратный корень.
Если у вас остались сомнения или предложения. Дайте нам знать в разделе комментариев ниже.
Удачного кодирования!
math - Целочисленный квадратный корень в Python
Похоже, вы могли бы проверить вот так:
, если int (math.sqrt (n)) ** 2 == n:
напечатайте n, 'это идеальный квадрат'
Обновление:
Как вы отметили, вышесказанное не работает для больших значений n
.Для тех, кто выглядит многообещающим, следующее выглядит многообещающим - это адаптация примера кода C, написанного Мартином Гаем @ UKC, июнь 1985 г., для относительно простого на вид двоичного числового метода вычисления цифр, упомянутого в статье в Википедии Методы вычисления квадратных корней :
из math import ceil, log
def isqrt (n):
res = 0
bit = 4 ** int (ceil (log (n, 4))) if n else 0 # наименьшая степень 4> = аргумент
пока немного:
если n> = res + bit:
n - = res + бит
res = (res >> 1) + бит
еще:
res >> = 1
бит >> = 2
вернуть res
если __name__ == '__main__':
from math import sqrt # для сравнения
для i в диапазоне (17) + [2 ** 53, (10 ** 100 + 1) ** 2]:
is_perfect_sq = isqrt (i) ** 2 == i
print '{: 21, d}: math.sqrt = {: 12, .7G}, isqrt = {: 10, d} {} '. format (
i, sqrt (i), isqrt (i), '(полный квадрат)' if is_perfect_sq else '')
Выход:
0: math.sqrt = 0, isqrt = 0 (полный квадрат)
1: math.sqrt = 1, isqrt = 1 (полный квадрат)
2: math.sqrt = 1.414214, isqrt = 1
3: math.sqrt = 1.732051, isqrt = 1
4: math.sqrt = 2, isqrt = 2 (полный квадрат)
5: математика.sqrt = 2.236068, isqrt = 2
6: math.sqrt = 2.44949, isqrt = 2
7: math.sqrt = 2.645751, isqrt = 2
8: math.sqrt = 2.828427, isqrt = 2
9: math.sqrt = 3, isqrt = 3 (полный квадрат)
10: math.sqrt = 3.162278, isqrt = 3
11: math.sqrt = 3.316625, isqrt = 3
12: math.sqrt = 3.464102, isqrt = 3
13: математика.sqrt = 3.605551, isqrt = 3
14: math.sqrt = 3.741657, isqrt = 3
15: math.sqrt = 3.872983, isqrt = 3
16: math.sqrt = 4, isqrt = 4 (полный квадрат)
9,007,199,254,740,992: math.sqrt = 9.4E + 07, isqrt = 94 906 265
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001: математика.sqrt = 1E + 100, isqrt = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 (идеальный квадрат)
4 метода вычисления квадратного корня в Python
В этом руководстве мы собираемся обсудить различные способы вычисления квадратного корня в Python.
Что такое квадратный корень?
В математике квадратный корень из числа « p » представляет собой число « q », которое следует условию p = q 2 .В Python у нас так много методов для вычисления квадратного корня из чисел. Давайте обсудим некоторые хорошо известные методы в Python для вычисления квадратного корня из чисел.
1. Вычислить квадратный корень с помощью оператора экспоненты.
В этом методе мы определим нашу собственную функцию для нахождения квадратного корня числа. А чтобы вычислить квадратный корень из числа, мы будем использовать оператор экспоненты ( **
) в Python.
Определенная функция будет принимать число в качестве аргумента и возвращать квадратный корень из числа, если он положительный, иначе она выведет предупреждение.Давайте реализуем это в коде Python.
# Определить определяемую пользователем функцию sqrt () # для вычисления квадратного корня числа def sqrt (N): если N <0: print ('Квадратного корня из отрицательного числа не существует!') возвращение еще: print (f'Квадратный корень из числа {N}: {N ** 0,5} ') возвращение # Вызвать определенную выше функцию sqrt () # для вычисления квадратного корня числа sqrt (441) sqrt (0,81) sqrt (6,25) sqrt (634) sqrt (-121)
Выход:
Корень квадратный из числа 441: 21.0 Корень квадратный из числа 0,81: 0,9 Корень квадратный из числа 6,25: 2,5 Корень квадратный из числа 634: 25.179356624028344 Квадратного корня из отрицательного числа не существует!
2. Использование функции sqrt ()
В Python функция sqrt ()
- это предопределенная функция, которая определена в математическом модуле. Функция sqrt ()
возвращает квадратный корень из числа, переданного в качестве аргумента. Давайте посмотрим, как мы можем использовать встроенную функцию sqrt ()
в программе Python.
# Импортировать математический модуль Python импортировать математику как m # Вызов предопределенной функции sqrt () # для вычисления квадратного корня числа print (f'Квадратный корень из числа 121: {m.sqrt (121)} ') print (f'Квадратный корень из числа 0,49: {m.sqrt (0,49)} ') print (f'Квадратный корень из числа 4.41: {m.sqrt (4.41)} ') print (f'Квадратный корень из числа 265: {m.sqrt (265)} ')
Выход:
Корень квадратный из числа 121: 11,0 Корень квадратный из числа 0,49: 0,7 Корень квадратный из числа 4,41: 2,1 Корень квадратный из числа 265: 16.278820596099706
ПРИМЕЧАНИЕ: Если отрицательное число передается в качестве аргумента встроенной функции sqrt (), то она выдаст ошибку математической области . Давайте посмотрим на пример.
# Импортировать математический модуль Python импортировать математику как m # Вызов предопределенной функции sqrt () # для вычисления квадратного корня отрицательного числа м.кв (-125)
Вывод:
Ошибка математической области: sqrt ()3. Использование функции pow ()
В этом методе вычисления квадратного корня мы будем использовать встроенную функцию pow ().В Python функция pow ()
- это предопределенная функция, которая определена в модуле math
. Функция pow ()
принимает два аргумента: один - основание, а другой - показатель степени / степень, и возвращает квадратный корень из числа ( основание ), переданного в качестве первого аргумента. Для вычисления квадратного корня аргумент экспонента / степень равен 0,5 . Давайте посмотрим, как мы можем использовать встроенную функцию pow ()
в программе Python.
# Импортировать математический модуль Python импортировать математику как m # Вызвать предопределенную функцию pow () # для вычисления квадратного корня числа print (f'Квадратный корень из числа 625: {m.pow (625, 0.5)} ') print (f'Квадратный корень из числа 0,64: {m.pow (0,64, 0,5)} ') print (f'Квадратный корень из числа 1,21: {m.pow (1,21, 0,5)} ') print (f'Квадратный корень из числа 7: {m.pow (7, 0.5)} ')
Выход:
Корень квадратный из числа 625: 25,0 Корень квадратный из числа 0,64: 0,8 Корень квадратный из числа 1,21: 1,1 Корень квадратный из числа 7: 2.6457513110645907
ПРИМЕЧАНИЕ: Здесь также, если отрицательное число передается в качестве аргумента встроенной функции pow ()
, тогда она выдаст ошибку математической области .Давайте посмотрим на пример.
# Импортировать математический модуль Python импортировать математику как m # Вызвать предопределенную функцию pow () # для вычисления квадратного корня отрицательного числа м. сила (-121, 0,5)
Вывод: Ошибка математической области
: pow ()4. Использование встроенной функции np.sqrt ()
В этом методе нахождения квадратного корня мы будем использовать встроенную np.sqrt ()
функция. В Python функция np.sqrt ()
- это предопределенная функция, которая определена в модуле numpy.Функция np.sqrt ()
возвращает массив numpy , где каждый элемент является квадратным корнем из соответствующего элемента в массиве numpy, переданном в качестве аргумента. Давайте посмотрим, как мы можем использовать встроенную функцию np.sqrt ()
в программе Python.
# Импортировать модуль Python numpy импортировать numpy как np # Определить массив numpy arr = np.array ([0, 225, 0.36, 6.25, 10, -15]) print ('Массив NumPy:') печать (обр) # Вызвать предопределенную функцию np.sqrt () # для вычисления квадратного корня из каждого элемента # в массиве numpy print ('Возвращенный массив NumPy с квадратными корнями:') печать (нп.sqrt (прибл))
Вывод:
Массив NumPy: [0. 225. 6.25 10. -15. ] Возвращенный массив NumPy с квадратными корнями: [0. 15. 2.5 3.16227766 нан]: 13: RuntimeWarning: в sqrt print обнаружено недопустимое значение (np.sqrt (arr))
ПРИМЕЧАНИЕ: Если в массиве numpy есть отрицательное число и оно передается во встроенную функцию np.sqrt ()
, то она выдаст RuntimeWarning , сообщая, что обнаружено недопустимое значение. в кв.И установите значение nan вместо квадратного корня из отрицательного элемента в возвращаемом массиве numpy.
Заключение
В этом руководстве мы узнали о различных способах вычисления квадратного корня из чисел в Python. Мы также узнали, как использовать функции Python, такие как math.sqrt ()
, math.pow ()
и numpy.sqrt ()
. Надеюсь, вы хорошо поняли, и с нетерпением ждете возможности исследовать и узнать больше.
Python sqrt: практическое руководство
Если вы не гений математики, вы не запомните все квадратные корни.И даже если вы это сделали, кто-то другой, смотрящий на ваш код, может не знать, что вы. Это означает, что им, возможно, придется перепроверить, что вы написали правильные квадратные корни - это просто переделка работы.
Найди свой матч на тренировочном лагере
- Карьера Карма подойдет вам с лучшими техническими учебными курсами
- Получите эксклюзивные стипендии и подготовительные курсы
Найди свой матч на тренировочном лагере
- Карьера Карма подойдет вам с лучшими техническими учебными курсами
- Получите эксклюзивные стипендии и подготовительные курсы
Если вы использовали функцию квадратного корня Python, ясно, что вычисляется квадратный корень.Другой человек, смотрящий на ваш код, знал бы, что точен. В качестве дополнительного бонуса никто не должен открывать свой калькулятор!
Что такое Python sqrt ()?
Используете ли вы теорему Пифагора или работаете над квадратным уравнением, функция извлечения квадратного корня Python - sqrt () - может помочь вам решить ваши проблемы. Как вы уже догадались, sqrt ()
вернет квадрат числа, переданного вами в качестве параметра.
Метод sqrt ()
может быть полезен, поскольку он быстрый и точный.В этом кратком руководстве рассматривается, что вы можете передать в качестве параметра sqrt ()
, способы обхода недопустимых параметров и пример, который поможет вам понять. Вы можете получить квадратный корень из числа, возведя его в степень 0,5 с помощью оператора экспоненты Python (**) или функции pow ()
.
Найди свой матч на тренировочном лагере
- Карьера Карма подойдет вам с лучшими техническими учебными курсами
- Получите эксклюзивные стипендии и подготовительные курсы
81 ** 0.5 // Результат будет 9.0
Когда вы работаете с несколькими числами, требующими квадратного корня, вы обнаружите, что использование функции sqrt ()
более элегантно, чем использование нескольких операторов экспоненты с «0,5». Кроме того, это более понятно. Можно легко забыть или пропустить лишнюю звездочку («*»), которая полностью превратит оператор в оператор умножения, что даст вам совершенно другой результат.
Синтаксис функции квадратного корня Python
Общий синтаксис, используемый для вызова функции sqrt ()
:
В приведенном выше фрагменте кода «x» - это число, квадратный корень которого вы хотите вычислить.Число, которое вы передаете в качестве параметра функции извлечения квадратного корня, может быть больше или равно 0. Обратите внимание, что вы можете передать только одно число.
Но что означает «математическая» часть в приведенном выше синтаксисе? Математический модуль - это библиотека Python, которая содержит множество полезных математических функций, одной из которых является функция sqrt ()
. Чтобы использовать sqrt ()
, вам нужно будет импортировать математический модуль, так как именно там хранится код для выполнения функции. Добавляя к sqrt ()
префикс «math», компилятор знает, что вы используете функцию sqrt ()
, принадлежащую библиотеке «math».
Карьера Карма вошла в мою жизнь, когда я больше всего в ней нуждалась, и быстро помогла мне пройти тренировочный лагерь. Через два месяца после выпуска я нашла работу своей мечты, которая соответствовала моим ценностям и целям в жизни!
Venus, инженер-программист Rockbot
Найдите свой матч на учебном лагереКарьера Карма вошла в мою жизнь, когда я больше всего в ней нуждалась, и быстро помогла мне пройти тренировочный лагерь. Через два месяца после выпуска я нашла работу своей мечты, которая соответствовала моим ценностям и целям в жизни!
Venus, инженер-программист Rockbot
Найдите свой матч на учебном лагере Чтобы импортировать математический модуль, введите ключевое слово «import» вместе с именем модуля - в данном случае «math».Оператор импорта - это простая строка, которую вы пишете перед кодом, содержащим функцию sqrt ()
:
Результатом функции извлечения квадратного корня является число с плавающей запятой (float). Например, результатом использования sqrt ()
на 81 будет 9,0, что является числом с плавающей запятой.
Включите математический оператор импорта в начало любого сеанса файла или терминала / консоли, который содержит код, использующий sqrt ()
.
Как использовать метод sqrt () Python
Вы можете передавать положительные числа типа float или int (integer).В предыдущем примере мы видели int, 81, как параметр. Но мы также можем передать число с плавающей запятой, 70,5, например:
math.sqrt (79,5) # 8.916277250063503
Результат этого вычисления: 8.916277250063503. Как видите, результат довольно точный. Теперь вы можете понять, почему имеет смысл, что результат всегда будет двойным, даже если квадратный корень из числа такой же простой, как «9».
Вы также можете передать переменную, представляющую число:
yourValue = 90 математика.sqrt (ваше значение) # 9.486832980505138
И вы также можете сохранить результат в переменной:
sqrtOfValue = math.sqrt (вашеЗначение)
Сохранение этого в переменной упростит вывод на экран:
print ("Квадратный корень равен", sqrtOfValue) # Квадратный корень: 9,486832980505138
Работа с отрицательными числами с помощью abs ()
Квадратный корень любого числа не может быть отрицательным. Это потому, что квадрат является произведением самого числа, и если вы умножите два отрицательных числа, отрицательные числа уравняются, и результат всегда будет положительным.Если вы попытаетесь передать отрицательное число в sqrt ()
, вы получите сообщение об ошибке, и ваш расчет не будет выполнен.
Функция abs ()
возвращает абсолютное значение заданного числа. Абсолютное значение -9 будет 9. Аналогично, абсолютное значение 9 равно 9. Поскольку sqrt ()
предназначен для работы с положительными числами, отрицательное число вызовет исключение ValueError.
Предположим, вы передаете переменные в sqrt ()
и не можете узнать, все ли они положительны, не проверив длинные строки кода, чтобы найти значения переменных.В то же время вы также не хотите, чтобы на вас выдавалось исключение ValueError. Даже если вы посмотрите, может войти другой программист и непреднамеренно добавить отрицательную переменную, тогда ваш код выдаст ошибку. Чтобы предотвратить это безумие, вы можете использовать abs ()
:
negativeValue = -9 math.sqrt (абс (отрицательное значение)) # 3.0
Или, альтернативно:
math.sqrt (абс (-81)) # 9.0
Функция abs ()
примет ваше значение и преобразует его в абсолютное значение (в данном случае 81).Затем неотрицательное абсолютное значение будет передано в функцию sqrt ()
, что нам и нужно, чтобы не получить надоедливых ошибок!
Понимание списка и sqrt ()
Что делать, если у вас есть несколько чисел, квадратные корни которых вы хотели бы получить? Вы можете вычислить квадратный корень для всего в одной строке, используя встроенный цикл for, который называется составлением списка.
Сначала составьте список значений, квадратные корни которых вы хотите получить.
числа = [21, 30, 9.75, 55, 77]
Во-вторых, давайте переберем список с помощью выражения для цикла, чтобы получить квадратный корень для каждого значения. Синтаксис встроенного выражения цикла for - это число в числах, где «число» - это каждый член списка, который мы назвали «числами». Мы сохраним результаты в списке, который назовем «квадратные числа».
в квадрате чисел = [math.sqrt (число) для числа в числах]
Используйте оператор print ()
, чтобы увидеть результаты возведения списка чисел в квадрат.
print ("Квадратные корни:", squaredNumbers) # Квадратные корни: [4.58257569495584, 5.477225575051661, 3.122498999199199, # 7.416198487095663, 8.774964387392123]
для операторов и sqrt ()
Вы также можете использовать типичный цикл for. Хотя использование типичного цикла for означает, что вам нужно написать больше строк кода, чем в приведенном выше примере, некоторые люди могут легче читать циклы for.
Сначала объявите список, в котором вы хотите сохранить вычисленные значения.
Мы будем использовать тот же список значений («числа»), что и в предыдущем примере, и перебираем каждый его элемент, который мы назвали «числом».
для номера в цифрах: squaredNumbers.append (math.sqrt (число))
Теперь, если вы распечатаете этот новый список чисел в квадрате, вы получите тот же результат, что и в предыдущем примере.
print ("Квадратные корни:", squaredNumbers) # Квадратные корни: [4.58257569495584, 5.477225575051661, 3.122498999199199, 7.416198487095663, 8.774964387392123]
Пример с sqrt (): Диагональные расстояния
Существует много вариантов использования sqrt ()
. Одним из примеров является то, что вы можете использовать его, чтобы найти диагональное расстояние между двумя точками, которые пересекаются под прямым углом, например, углы улиц или точки на поле или на схеме чертежа.
Это связано с тем, что диагональное расстояние между двумя точками, пересекающимися под прямым углом, было бы эквивалентно гипотенузе треугольника, и для этого вы можете использовать теорему Пифагора (a 2 + b 2 ) = c 2 , в котором используются квадратные корни.Эта формула очень удобна, потому что на городских улицах, на чертежах домов и в полях можно легко получить измерения длины и ширины, но не для диагоналей между ними.
Чтобы получить длину, необходимо использовать sqrt ()
для гипотенузы c 2 . Другой способ переписать теорему Пифагора: c = √a 2 + b 2 . Представим, что мы проехали круговую трассу в нашем местном парке в форме треугольника.
Мы пробежали по длине и ширине, а затем вернулись к исходной точке.Чтобы точно подсчитать, сколько футов вы пробежали, вы можете рассчитать футы диагонального пути, который вы пересекаете, используя длину и ширину (чью длину в футах вы можете сохранить как переменные «a» и «b») парк:
импорт математики а = 27 б = 39 math.sqrt (a ** 2 + b ** 2)
Результатом будет 47.434164569. Итак, когда вы добавляете это к двум другим длинам, вы знаете, и вот оно, у вас есть. Общее количество футов, которое вы пробежали по дорожке в форме прямоугольного треугольника в парке.
Что еще можно сделать с помощью Sqrt ()?
Теперь, когда вы знаете основы, возможности безграничны. Например:
- Используйте его в формуле для определения простых чисел.
- Выполните любое количество операций, требующих точного квадратного корня.
- Используйте его для расчета расстояний.
В этой статье вы узнали, как использовать sqrt ()
с положительными и отрицательными числами, списками и как переработать теорему Пифагора, чтобы четыре математических вычисления выполнялись с помощью sqrt ()
.
Вам нужно работать с целыми числами вместо чисел с плавающей запятой? math.isqrt ()
выводит квадрат как целое число и округляет его до ближайшего целого. Вы даже можете использовать sqrt ()
с библиотеками, отличными от «математической» библиотеки, такой как numPy, библиотека Python, используемая для работы с массивами.
Как найти квадратный корень в Python
Всем привет, в этом руководстве я покажу 3 способа найти квадратный корень в Python.
Давайте посмотрим, как это сделать.
1. Использование экспоненты
число = int (input ("введите число:")) sqrt = число ** 0,5 print ("квадратный корень:", sqrt)
число = int (input ("введите число:")) sqrt = number ** 0,5 print ("квадратный корень:", sqrt ) |
Выход:
введите число: 64
квадратный корень: 8.0
В приведенной выше программе сначала мы берем число от пользователя в качестве ввода, а вводим значение будет преобразовано в int из строки и сохранится в переменной с именем number. Затем мы используем знак экспоненты (**), который используется для определения степени числа. Но мы знаем, что если число имеет степень ½ или 0,5, то оно представляет собой квадратный корень из этого числа. Вот почему здесь мы используем 0,5 в качестве мощности. Таким образом, число ** 0,5 даст нам квадратный корень из этого числа и будет сохранено в переменной с именем sqrt. В последней строке мы просто печатаем квадратный корень из числа.
2. Использование метода math.sqrt ()
import math number = int (input ("введите число:")) sqrt = math.sqrt (число) print ("квадратный корень:", sqrt)
import math number = int (input ("введите число:")) sqrt = math.sqrt (number) print (" квадратный корень: ", sqrt) |
sqrt () - это предопределенный метод, используемый для нахождения квадратного корня в Python. Но мы должны импортировать математический модуль , чтобы использовать метод sqrt (). В первой строке мы импортируем математический модуль , затем в следующую строку - , получая данные от пользователя.После этого мы находим квадратный корень из числа с помощью метода sqrt () , и результат будет сохранен в переменной sqrt . В последней строке просто выводите квадратный корень, как в первой программе.
3. Использование метода math.pow ()
import math number = int (input ("введите число:")) sqrt = math.pow (число, 0,5) print ("квадратный корень:", sqrt)
import math number = int (input ("введите число:")) sqrt = math.pow (число, 0,5) print ("квадратный корень:", sqrt) |
pow () также является предопределенным методом для определения степени числа, он принимает два аргумента в качестве входных данных, первый - это само число, а второй - степень этого числа.