본문 바로가기
카테고리 없음

뉴턴 방법 예시

by Saltycrocodile 2026. 2. 23.

뉴턴 공식

import sys
import stdio

EPSILON = 1e-15

# 명령줄에서 값 입력
c = float(sys.argv[1])

# 초기 추측값 (아무 값이나 가능하지만 보통 1.0으로 시작)
x = 1.0

# 뉴턴 반복
while True:
    fx = x**3 - c          # f(x)
    fpx = 3 * x**2         # f'(x)

    new_x = x - fx / fpx   # 뉴턴 공식

    # 충분히 가까워지면 종료
    if abs(new_x - x) < EPSILON:
        break

    x = new_x

    x1 = round(new_x,3)
    

stdio.writeln("근사값: " + str(new_x))
stdio.writeln("근사값: " + str(x1))

 

 

뉴턴 방법을 통해서 어떤 함수에 대한 f(x) = 0에 대한 x값을 근사적으로 구해낼 수 있다. 

다만, 뉴턴 방법도 깔끔하게 해결되지 않는 경우가 있다 함수가 매끄럽게(미분 가능) 생겼고 해 근처에서 기울기가 0이 아니고 시작값을 해 근처에서 잡으면 매우 빠르게 구하고자 하는 x값에 수렴하다. 아래의 예시를 살펴보자 아래 방정식의 경우 해를 깔끔하게 정리할 수가 없다. 그러나 뉴턴 방법을 사용하면 3~4번 반복만으로 거의 정확한 해를 구해준다.

 

 

 

 

따라서 뉴턴 공식에 따라 x_new의 값은 다음과 같다.

 

import math

x = 1.0
EPSILON = 1e-15

while True:
    fx = math.cos(x) - x
    fpx = -math.sin(x) - 1

    new_x = x - fx / fpx

    if abs(new_x - x) < EPSILON:
        break

    x = new_x

print(new_x)