한양과학기술고등학교

에듀테크 프로젝트 대시보드

뉴턴–랩슨법 (Newton's Method)

f(x) = 0 이 되는 x(방정식의 근)를 손으로 못 풀 때가 많다. 예를 들어 x⁵ − x − 1 = 0 은 근의 공식이 아예 없다. 뉴턴–랩슨법은 아주 단순한 아이디어로 이걸 푼다 — 대충 찍은 값 x₀ 에서 곡선에 접선을 긋고, 그 접선이 x축과 만나는 점을 다음 후보 x₁ 로 삼는다. 곡선은 접선 근처에서 거의 직선처럼 보이므로, x₁ 은 진짜 근에 훨씬 가까워진다. 이걸 반복하면 맞는 자릿수가 매 단계마다 대략 2배로 늘어난다(2차 수렴). 계산기의 √, ÷, 그래픽스 엔진의 역제곱근, 최적화 solver가 모두 이 방법에 뿌리를 둔다.

xn+1  =  xn  −  f(xn) / f'(xn)   ( 접선 y = f(xn) + f'(xn)(x−xn) 이 0 이 되는 x )

접선 반복 시뮬레이터 — 근을 향해 미끄러지기

반복 n
0
현재 xₙ
3.000000
f(xₙ)
7.000000
f'(xₙ)
6.000000
근과의 오차
—
접선 한 번 을 눌러 보세요. 노란 점이 곡선 위 현재 위치 (xₙ, f(xₙ)), 초록 점선이 그 지점의 접선입니다. 접선이 x축(y=0)과 만나는 곳이 다음 xₙ₊₁ 입니다.

계산기는 어떻게 √를 구할까 — 바빌로니아 방법

√S 는 f(x) = x² − S = 0 의 양의 근이다. 뉴턴 공식에 넣으면 x ← (x + S/x) / 2 — 지금 추정값과 S/추정값의 평균이라는 아주 외우기 쉬운 반복식이 나온다. 나눗셈·평균만으로 √가 계산된다.

nxₙxₙ²오차
정답:
시작값을 1 로만 잡아도 보통 5~6번 안에 소수점 아래 10자리까지 맞는다. 틀린 자릿수가 매 줄 대략 제곱으로 줄어드는 것에 주목.

알고리즘

def newton(f, df, x, iters=50, tol=1e-12):
    for n in range(iters):
        fx = f(x)
        if abs(fx) < tol:            # f(x)가 거의 0 → 근 도착
            return x
        dfx = df(x)
        if dfx == 0:                  # 접선이 수평 → x축과 안 만남 (실패)
            raise ZeroDivisionError
        x = x - fx / dfx               # ★ 접선이 x축과 만나는 점으로 이동
    return x

# 예: x⁵ - x - 1 = 0  (근의 공식이 없는 5차 방정식)
root = newton(lambda x: x**5 - x - 1,
              lambda x: 5*x**4 - 1, x=1.5)
# → 1.1673039782614187 (몇 번 만에 double 정밀도 한계까지)

# 도함수 df를 못 구하면 → 割線法(secant): 두 점을 잇는 직선으로 근사
#   x2 = x1 - f(x1)*(x1 - x0) / (f(x1) - f(x0))
  • 2차 수렴: 근 근처에서 오차 eₙ₊₁ ≈ C·eₙ². 맞는 자릿수가 3 → 6 → 12 → … 로 배가된다. 이분법(bisection)은 한 번에 자릿수가 약 0.3개씩만 는다.
  • 필요한 것: 함수값 f(x) 와 도함수 f'(x), 그리고 근에 충분히 가까운 시작값.
  • 수렴하면 아주 빠르지만, 수렴을 보장하지는 않는다 — 시작값이 나쁘면 엉뚱한 근으로 가거나 발산·진동한다.

언제 실패하나 — 뉴턴법의 함정

상황무슨 일이 벌어지나대처
f'(x) = 0 (극값)접선이 수평이라 x축과 안 만남 → 다음 값이 무한대로 튐시작값 바꾸기
변곡점 근처 진동x₀, x₁, x₀, x₁ … 두 값을 오가는 2-사이클에 갇힘 (예: x³−2x+2, x₀=0)감쇠(damped) 뉴턴
먼 시작값가까운 근을 지나쳐 다른 근으로 수렴 — "뉴턴 프랙탈"의 원인이분법으로 좁힌 뒤 전환
근에서 f'=0 (중근)여전히 수렴하지만 속도가 1차로 느려짐중복도 m 곱하기
도함수가 비쌈/불가매 반복마다 f' 계산이 부담割線法·준뉴턴(BFGS)
  • 안전한 실전 solver는 뉴턴법과 이분법을 섞는다(Brent 법): 뉴턴 걸음이 구간 밖으로 나가면 이분법으로 되돌린다.
  • 위 시뮬레이터의 x³ − 2x + 2 (함정) 버튼으로 시작값 x₀ ≈ 0 을 주면 2-사이클 진동을, x² − 2 에서 x₀ = 0 을 주면 f'=0 발산을 직접 볼 수 있다.

이분법(Bisection) vs 뉴턴법 — 같은 근, 다른 속도

이분법뉴턴–랩슨법
필요 정보부호가 다른 두 점 [a,b]f(x), f'(x), 시작값 1개
수렴 속도1차 (매번 구간 절반)2차 (자릿수 배가)
√2 를 12자리까지약 40 회약 5 회
수렴 보장항상 (구간만 맞으면)아니오 (시작값에 민감)
도함수필요 없음필요