더북(TheBook)

프로그램 1.3.6 뉴턴 방법 (sqrt.py)

import sys 
import stdio
 
EPSILON = 1e-15
 
c = float(sys.argv[1])
t = c
while abs(t - c/t) > (EPSILON * t):
    # t를 t와 c/t의 평균값으로 설정한다.
    t = (c/t + t) / 2.0
 
stdio.writeln(t)
c
EPSILON
t
인수
허용 오차
c의 추정 값

이 프로그램은 명령 줄 인수로 양의 정수 c를 입력받고 c의 제곱근을 소수점 15자리까지 정확히 출력한다. 이 프로그램은 뉴턴 방법을 사용해 제곱근을 계산한다.

% python3 sqrt.py 2.0
1.414213562373095
% python3 sqrt.py 2544545
1595.1630010754388

반복 수

t

c/t

1

2.00000000000

1.0

2

1.50000000000

1.33333333333

3

1.41666666667

1.41176470588

4

1.41421568627

1.41421143847

5

1.41421356237

1.41421356237

c가 2.0일 때의 추적

 

▲ 그림 1.3.9 y = x2 - 2 그래프

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