오일러의 방법
본문게임 속 공이 원점 둘레를 원을 그리며 돌도록, 위치 \((x, y)\)의 속도를 \((-y, x)\)로 정했다. 컴퓨터는 매 순간 "지금 위치에 속도와 시간 간격 0.1을 곱한 만큼 더한다"는 규칙으로 공을 옮긴다. 그런데 반지름 1에서 출발한 공이 한 바퀴를 돌고 나니 반지름이 1.37로 커져 있었고, 계속 돌릴수록 바깥으로 나선을 그리며 멀어졌다. 미분방정식의 해는 분명히 원인데, 컴퓨터가 한 걸음씩 계산한 길은 왜 원에서 벗어날까?
4.2.1접선을 따라 한 걸음씩
미분방정식 \(y' = f(x, y)\)의 해를 식으로 구할 수 없으면, 방향장의 선분을 따라 한 걸음씩 걸어가며 해를 어림한다. 현재 점 \((x_n, y_n)\)에서의 기울기는 \(f(x_n, y_n)\)이므로, \(x\)를 \(h\)만큼 옮기는 동안 그 기울기로 직선을 따라가면 \(y\)는 \(h\,f(x_n, y_n)\)만큼 변한다. 도착한 점에서 다시 기울기를 구해 다음 걸음을 걷는다. 이 방법이 오일러의 방법이다. 매 걸음 접선을 따라가므로, 곡선이 휘어 있으면 걸음마다 조금씩 곡선에서 벗어난다.
\(y' = f(x, y)\), \(y(x_0) = y_0\)에 대하여 걸음 \(h\)로 \[x_{n+1} = x_n + h,\qquad y_{n+1} = y_n + h\,f(x_n, y_n)\]을 되풀이한다. 정해진 구간까지 갈 때의 오차는 대략 \(h\)에 비례한다.
\(y' = y\), \(y(0) = 1\)에 쓰면 \(y_{n+1} = y_n + hy_n = (1 + h)y_n\)이므로 \(y_n = (1 + h)^n\)이다. \(h = 0.1\)로 10걸음 가면 \(y(1) \approx 1.1^{10} \approx 2.594\)로, 참값 \(e \approx 2.718\)보다 0.12 작다. 해 \(e^x\)는 아래로 볼록해서 접선이 늘 곡선 아래에 있기 때문이다. \(h = 0.01\)로 100걸음 가면 \(1.01^{100} \approx 2.705\)로 오차가 0.013으로 줄어, 걸음을 10분의 1로 하면 오차도 거의 10분의 1이 된다.1
4.2.2원이 나선이 되는 까닭
원운동 \(x' = -y\), \(y' = x\)에 오일러의 방법을 쓰면 \((x, y)\)에서 \((x - hy,\ y + hx)\)로 옮긴다. 이동한 거리 \(h\sqrt{x^2 + y^2}\)는 원의 접선 방향이므로, 새 점까지의 거리는 피타고라스 정리로 \(\sqrt{(x^2 + y^2)(1 + h^2)}\)이다. 그래서 한 걸음마다 반지름이 \(\sqrt{1 + h^2}\)배로 늘어난다. 접선은 원 바깥에 있으므로 접선을 따라가면 늘 원 밖으로 나가고, 이 작은 바깥쪽 어긋남이 쌓여 나선이 된다.
4.2.3예제 풀이
처음 질문의 원운동에서 \(h = 0.1\)로 한 바퀴, 곧 \(2\pi/0.1 \approx 63\)걸음을 갔을 때 반지름을 구하여라. 반지름이 1.01을 넘지 않게 한 바퀴를 돌려면 \(h\)를 얼마로 해야 하는가? \(\ln1.01 \approx 0.00995\)이다.
한 걸음마다 반지름이 \(\sqrt{1.01}\)배이므로, 63걸음 뒤에는 \(1.01^{63/2} = 1.01^{31.5}\)배이다. \(\ln\)을 취하면 \(31.5\times0.00995 \approx 0.313\)이므로 반지름은 \(e^{0.313} \approx 1.37\)이다. 처음 질문에서 본 값과 같다.
걸음 \(h\)로 한 바퀴 도는 걸음 수는 \(2\pi/h\)이고, 반지름은 \((1 + h^2)^{\pi/h}\)배가 된다. \(\ln\)을 취하면 \(\dfrac\pi h\ln(1 + h^2) \approx \pi h\)이므로, \(\pi h \le 0.00995\)이려면 \(h \le 0.0032\)이다. 그래서 2000걸음 가까이 걸어야 한 바퀴 동안 반지름 오차를 1% 안에 둘 수 있다. 실제 게임이나 행성 궤도 계산에서는 매 걸음 기울기를 여러 번 구해 평균하는 더 정밀한 방법을 쓴다. 즉 오일러의 방법은 접선을 따라 한 걸음씩 해를 어림하며, 오차는 걸음 크기에 비례해 쌓이고, 원운동처럼 휘어진 해에서는 그 어긋남이 한쪽으로 쌓여 눈에 띄게 된다.
아래 탐구 카드에서 걸음 크기를 바꾸며 오일러의 방법으로 해를 그려 참 해와 비교하고, 원운동이 나선이 되는 모습을 확인해 보자.
- 이 방법은 1768년 오일러의 적분학 책에 실렸다. 1960년대 미국 항공 우주국의 계산원들은 우주선의 궤도를 손과 기계식 계산기로 구할 때 오일러의 방법을 더 정밀하게 고친 방법을 썼는데, 영화 「히든 피겨스」에 그 장면이 나온다.
오일러의 방법은 현재 점의 기울기로 접선을 따라 \(y_{n+1} = y_n + h\,f(x_n, y_n)\)만큼 한 걸음씩 가며 미분방정식의 해를 어림하고, 정해진 구간까지의 오차는 걸음 \(h\)에 비례한다. 해가 휘어 있으면 접선이 곡선에서 한쪽으로 벗어나 오차가 쌓인다. 처음 질문의 공은 매 걸음 원의 접선을 따라가 반지름이 \(\sqrt{1 + h^2}\)배씩 늘어, \(h = 0.1\)이면 한 바퀴 뒤 반지름이 약 1.37이 된다.