IT박스

파이썬에서 제곱근을 어떻게 계산합니까?

itboxs 2020. 7. 13. 21:43
반응형

파이썬에서 제곱근을 어떻게 계산합니까?


파이썬이 왜 "잘못된"대답을합니까?

x = 16

sqrt = x**(.5)
returns 4

sqrt = x**(1/2)
returns 1

예, 알고 import math사용 sqrt합니다. 그러나 위의 답변을 찾고 있습니다.


sqrt=x**(1/2)정수 나누기를하고 있습니다. 1/2 == 0.

따라서 첫 번째 인스턴스에서 x (1/2)계산 하고 두 번째 인스턴스에서 x (0) 을 계산합니다.

따라서 잘못된 것이 아닙니다. 다른 질문에 대한 정답입니다.


을 작성해야합니다. sqrt = x**(1/2.0)그렇지 않으면 정수 나누기가 수행되고 표현식이을 1/2리턴합니다 0.

이 동작은 Python 2.x에서 "정상"인 반면 Python 3.x에서는로 1/2평가됩니다 0.5. 당신이 당신의 파이썬 2.x에서 코드가 3.X의 WRT 부문 쓰기처럼 행동하려는 경우 from __future__ import division- 다음 1/2에 평가합니다 0.5및 이전 버전과의 호환성을 위해 1//2로 평가합니다 0.

그리고 기록을 위해 제곱근을 계산하는 기본 방법은 다음과 같습니다.

import math
math.sqrt(x)

import math
math.sqrt( x )

답변 체인에 사소한 추가 사항입니다. 그러나 주제는 매우 일반적인 Google 히트이므로 추가해야합니다.


/ 파이썬 2에서 정수 나누기를 수행합니다.

>>> 1/2
0

숫자 중 하나가 부동 소수점이면 예상대로 작동합니다.

>>> 1.0/2
0.5
>>> 16**(1.0/2)
4.0

당신이보고있는 것은 정수 나누기입니다. 기본적으로 부동 소수점 나누기를 얻으려면

from __future__ import division

또는 1/2의 1 또는 2를 부동 소수점 값으로 변환 할 수 있습니다.

sqrt = x**(1.0/2)

대답하기에는 약간 늦었지만 제곱근을 계산하는 가장 간단하고 정확한 방법은 뉴턴의 방법입니다.

제곱근을 계산할 숫자가 있고 제곱근을 (num)추측 할 수 있습니다 (estimate). 견적은 0보다 큰 숫자 일 수 있지만 의미가있는 숫자는 재귀 호출 깊이를 크게 단축시킵니다.

new_estimate = (estimate + num / estimate) / 2

이 선은이 두 모수로보다 정확한 추정값을 계산합니다. new_estimate 값을 함수에 전달하고 이전 값보다 정확한 다른 new_estimate를 계산하거나 이와 같은 재귀 함수 정의를 만들 수 있습니다.

def newtons_method(num, estimate):
    # Computing a new_estimate
    new_estimate = (estimate + num / estimate) / 2
    print(new_estimate)
    # Base Case: Comparing our estimate with built-in functions value
    if new_estimate == math.sqrt(num):
        return True
    else:
        return newtons_method(num, new_estimate)

예를 들어 30의 제곱근을 찾아야합니다. 결과는 5와 6 사이라는 것을 알고 있습니다.

newtons_method(30,5)

각 재귀 호출의 결과는 다음과 같습니다.

5.5
5.477272727272727
5.4772255752546215
5.477225575051661

The last result is the most accurate computation of the square root of number. It is the same value as the built-in function math.sqrt().


Perhaps a simple way to remember: add a dot after the numerator (or denominator)

16 ** (1. / 2)   # 4
289 ** (1. / 2)  # 17
27 ** (1. / 3)   # 3

You can use NumPy to calculate square roots of arrays:

 import numpy as np
 np.sqrt([1, 4, 9])

I hope the below mentioned code will answer your question.

def root(x,a):
    y = 1 / a
    y = float(y)
    print y
    z = x ** y
    print z

base = input("Please input the base value:")
power = float(input("Please input the root value:"))


root(base,power) 

참고URL : https://stackoverflow.com/questions/9595135/how-do-i-calculate-square-root-in-python

반응형