뉴턴-랩슨법

편집 역사 토론
수치해석 마지막 수정: 2026-07-03 16:35:29

뉴턴-랩슨법
Newton–Raphson Method
분야수치해석 × 근 찾기
목적비선형 방정식 $f(x)=0$의 근
수렴 차수2차 (국소적)
필요 정보함수값 $f$와 도함수 $f'$
다변수판야코비안 기반 반복

1. 개요[편집]

접선을 긋고, 그 접선이 만나는 x축 위 점으로 점프한다. 될 때까지.

뉴턴-랩슨법(Newton–Raphson method)은 비선형 방정식 f(x)=0f(x)=0근을 접선 근사를 반복 적용하여 찾아가는 수치해석 기법이다. 아이작 뉴턴과 조지프 랩슨이 17세기에 각각 정립했으며1, 반복식은 다음과 같다.

xn+1=xnf(xn)f(xn)x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}

간단해 보이는 이 한 줄이 시뮬레이션 세계의 뒤편에서 어마어마한 양의 일을 하고 있다. 비선형 구조해석의 평형 반복, SIMPLE 알고리즘 같은 CFD 압력-속도 연성, 암시적 시간 적분의 내부 방정식 풀이 등 “비선형 방정식을 풀어야 한다”는 상황이 나오면 십중팔구 뉴턴이 등장한다. 현대 수치 시뮬레이션의 숨은 일꾼이라 해도 과언이 아니다.

2. 반복식 유도[편집]

발상은 테일러 전개다. 근 근처에서 ff를 1차까지 전개하면

f(xn+1)f(xn)+f(xn)(xn+1xn)f(x_{n+1}) \approx f(x_n) + f'(x_n)(x_{n+1} - x_n)

우리가 원하는 것은 f(xn+1)=0f(x_{n+1}) = 0이므로, 이를 xn+1x_{n+1}에 대해 풀면

xn+1=xnf(xn)f(xn)x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}

즉 뉴턴법은 매 스텝 “곡선을 접선으로 대신”하고, 그 접선이 x축과 만나는 지점으로 뛰어넘는 것을 반복한다. 곡선을 국소적으로 직선이라 우기는 뻔뻔함이 이 방법의 힘이자 약점이다.

3. 기하학적 의미: 접선[편집]

기하학적으로 뉴턴법은 접선 스케이팅이다. 현재 추정값 xnx_n에서 곡선에 접선을 긋는다. 그 접선이 x축과 만나는 점이 다음 추정값 xn+1x_{n+1}이 된다. 곡선이 완만하고 근처에 근이 있으면, 접선의 교점은 진짜 근에 놀랍도록 빠르게 다가간다.

뉴턴법은 곡선을 믿지 않는다. 오직 지금 이 순간의 접선만 믿는다. 그 신념이 통할 때는 마법 같지만, 배신당하면 우주 밖으로 튕겨 나간다.

이 접선 해석 덕분에 뉴턴법은 손으로 그림을 그려가며 이해하기 좋고, 왜 특정 상황에서 실패하는지도 그림으로 바로 보인다(후술).

4. 2차 수렴[편집]

뉴턴법의 최대 매력은 2차 수렴(quadratic convergence)이다. 근 xx^* 근처에서 오차 en=xnxe_n = x_n - x^*

en+1Cen2|e_{n+1}| \approx C\, |e_n|^2

로 줄어든다. 이게 무슨 뜻이냐면, 정답과 일치하는 유효숫자 자릿수가 매 스텝 대략 두 배로 늘어난다는 것이다. 오차가 10210^{-2}였다면 다음엔 10410^{-4}, 그다음엔 10810^{-8}, 그다음엔 101610^{-16} — 서너 번 반복이면 배정밀도 한계에 도달한다. 이 무지막지한 속도가 뉴턴법이 근 찾기의 왕좌를 지키는 이유다. 단, 이 2차 수렴은 어디까지나 초기값이 근에 충분히 가깝고 근이 단순근일 때 보장되는 국소적 성질이라는 단서가 붙는다.

5. 다변수판과 야코비안[편집]

실제 시뮬레이션에서 푸는 것은 스칼라 방정식 하나가 아니라 미지수 수천~수백만 개의 연립 비선형 방정식 F(x)=0\mathbf{F}(\mathbf{x}) = \mathbf{0}이다. 이 경우 도함수 ff'의 자리를 야코비안 행렬(Jacobian) J\mathbf{J}가 대신한다.

J(xn)Δx=F(xn),xn+1=xn+Δx\mathbf{J}(\mathbf{x}_n)\, \Delta \mathbf{x} = -\mathbf{F}(\mathbf{x}_n), \qquad \mathbf{x}_{n+1} = \mathbf{x}_n + \Delta \mathbf{x}

