2016-09-02 3 views
0

최근에 sqrt()을 사용하지 않고 python에 숫자의 제곱근을 찾으려고했습니다. 이 코드를 가로 질러 와서이 코드의 논리를 이해하는 데 어려움을 겪고 :math.sqrt()를 사용하지 않고 평방근 찾기?

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 

더 구체적으로 위의 코드에 guess을 계산 뒤에 논리를. 논리를 이해하는 데 도움을 줄 수 있습니까?

+10

https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method –

+1

당신이 붙어있는 곳 설명해주십시오 : 당신의 "제곱근 알고리즘"에 대한 웹 검색을 통해 질문에 대한 답변을 얻을 수 있습니다. 이것은 뉴턴의 방법 (제곱근에 적용됨) 또는 바빌론 방법으로도 알려져 있습니다. – Prune

+0

논리 : 마지막 추측을 숫자의 1/2로 초기화합니다. 마지막 추측의 평균 인 평균 추측치와 마지막 추측치로 나눈 숫자를 계산합니다. 이 새로운 값이 마지막 값과 충분히 다른지 확인하여 답으로 반환합니다. 그렇지 않다면, 마지막 추측을 새 것으로 만들고 프로세스를 반복하십시오. 이 평균화 프로세스의 각 반복이 대답에 더 가깝다고 가정합니다. – martineau

답변

2

당신은 항상 전원 역 지수와 (**) 연산자를 사용할 수 있습니다

a = 2 ** (1.0/2) 
a 
> 1.41421... 
+1

... 나는 이것이 당신이 알고 싶어하는 것이 아니라고 의심하지만 ... – heltonbiker

+0

간단하게'2 ** 0.5' –

+1

나는 전력 운영자를 알고 있지만 내 포스트에서 언급 한 코드의 논리를 이해하고 싶었다. – user2916886