요약

미지수가 여럿인 비선형 연립방정식을 뉴턴 방법으로 푼다. 지금 점에서 각 방정식을 평면(1차 근사)으로 바꾸면 연립 일차방정식이 되고, 그것을 풀어 다음 점으로 간다. 근 근처에서는 오차가 매번 대략 제곱으로 줄어 아주 빠르다. 대신 매 반복 편미분 네 개(변수가 \(n\)개면 \(n^2\)개)를 계산하고 일차방정식을 풀어야 하며, 시작점이 멀면 다른 근으로 가거나 발산한다.

예시로 보기

\(u(x, y) = x^2 + xy - 10 = 0\), \(v(x, y) = y + 3xy^2 - 57 = 0\)을 \((x_0, y_0) = (1.5, 3.5)\)에서 푼다. 참값은 \((2, 3)\)이다.

편미분은 \(\frac{\partial u}{\partial x} = 2x + y = 6.5\), \(\frac{\partial u}{\partial y} = x = 1.5\), \(\frac{\partial v}{\partial x} = 3y^2 = 36.75\), \(\frac{\partial v}{\partial y} = 1 + 6xy = 32.5\)다. 다음 점은 \((2.03603, 2.84388)\)이다.

반복 0 1 2 3 4
\((2, 3)\)까지 거리 \(7.1 \times 10^{-1}\) \(1.6 \times 10^{-1}\) \(2.6 \times 10^{-3}\) \(5.9 \times 10^{-7}\) \(7.8 \times 10^{-14}\)

오차의 자릿수가 매번 대략 두 배가 된다. 같은 문제의 고정점 반복(방법 ii)은 훨씬 천천히 다가간다1.

그림

왼쪽에서 파란 곡선(\(u = 0\))과 초록 곡선(\(v = 0\))이 만나는 곳이 근 \((2, 3)\)이다. 뉴턴(주황)은 두 걸음 만에 근에 닿고, 고정점 반복(보라 점선)은 근 둘레를 맴돌며 다가간다. 오른쪽은 근까지 거리를 한 칸이 10배인 눈금으로 그렸다. 뉴턴은 아래로 꺾여 떨어지고, 고정점은 일정한 기울기로 천천히 내려간다2.

검증: 편미분 값, 첫 반복 \((2.03603, 2.84388)\), 이차 수렴, \(J\Delta = -F\)와 같음, 먼 시작점의 다른 근, 카드 C2 — 31_multivariate-newton_impl.py

정의

