더북(TheBook)

제곱근 계산 파이썬 math 모듈에서 math.sqrt() 같은 함수는 어떻게 구현했을까? [프로그램 1.3.6](sqrt.py)은 근을 구하는 기법 중 하나를 보여준다. 제곱근을 구하기 위해 이 함수는 4천 년 전 바빌로니아 사람들이 알고 있던 반복 계산법을 사용한다. 이것은 17세기 뉴턴(Isaac Newton)과 랩슨(Joseph Raphson)에 의해 개발되어 뉴턴 방법(Newton’s method)이라고 널리 알려진 범용 계산 기법의 한 가지 예이기도 하다. 뉴턴 방법은 일반적인 상황에서 주어진 함수 f(x)의 근(f(x) = 0일 때의 x 값)을 구하는 효율적인 방법을 제공한다. 먼저 초기 추정 값 t0에서 시작한다. 추정 값 ti가 주어지면 점 (ti, f(ti))에서 곡선 y = f(x)의 접선을 그려 x축과 만나는 곳을 계산해 다음 추정 값 ti+1로 설정한다. 이 과정을 반복하면 근에 점점 더 가까워진다.

▲ 그림 1.3.8 뉴턴 방법

 

양수 c의 제곱근을 계산하는 것은 함수 f(x) = x2 - c의 양의 근을 구하는 것과 같다. 뉴턴 방법을 제곱근을 구하는 데 적용하면 sqrt.py([프로그램 1.3.6]과 [연습문제 1.3.17] 참조)에 구현된 과정이 된다. 먼저 초기 추정 값 t = c로 시작한다. tc / t와 같으면 tc의 제곱근이며, 계산을 완료한다. 그렇지 않으면 tc / t의 평균값을 t에 설정하고 과정을 반복한다. 뉴턴 방법을 이용하면 루프를 단지 5번 반복해 2의 제곱근을 소수점 15째자리까지 정확히 구할 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.