여기서 Jij=Fi/xjJ_{ij} = \partial F_i / \partial x_j이다. 스칼라판에서 ff'로 나누던 것이, 다변수판에서는 야코비안 선형계를 푸는 것으로 바뀐 셈. 문제는 이 선형계 풀이가 매 반복마다 등장한다는 것이라, 대형 문제에서는 야코비안을 만들고 푸는 비용이 전체 계산의 대부분을 잡아먹는다. 그래서 야코비안을 매번 새로 계산하지 않고 재활용하는 수정 뉴턴법(modified Newton), 야코비안을 근사로 갱신하는 준뉴턴법(quasi-Newton, 예: BFGS), 행렬을 명시적으로 만들지 않는 뉴턴-크릴로프(Newton–Krylov) 같은 변종이 잔뜩 개발되어 있다.2

6. 수렴 실패: 발산·진동·중근[편집]

뉴턴법은 빠르지만 성질이 사납다. 초기값을 잘못 주면 여러 방식으로 배신한다.

실패 유형원인증상
발산초기값이 근에서 멀거나 곡률 심함접선이 엉뚱한 곳으로 튕겨 무한대로
진동두 점 사이를 접선이 왕복같은 값 근처를 영원히 오감
정체f(xn)0f'(x_n) \approx 0접선이 거의 수평, 다음 점이 폭발
느린 수렴중근(다중근)2차 수렴이 1차로 강등

특히 도함수가 0에 가까운 지점(f0f' \approx 0)에 발을 디디면, 나눗셈이 폭발해 다음 추정값이 우주 밖으로 날아간다. 또 근이 겹친 중근에서는 그 자랑스러운 2차 수렴이 선형 수렴으로 강등되어 답답하게 기어간다. 이런 야생성을 길들이기 위해, 실무에서는 스텝 크기를 조절하는 라인 서치(line search)나 신뢰 영역(trust region)을 씌우거나, 처음엔 이분법 같은 느리지만 안전한 방법으로 근처까지 몰아넣은 뒤 마지막에 뉴턴으로 갈아타는 하이브리드 전략을 쓴다.3

7. 시뮬레이션에서의 활용[편집]

뉴턴-랩슨법은 비선형이 등장하는 거의 모든 시뮬레이션의 심장에 박혀 있다.

  • 비선형 구조해석: 대변형·소성·접촉처럼 강성이 변위에 의존하는 문제는 하중을 증분으로 나눠 각 증분마다 뉴턴-랩슨 평형 반복을 돌린다. 유한요소 구조 코드의 “iteration” 카운터가 바로 이것이다.
  • SIMPLE 알고리즘과 CFD: 비선형 대류항과 압력-속도 연성을 다루는 반복 과정에서 뉴턴형 갱신이 핵심 역할을 한다. 완전 결합(coupled) 솔버는 아예 전체 시스템에 뉴턴을 적용한다.
  • 암시적 시간 적분: 강성 ODE를 룽게-쿠타법의 암시적 도식으로 풀 때, 매 스텝 등장하는 비선형 방정식을 뉴턴법으로 푼다.
  • 회로·소자 해석: SPICE 같은 회로 시뮬레이터는 다이오드·트랜지스터의 비선형 소자 방정식을 매 시점 뉴턴-랩슨으로 푼다.

요컨대 “비선형 방정식을 반복으로 푼다”는 문구가 나오는 순간, 그 뒤에는 거의 항상 뉴턴이 있다. 빠르고, 우아하고, 가끔 발산하지만 — 그래도 대체할 것이 마땅치 않은, 수치 시뮬레이션의 국민 알고리즘이다.

8. 관련 문서[편집]

9. Footnotes[편집]

  1. 뉴턴의 원래 방법(1669)은 사실 도함수를 명시적으로 쓰지 않았고, 랩슨(1690)이 지금과 더 비슷한 반복 형태로 다듬었다. 그래서 두 이름이 나란히 붙는다. 미분 표기로 딱 떨어지게 정리한 것은 후대(주로 심프슨)의 공이라, 엄밀히는 지분이 셋 이상이다.

  2. 준뉴턴법의 대표 주자 BFGS는 개발자 넷(Broyden, Fletcher, Goldfarb, Shanno)의 머리글자를 딴 것이다. 야코비안(혹은 헤시안)의 역행렬을 직접 구하지 않고 매 스텝 갱신만 해서, 최적화 라이브러리의 기본 옵티마이저로 흔히 쓰인다.

  3. 뉴턴법의 초기값 민감성을 예술로 승화한 것이 바로 뉴턴 프랙탈(Newton fractal)이다. 복소평면에서 어떤 근으로 수렴하는지 색칠하면, 근들의 경계가 무한히 복잡한 프랙탈 무늬를 이룬다. 발산하던 알고리즘도 잘 칠하면 미술관에 걸린다.