1차원 뉴턴 방법은 테일러 급수의 1차 근사 \(f(x_{i+1}) \approx f(x_i) + (x_{i+1} - x_i)f'(x_i)\)에서 \(f(x_{i+1}) = 0\)으로 둔 것이다. 두 변수에서도 같은 1차 근사를 쓴다.

\[u_{i+1} = u_i + (x_{i+1} - x_i)\frac{\partial u_i}{\partial x} + (y_{i+1} - y_i)\frac{\partial u_i}{\partial y}, \qquad v_{i+1} = v_i + (x_{i+1} - x_i)\frac{\partial v_i}{\partial x} + (y_{i+1} - y_i)\frac{\partial v_i}{\partial y}\]

근에서는 \(u_{i+1} = v_{i+1} = 0\)이므로 \(x_{i+1}\), \(y_{i+1}\)에 대한 연립 일차방정식이 된다.

\[\frac{\partial u_i}{\partial x}x_{i+1} + \frac{\partial u_i}{\partial y}y_{i+1} = -u_i + x_i\frac{\partial u_i}{\partial x} + y_i\frac{\partial u_i}{\partial y}\] \[\frac{\partial v_i}{\partial x}x_{i+1} + \frac{\partial v_i}{\partial y}y_{i+1} = -v_i + x_i\frac{\partial v_i}{\partial x} + y_i\frac{\partial v_i}{\partial y}\]

크라메르 공식으로 풀면 다음과 같다. 분모는 편미분 행렬(야코비 행렬)의 행렬식이다.

\[x_{i+1} = x_i - \frac{u_i\frac{\partial v_i}{\partial y} - v_i\frac{\partial u_i}{\partial y}}{\frac{\partial u_i}{\partial x}\frac{\partial v_i}{\partial y} - \frac{\partial u_i}{\partial y}\frac{\partial v_i}{\partial x}}, \qquad y_{i+1} = y_i - \frac{v_i\frac{\partial u_i}{\partial x} - u_i\frac{\partial v_i}{\partial x}}{\frac{\partial u_i}{\partial x}\frac{\partial v_i}{\partial y} - \frac{\partial u_i}{\partial y}\frac{\partial v_i}{\partial x}}\]

행렬로 쓰면 \(J\Delta\mathbf x = -\mathbf F\)를 풀고 \(\mathbf x_{i+1} = \mathbf x_i + \Delta\mathbf x\)로 가는 것이다. \(J\)는 야코비 행렬, \(\mathbf F = (u, v)\)다. 변수가 \(n\)개여도 같다1.

flowchart TD
    A["시작점 x0"] --> B["지금 점에서 함수 값과 편미분 계산"]
    B --> C["각 방정식을 평면으로 근사"]
    C --> D["연립 일차방정식 풀기"]
    D --> E["다음 점으로 이동"]
    E --> F{"움직인 거리가 충분히 작은가?"}
    F -->|"아니오"| B
    F -->|"예"| G["근"]

고리 한 바퀴마다 편미분을 새로 계산하고 일차방정식을 한 번 푼다. 한 바퀴가 비싼 대신 바퀴 수가 적다2.

활용

  • 회로·구조물의 비선형 방정식, 로봇 팔의 역기구학, 비선형 최소제곱의 가우스-뉴턴 방법이 이 방법의 변형이다1.
  • 복잡도: 매 반복 야코비 행렬 계산(\(n^2\)개 편미분)과 \(n \times n\) 일차방정식 풀이(약 \(\frac23n^3\)). 변수가 많으면 야코비를 가끔만 다시 계산하는 변형을 쓴다.
  • 흔한 실수: 시작점을 아무렇게나 고르는 것. \((-3, -4)\)에서 시작하면 \((4.39374, -2.11778)\)이라는 다른 근으로 간다(검증 코드).

연결

확인 문제

C1 두 방정식 \(u = 0\), \(v = 0\)에 대한 다변수 뉴턴 방법의 한 걸음을 행렬로 쓰라.

답: \(\begin{pmatrix}u_x & u_y\\ v_x & v_y\end{pmatrix}\begin{pmatrix}\Delta x\\ \Delta y\end{pmatrix} = -\begin{pmatrix}u\\ v\end{pmatrix}\)를 풀고 \((x, y) \leftarrow (x + \Delta x, y + \Delta y)\). 편미분은 모두 지금 점에서 계산한다.

C2 \(u = x^2 + y^2 - 4\), \(v = x - y\)를 \((1, 2)\)에서 한 걸음 가라.

답: \(u = 1\), \(v = -1\), \(J = \begin{pmatrix}2 & 4\\ 1 & -1\end{pmatrix}\), \(\det J = -6\). \(\Delta x = -\frac{1\cdot(-1) - (-1)\cdot4}{-6} = 0.5\), \(\Delta y = -\frac{(-1)\cdot2 - 1\cdot1}{-6} = -0.5\). 다음 점 \((1.5, 1.5)\). 참값은 \((\sqrt2, \sqrt2) \approx (1.414, 1.414)\).

C3 다변수 뉴턴 방법은 왜 매 반복 연립 일차방정식을 풀게 되는가?

답: 지금 점에서 각 방정식을 1차 근사(평면)로 바꾸면 미지수에 대해 일차식이 된다. “근사한 평면들이 모두 0이 되는 점”을 찾는 것이 바로 연립 일차방정식이다.

  1. 구현 코드로 확인했다. ↩ ↩2 ↩3

  2. 멈추는 기준은 예시 표의 근까지 거리를 보고 일반적인 꼴로 적었다. ↩ ↩2