맨위로가기

오일러 방법

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

오일러 방법은 미분 방정식을 수치적으로 풀기 위한 기본적인 방법이다. 미지의 곡선을 접선의 기울기를 이용하여 근사하며, 테일러 급수를 활용하여 함수 값을 추정한다. 이 방법은 간단하지만, 단계 크기에 따라 오차가 발생하며, 수치적 불안정성 문제를 가질 수 있다. 이러한 단점을 보완하기 위해 후진 오일러 방법, 중점 방법, 룽게-쿠타 방법, 선형 다단계 방법 등 다양한 개선된 방법들이 개발되었다. C/C++ 및 Maple과 같은 프로그래밍 언어를 통해 구현될 수 있으며, 영화 《히든 피겨스》에서 존 글렌의 궤도 재진입 계산에 사용된 사례가 있다.

더 읽어볼만한 페이지

  • 룽게-쿠타 방법 - 호인의 방법
    호인의 방법은 미분방정식의 해를 구하는 수치적 방법으로, 오일러 방법의 개선된 형태이며, 구간 양 끝점의 기울기를 고려하여 오차를 줄이는 2차 룽게-쿠타 방법의 일종이다.
  • 룽게-쿠타 방법 - 크랭크-니콜슨 방법
    크랭크-니콜슨 방법은 사다리꼴 공식을 기반으로 하는 유한 차분법으로, 편미분 방정식을 풀기 위해 사용되며, 확산 방정식, 금융 수학 등 다양한 분야에 적용된다.
  • 미분방정식 - 그린 함수
    그린 함수는 선형 미분 연산자에 대한 미분 방정식을 풀 때 사용되는 특수한 함수로, 주어진 선형 미분 연산자와 함수에 대해 특정 조건을 만족하는 해로 정의되며, 이를 통해 원래 미분방정식의 해를 구할 수 있고, 파동 방정식, 확산 방정식, 양자역학 등 다양한 분야에서 응용된다.
  • 미분방정식 - 적분인자
    적분 인자는 미분 방정식을 적분하기 쉽게 만들기 위해 곱해지는 식을 의미하며, 1차 선형 상미분 방정식뿐만 아니라 카라테오도리의 정리와 열역학 제2법칙에도 적용된다.
  • 레온하르트 오일러 - 오일러-라그랑주 방정식
    오일러-라그랑주 방정식은 변분법으로 범함수의 정류점을 찾는 편미분 방정식으로, 라그랑주 역학 등 다양한 분야에 활용되며 뉴턴 역학을 일반화한 것으로 여겨진다.
  • 레온하르트 오일러 - 오일러-마스케로니 상수
    오일러-마스케로니 상수 \gamma는 조화급수와 자연로그 함수의 차이의 극한으로 정의되는 수학 상수로, 감마 함수, 리만 제타 함수 등 다양한 수학적 개념과 관련되어 있으며 유리수인지 무리수인지 밝혀지지 않은 미해결 문제이다.
오일러 방법
개요
종류수치해석 방법
분야상미분 방정식
명명 유래레온하르트 오일러
상세 정보
관련 항목후퇴 오일러 방법
중점 방법
Runge-Kutta 방법
수치 안정성
수치 감쇠
수렴 차수
공식
설명y_{n+1}: 다음 단계의 y 값
y_n: 현재 단계의 y 값
h: 스텝 크기
f(t_n, y_n): 현재 단계에서의 미분 방정식 값
특징
장점구현이 간단함
단점수렴 속도가 느림
오차가 큼
활용
활용 분야물리학
공학
경제학
생물학

2. 비공식적 설명

형태가 알려지지 않은 미지의 곡선을 계산하는 문제를 생각해 보자. 우리는 이 곡선의 시작점 A_0(초깃값)을 알고 있으며, 이 곡선이 주어진 미분 방정식을 만족한다고 가정한다. 여기서 미분 방정식은 곡선 위의 어떤 점에서든 그 점에서의 접선기울기를 계산할 수 있게 해주는 공식으로 볼 수 있다.

오일러 방법의 기본적인 아이디어는 다음과 같다. 먼저 시작점 A_0에서 미분 방정식을 이용해 곡선의 기울기, 즉 접선의 기울기를 계산한다. 그런 다음, 이 접선을 따라 아주 짧은 거리를 이동하여 새로운 점 A_1을 찾는다. 이때 이동 거리가 충분히 짧다면, 기울기가 크게 변하지 않아 A_1은 실제 곡선에서 크게 벗어나지 않을 것이라고 기대할 수 있다.

이제 A_1이 여전히 곡선 위에 있다고 가정하고, A_0에서 했던 것과 동일한 과정을 반복한다. 즉, A_1에서의 접선 기울기를 계산하고, 그 접선을 따라 짧은 거리를 이동하여 다음 점 A_2를 찾는다. 이 과정을 계속 반복하면 A_0, A_1, A_2, A_3, \dots 와 같은 점들을 순서대로 얻게 되며, 이 점들을 직선으로 연결하면 다각형 곡선이 만들어진다.

일반적으로 이렇게 만들어진 다각형 곡선은 원래의 미지 곡선과 완전히 일치하지는 않지만, 각 단계에서 이동하는 거리를 충분히 작게 하면 원하는 구간 내에서 원래 곡선과의 차이(오차)를 상당히 줄일 수 있다. 즉, 짧은 직선들의 연결로 미지의 곡선을 근사적으로 그려나가는 방법이라고 할 수 있다.

2. 1. 원리

형태가 알려지지 않은 미지의 곡선을 계산한다고 가정해 보자. 이때 시작점(초깃값) A_0는 알고 있으며, 이 미지의 곡선은 주어진 미분 방정식을 만족한다고 본다. 이 미분 방정식은 미지의 곡선 위의 어떤 점에서든 접선기울기를 계산할 수 있는 공식으로 생각할 수 있다.

즉, 시작점 A_0를 알고 있다면, 미분 방정식을 이용해 A_0 지점에서의 접선과 그 기울기를 구할 수 있다. 이 접선을 따라 아주 작은 간격 h만큼 이동한 점을 A_1이라고 하자. 만약 A_1이 여전히 원래 곡선 위에 있다고 가정하면(실제로는 약간의 오차가 발생한다), A_1에서도 같은 방식으로 접선의 기울기를 구하고 다음 점 A_2로 이동할 수 있다. 이 과정을 반복하면 다각형 곡선 A_0A_1A_2A_3\dots를 얻게 된다. 일반적으로 이 다각형 곡선은 원래의 미지의 곡선에서 크게 벗어나지 않으며, 이동 간격 h를 충분히 작게 하면 계산하려는 유한한 구간 내에서 원래 곡선과의 오차를 원하는 만큼 줄일 수 있다.

오일러 방법은 다음과 같은 초깃값 문제로 주어진 상미분 방정식의 해를 근사적으로 구하는 데 사용된다.

: y' = \frac{dy}{dt} = f(t,y), \quad y(t_0) = y_0

여기서 목표는 함수 y(t)의 정확한 형태를 구하는 것이 아니라, 특정 시점들 t_0, t_1, t_2, \dots에서의 함숫값 y(t_i)를 추정하는 것이다. 시간 간격을 h라고 할 때, 각 시점은 t_n = t_0 + nh (또는 t_{n+1} = t_n + h)로 정의된다.

이 방법의 원리는 테일러 급수에 기반한다. 함수 y(t)t_n 근방에서 충분히 미분 가능하다고 가정하면(f(t,y)가 립시츠 연속이면 피카르-린델뢰프 정리에 의해 해의 존재성과 미분가능성이 보장된다), y(t_{n+1}) = y(t_n + h)t_n에 대한 테일러 급수로 전개할 수 있다.

: y(t_{n+1}) = y(t_n) + y'(t_n)(t_{n+1} - t_n) + \frac{y''(t_n)}{2!}(t_{n+1} - t_n)^2 + \cdots

여기서 t_{n+1} - t_n = h이고, 미분 방정식 y'(t_n) = f(t_n, y(t_n))을 대입하면 다음과 같다.

: y(t_{n+1}) = y(t_n) + hf(t_n, y(t_n)) + \frac{h^2}{2}y''(t_n) + O(h^3)

오일러 방법은 이 테일러 급수에서 h에 대한 1차 항까지만 남기고 나머지 고차 항(\frac{h^2}{2}y''(t_n) + O(h^3), 즉 O(h^2) 항)을 무시하여 근사값을 계산한다. 즉, y(t_n)의 근사값을 y_n이라고 할 때, 다음 점화식으로 y_{n+1}을 계산한다.[3]

: y_{n+1} = y_n + hf(t_n,y_n)

여기서 y_0 = y(t_0)는 주어진 초깃값이다. 이 식을 통해 y_1, y_2, \dots를 순차적으로 계산하여 각 시점 t_n에서의 해의 근사값 y_n \approx y(t_n)을 얻는다.

오일러 방법은 y_{n+1}을 계산하기 위해 이전 시점(t_n)의 값 y_n만 필요로 하므로 명시적 방법(explicit method)이며, 과거의 값만으로 미래의 값을 계산하는 양적 공식(explicit formula)이다.

또한 오일러 방법은 1차 미분 방정식뿐만 아니라 고차 미분 방정식에도 적용할 수 있다. N차 미분 방정식은 N개의 1차 미분 방정식으로 이루어진 연립 미분 방정식 시스템으로 변환할 수 있으며, 이 시스템에 오일러 방법을 적용하여 해를 근사할 수 있다.[4]

3. 공식 유도

미분 방정식의 수치해석적 해를 구하는 가장 기본적인 방법 중 하나인 오일러 방법은 여러 가지 관점에서 유도될 수 있다. 오일러 방법의 목표는 다음과 같은 초깃값 문제가 주어졌을 때, 특정 시점에서의 함수 값 y(t)를 근사적으로 구하는 것이다.

:\frac{dy}{dt} = f(t,y), \qquad a \le t \le b, \qquad y(a) = \alpha.

함수 f의 정확한 형태를 구하는 것이 아니라, 구간 [a,b]N개의 동일한 간격으로 나누었을 때 각 격자점(mesh point) t_i = a + ih (여기서 h = (b-a)/N는 구간 크기, i = 0, 1, \dots, N)에서의 함수 값 y(t_i)를 추정하는 것이 목적이다.

함수 y(t)t_i에서의 테일러 급수를 이용하면 다음 식을 얻는다.

: y(t_{i+1}) = y(t_i) + hy'(t_i) + \frac{h^2}{2}y''(\xi_i)

여기서 \xi_i(t_i, t_{i+1}) 사이의 어떤 값이다. 미분 방정식 y'(t_i) = f(t_i, y(t_i))를 대입하고, 오차항인 \frac{h^2}{2}y''(\xi_i) 부분을 무시하면 오일러 방법의 공식이 유도된다. 즉, y(t_i)에 대한 추정치 \omega_i는 다음 점화식으로 계산된다.

:

\omega_0 = \alpha, \\

\omega_{i+1} = \omega_i + hf(t_i, \omega_i),\qquad i = 0, 1, \cdots, N -1.



오일러 방법은 이 외에도 다음과 같은 방법으로 유도될 수 있다.

# 기하학적 해석: 각 단계에서 현재 점 (t_i, \omega_i)에서의 기울기(f(t_i, \omega_i))를 사용하여 다음 점 (t_{i+1}, \omega_{i+1})의 위치를 추정한다. 이는 짧은 직선 선분으로 해 곡선을 근사하는 것과 같다.

# 테일러 급수: 함수 y(t)t_0 근처에서 테일러 전개한 후, h^2 이상의 고차 항을 무시하여 공식을 얻는다.[7] (자세한 내용은 #테일러 급수 이용 참고)

# 전진 유한 차분: 도함수 y'(t_0)를 전진 유한 차분 (y(t_0+h) - y(t_0))/h로 근사하여 미분 방정식 y' = f(t,y)에 대입한다.[8] (자세한 내용은 #전진 유한 차분 이용 참고)

# 미적분학의 기본 정리: 미분 방정식을 t_0에서 t_0 + h까지 적분한 후, 적분값을 가장 간단한 수치 적분 방법인 좌종점 규칙(직사각형 방법)으로 근사한다.[9] (자세한 내용은 #미적분학의 기본 정리 이용 참고)

이러한 유도 과정들은 오일러 방법의 원리를 이해하는 데 도움을 줄 뿐만 아니라, 오차 분석이나 룽게-쿠타 방법, 선형 다단계 방법 등 더 정교한 수치 해법으로 확장하는 기초를 제공한다.

오일러 방법은 다음 단계의 값(\omega_{i+1})을 계산할 때 현재 단계 이전의 값(\omega_i, t_i)만 사용하는 양적 방법(explicit method)이다. 해의 존재성과 미분가능성은 일반적으로 피카르-린델뢰프 정리에 의해 보장된다고 가정한다 (특히, 함수 f(t, y)y에 대해 립시츠 연속 조건을 만족해야 함).

3. 1. 테일러 급수 이용

오일러 방법은 함수 y(t)테일러 급수를 이용하여 유도할 수 있다. 시점 t에서의 미분 방정식 y' = f(t,y)의 정확한 해를 y(t)라고 할 때, t+h에서의 테일러 급수는 다음과 같다.

: y(t+h) = y(t) + y'(t)h + \frac{1}{2}y''(t)h^2 + O(h^3).

여기서 y'(t) = f(t, y(t))이므로, 이를 대입하고 정리하면 다음과 같이 쓸 수 있다.

: y(t+h) = y(t) + f(t,y(t))h + O(h^2).

이 식에서 h^2 항과 그보다 높은 차수의 항들(O(h^2)으로 표현되는 부분)을 무시하면, 다음과 같은 근사식을 얻는다.[7]

: y(t+h) \approx y(t) + f(t,y(t))h.

이제 시점 t를 이산적인 시점 t_n으로, 정확한 해 y(t_n)을 수치해 y_n으로 바꾸면 오일러 방법의 점화식이 된다.

: y_{n+1} = y_n + hf(t_n,y_n).

테일러 급수는 오일러 방법에서 발생하는 오차를 분석하거나, 룽게-쿠타 방법과 같은 더 정확한 수치 해법을 유도하는 데에도 사용된다.

3. 2. 전진 유한 차분 이용

오일러 방법을 유도하는 또 다른 방법은 도함수에 대한 전진 유한 차분 공식을 이용하는 것이다.

: y'(t_0) \approx \frac{y(t_0+h) - y(t_0)}{h}

이 근사식을 미분 방정식 y' = f(t,y)에 대입하면 오일러 방법을 얻을 수 있다.[8]

이와 유사한 계산 과정을 통해 중점 방법이나 후진 오일러 방법 같은 다른 수치 해법들도 유도될 수 있다.

3. 3. 미적분학의 기본 정리 이용

오일러 방법을 유도하는 또 다른 방법은 미적분학의 기본 정리를 이용하는 것이다. 먼저, 주어진 미분 방정식 y' = f(t,y)t_0에서 t_0 + h까지 적분한다. 미적분학의 기본 정리에 따라 다음 식을 얻을 수 있다.

: y(t_0+h) - y(t_0) = \int_{t_0}^{t_0+h} f\bigl(t,y(t)\bigr) \,\mathrm{d}t.

이제 우변의 적분을 근사해야 한다. 가장 간단한 방법 중 하나는 좌변 직사각형 방법(left rectangle rule)을 사용하는 것이다(직사각형 1개만 사용). 이 방법은 적분 구간 [t_0, t_0+h]에서 피적분 함수 f(t, y(t))를 구간의 시작점 t_0에서의 값 f(t_0, y(t_0))으로 일정하다고 가정하고 근사하는 방식이다. 즉, 적분값을 밑변의 길이가 h이고 높이가 f(t_0, y(t_0))인 직사각형의 넓이로 근사한다.

: \int_{t_0}^{t_0+h} f\bigl(t,y(t)\bigr) \,\mathrm{d}t \approx h f\bigl(t_0, y(t_0)\bigr).

앞서 얻은 두 식을 결합하면,

: y(t_0+h) - y(t_0) \approx h f\bigl(t_0, y(t_0)\bigr)

이 되고, y(t_0)를 이항하면 오일러 방법의 공식

: y(t_0+h) \approx y(t_0) + h f\bigl(t_0, y(t_0)\bigr)

을 다시 얻게 된다.[9] 이러한 사고 방식을 계속하여 적분 근사에 다른 방법(사다리꼴 공식, 심프슨 공식 등)을 사용하면 룽게-쿠타 방법이나 다양한 선형 다단계 방법(linear multistep method)과 같은 다른 수치 해법들을 유도할 수 있다.

4. 오차 분석

오일러 방법은 단계 크기 h가 작을수록 더 정확한 근사값을 제공한다. 아래 표는 특정 미분 방정식(y'=y, y(0)=1)을 오일러 방법으로 풀 때, 단계 크기에 따른 t=4에서의 근사값과 오차(|y(4) - y_N|, 여기서 y(4)=e^4 \approx 54.60)를 보여준다.

단계 크기 (h)오일러 방법 결과 (y_N)오차
116.0038.60
0.2535.5319.07
0.145.269.34
0.0549.565.04
0.02551.982.62
0.012553.261.34



표에서 볼 수 있듯이 단계 크기 h가 절반으로 줄어들 때, 오차 역시 대략 절반으로 줄어드는 경향을 보인다. 이는 오일러 방법의 전역 절단 오차(Global Truncation Error, GTE)가 단계 크기 h에 거의 비례(O(h))함을 시사한다. 각 계산 단계에서 발생하는 국소 절단 오차(Local Truncation Error, LTE)는 단계 크기 h의 제곱(O(h^2))에 비례한다.

중점 방법과 같은 다른 수치 해법들은 오일러 방법보다 더 효율적일 수 있다. 예를 들어, 중점 방법의 전역 오차는 단계 크기 h의 제곱(O(h^2))에 비례한다. 이 때문에 오일러 방법은 1차 정확도(first-order accuracy)를 가진다고 하고, 중점 방법은 2차 정확도를 가진다고 한다.

오일러 방법으로 높은 정확도를 얻기 위해서는 단계 크기 h를 매우 작게 설정해야 한다. 위의 예시에서 소수점 세 자리까지 정확한 답을 얻으려면 단계 크기를 약 0.00001로 설정해야 하며, 이는 40만 번의 계산 단계를 의미한다. 이처럼 많은 계산 단계는 높은 계산 비용을 요구하므로, 높은 정확도가 필요한 문제에서는 오일러 방법 대신 Runge-Kutta 방법이나 선형 다단계 방법과 같은 고차 방법(higher-order methods)을 사용하는 것이 일반적이다.[6]

4. 1. 국소 절단 오차

오일러 방법의 국소 절단 오차(Local Truncation Error, LTE)는 단일 단계에서 발생하는 오차를 의미한다. 구체적으로, 이는 한 단계 계산 후의 수치 해 y_1과 실제 시간 t_1 = t_0+h에서의 정확한 해 y(t_1) 사이의 차이를 말한다.

오일러 방법으로 계산된 수치 해는 다음과 같다.

: y_1 = y_0 + h f(t_0, y_0).

정확한 해를 구하기 위해 테일러 전개를 사용하면 다음과 같이 나타낼 수 있다.

: y(t_0 + h) = y(t_0) + h y'(t_0) + \tfrac12 h^2 y''(t_0) + O\left(h^3\right).

여기서 y(t_0) = y_0이고, 미분 방정식 y' = f(t, y)에 따라 y'(t_0) = f(t_0, y(t_0)) = f(t_0, y_0)이다.

따라서 오일러 방법에 의해 발생하는 국소 절단 오차(LTE)는 위 두 식의 차이로 계산된다.

: \mathrm{LTE} = y(t_0 + h) - y_1

: = \left( y(t_0) + h y'(t_0) + \tfrac12 h^2 y''(t_0) + O\left(h^3\right) \right) - \left( y_0 + h f(t_0, y_0) \right)

: = \left( y_0 + h f(t_0, y_0) + \tfrac12 h^2 y''(t_0) + O\left(h^3\right) \right) - \left( y_0 + h f(t_0, y_0) \right)

: = \tfrac12 h^2 y''(t_0) + O\left(h^3\right).

이 결과는 해 y가 유계인(bounded) 3차 도함수를 가진다는 가정 하에 유효하다.

이 식은 단계 크기 h가 작을 때 국소 절단 오차가 대략 h^2에 비례한다는 것을 보여준다. 이는 오일러 방법이 Runge-Kutta 방법이나 선형 다단계 방법과 같은 고차 방법들보다 정확도가 낮은 이유이다. 고차 방법들은 국소 절단 오차가 h의 더 높은 거듭제곱(h^3, h^4 등)에 비례하여 더 빠르게 작아진다.

테일러 정리의 나머지 항에 대한 라그랑주 형식을 사용하면 국소 절단 오차를 약간 다르게 표현할 수 있다. 만약 해 y가 연속적인 2차 도함수를 가진다면, 어떤 \xi \in [t_0,t_0+h]에 대해 다음 식이 성립한다.

: \mathrm{LTE} = y(t_0 + h) - y_1 = \tfrac12 h^2 y''(\xi).

위 오차 식에서 정확한 해 y의 2차 도함수 y''는 직접 알기 어렵다. 하지만 미분 방정식 y'=f(t,y) 자체를 이용하여 y''를 표현할 수 있다. 연쇄 법칙을 사용하면 다음과 같다.

:y''(t_0) = \frac{d}{dt} f(t, y(t)) \bigg|_{t=t_0} = \frac{\partial f}{\partial t}\bigl(t_0, y(t_0)\bigr) + \frac{\partial f}{\partial y}\bigl(t_0, y(t_0)\bigr) \, y'(t_0)

:y''(t_0) = \frac{\partial f}{\partial t}\bigl(t_0, y_0\bigr) + \frac{\partial f}{\partial y}\bigl(t_0, y_0\bigr) \, f\bigl(t_0, y_0\bigr).

이를 통해 국소 절단 오차를 미분 방정식의 우변 함수 f와 그 편도함수들로 나타낼 수 있다.

4. 2. 전역 절단 오차

전역 절단 오차(Global Truncation Error, GTE)는 초기 시간 t_0부터 특정 시간 t_i까지 오일러 방법을 사용하여 해를 근사할 때 발생하는 총 오차를 의미한다. 이는 각 계산 단계에서 발생하는 국소 절단 오차가 누적된 결과이다.[13]

총 계산 단계 수는 (t_i - t_0) / h로, 단계 크기 h에 반비례한다. 한편, 각 단계에서 발생하는 국소 절단 오차는 대략 h^2에 비례한다. 따라서 전체 단계에 걸쳐 오차가 누적되면, 전역 절단 오차는 단계 크기 h에 비례할 것으로 예상할 수 있다.[14]

이러한 직관적인 추론은 수학적으로 증명될 수 있다. 만약 실제 해 y가 유계인 2차 도함수를 가지고, 미분 방정식의 우변 함수 f가 두 번째 인자(즉, y)에 대해 립시츠 연속이라면, 시간 t_i에서의 전역 절단 오차 |y(t_i) - y_i|는 다음 부등식을 만족하는 상계를 가진다.[15]

: |y(t_i)-y_i| \le \frac{hM}{2L}\left(e^{L(t_i-t_0)}-1\right)

여기서 M은 고려하는 시간 구간에서 실제 해 y의 2차 도함수의 절댓값에 대한 상한이며, L은 함수 fy에 대한 립시츠 상수이다.

이 상계 공식의 정확한 값 자체는 실제 오차를 크게 과대평가하는 경우가 많아 실용적인 중요성은 떨어질 수 있다.[16] 하지만 이 공식은 전역 절단 오차가 단계 크기 h에 (대략적으로) 비례한다는 중요한 이론적 사실을 보여준다. 이러한 이유로 오일러 방법은 1차 방법(first-order method)이라고 불린다.[17] 이는 단계 크기 h를 절반으로 줄이면 전역 오차도 대략 절반으로 줄어드는 경향이 있음을 의미한다. 따라서 높은 정확도를 얻기 위해서는 단계 크기를 매우 작게 설정해야 하며, 이는 계산 시간의 증가로 이어질 수 있다.

5. 안정성 분석

오일러 방법은 특정 조건, 특히 강성 방정식(stiff equation)을 다룰 때 수치적으로 불안정해질 수 있다. 이는 실제 해는 안정적으로 수렴하더라도, 오일러 방법을 통해 계산된 수치해가 발산하여 실제와 동떨어진 결과를 내는 현상을 의미한다.

이러한 불안정성은 오일러 방법의 (선형) 안정 영역과 깊은 관련이 있다. 선형 미분 방정식 y' = ky에 오일러 방법을 적용할 경우, 복소수 z = hk (여기서 h는 스텝 크기, k는 상수)의 값이 특정 영역 내에 있을 때만 수치해가 안정적으로 유지된다. 만약 z 값이 이 안정 영역을 벗어나면, 수치해는 불안정해져 발산하거나 진동하게 된다.[18][23] 안정 영역에 대한 자세한 정의와 불안정성이 나타나는 구체적인 예시는 하위 섹션에서 더 자세히 설명한다.

이처럼 안정성을 확보하기 위해 스텝 크기 h를 매우 작게 설정해야 하는 제한과 더불어, 오차의 수렴 속도가 상대적으로 느리다는 점 때문에 오일러 방법은 실제 복잡한 공학 문제나 과학 계산에는 잘 사용되지 않는다. 주로 미분방정식 수치 해법의 기본적인 원리를 이해하기 위한 교육적인 목적으로 사용되는 경우가 많다.

5. 1. 수치적 안정성

오일러 방법은 특정 조건, 특히 강성 방정식(stiff equation)의 경우 수치적으로 불안정해질 수 있다. 이는 실제 해는 안정적임에도 불구하고 계산된 해가 매우 큰 값으로 발산하는 현상을 의미한다.

이러한 불안정성은 다음 선형 방정식 예시를 통해 확인할 수 있다.

: y' = -2.3y, \qquad y(0) = 1

이 방정식의 정확한 해는 y(t) = e^{-2.3t}이며, 시간이 무한대로 갈수록 (t \to \infty) 0으로 수렴한다.

하지만 오일러 방법을 사용하여 스텝 크기 h=1로 이 방정식의 해를 구하면, 수치해는 실제 해와 달리 진동하며 발산한다(그림 4 참조). 이것이 오일러 방법이 불안정해지는 예이다. 반면, 더 작은 스텝 크기인 h=0.7을 사용하면 수치해는 0으로 수렴하여 안정적인 결과를 보여준다.

오일러 방법을 선형 방정식 y' = k y에 적용할 때, 수치해의 안정성은 곱 hk의 값에 따라 결정된다. 만약 복소수 z = hk가 다음 조건을 만족하는 영역 밖에 있으면 수치해는 불안정해진다.[18][23]

: \bigl\{ z \in \mathbf{C} \, \big| \, |z+1| \le 1 \bigr\}

이 영역을 오일러 방법의 (선형) 안정 영역이라고 하며, 그림 5에 분홍색 원판으로 표시되어 있다.

앞선 예시에서 k = -2.3이고 스텝 크기 h=1을 사용하면 z = hk = -2.3이다. 이 값은 안정 영역 밖에 위치하므로, 오일러 방법으로 계산된 수치해는 불안정하게 나타난다.

이러한 안정성의 제약 때문에 오일러 방법은 실제 문제 해결에 자주 사용되지 않는다. 특히 물리 시스템 모델링 등에서 나타나는 강성 방정식의 경우, 매우 작은 스텝 크기 h를 사용해야만 안정적인 해를 얻을 수 있어 계산 효율성이 떨어진다. 따라서 오일러 방법은 주로 수치 적분의 기본적인 개념을 설명하는 예시로 활용된다.

5. 2. 안정 영역

오일러 방법은 수치적으로 불안정할 수 있다. 특히 강성 방정식의 경우, 실제 해는 안정적이라도 수치적으로 계산한 해가 매우 커지는 문제가 발생할 수 있다. 이는 다음 선형 방정식을 예로 들어 설명할 수 있다.

: y' = -2.3y, \qquad y(0) = 1.

이 방정식의 정확한 해는 y(t) = e^{-2.3t}이며, 시간이 지남(t \to \infty)에 따라 0으로 수렴한다.

하지만 오일러 방법을 시간 간격 h=1로 적용하면, 수치적으로 계산된 해는 실제 해와 다르게 진동하며 증가한다(그림 4 참조). 이러한 현상을 불안정하다고 말한다. 만약 시간 간격을 더 작게, 예를 들어 h = 0.7로 설정하면, 수치 해는 0으로 올바르게 수렴한다.

오일러 방법을 선형 방정식 y' = k y에 적용할 때, 수치 해가 안정적으로 유지되려면 곱 hk가 복소 평면에서 특정 영역 내에 있어야 한다. 이 영역은 다음과 같이 정의된다.

: \bigl\{ z \in \mathbf{C} \, \big| \, |z+1| \le 1 \bigr\},

이는 복소 평면에서 중심이 -1이고 반지름이 1인 원의 내부(경계 포함)에 해당한다(그림 5 참조). 이 영역을 오일러 방법의 (선형) 안정 영역이라고 부른다.[18][23]

앞서 든 예시에서 k = -2.3이었다. 만약 시간 간격 h=1을 사용하면 hk = -2.3이 된다. 이 값은 안정 영역 밖에 있으므로, 수치 해가 불안정해지는 것이다.

이러한 안정성 제한과 더불어 오차의 수렴 속도가 느리다는 점 때문에, 오일러 방법은 수치 적분의 간단한 예시로 사용되는 경우를 제외하고는 실제 문제 해결에 자주 사용되지 않는다. 특히 물리 시스템 모델 등에서는 안정성을 확보하기 위해 매우 작은 시간 간격 h를 사용해야 하는 경우가 많다.

6. 개선된 방법

오일러 방법은 구현이 간단하지만, 단계 크기 h가 충분히 작지 않으면 오차가 커지는 단점이 있다. 예를 들어, 특정 미분 방정식의 경우 t = 4 에서 세 자리 소수점까지 정확한 해를 얻으려면 단계 크기를 약 0.00001까지 줄여야 하며, 이는 400,000번의 계산 단계를 필요로 한다. 이렇게 많은 단계는 높은 계산 비용을 초래한다.[6] 오일러 방법은 오차가 단계 크기 h에 대략 비례하는 1차 방법이기 때문에 정확도를 높이려면 단계 크기를 매우 작게 해야 한다.

이러한 오일러 방법의 단점을 보완하고 더 높은 정확도와 안정성을 얻기 위해 다양한 개선된 수치 해법들이 개발되었다. 주요 개선 방향은 다음과 같다.


  • 안정성 개선: 오일러 방법은 특정 문제에서 수치적으로 불안정해질 수 있다. 이를 해결하기 위해 후진 오일러 방법(Backward Euler method)이 사용된다. 후진 오일러 방법은 계산 단계의 끝점(t_{n+1})에서 함수 값을 평가하는 암시적 방법으로, 안정성이 뛰어나지만 매 단계마다 방정식을 풀어야 하는 추가 계산 비용이 발생한다. 이 외에도 지수 오일러 방법(Exponential Euler method)이나 반 암시적 오일러 방법(Semi-implicit Euler method) 등 안정성을 개선하는 다른 수정 방법들도 존재한다.

  • 정확도 향상 (고차 방법): 오일러 방법보다 높은 차수의 정확도를 가지는 방법들이 있다.
  • 더 많은 함수 평가 사용: 한 단계 내에서 여러 지점의 함수 값을 평가하여 정확도를 높이는 방식이다. 대표적으로 중점 방법(Midpoint method)이 있으며, 이는 단계 중간 지점의 기울기를 사용하여 값을 계산하는 2차 방법이다. 중점 방법은 더 일반적인 룽게-쿠타 방법(Runge-Kutta methods) 계열의 한 예시이다. 호인 방법(Heun's method) 또는 개량 오일러 방법(improved Euler method) 역시 2단 룽게-쿠타 방법의 하나로, 오일러 방법으로 예측한 값을 이용해 기울기의 평균을 사용하는 2차 방법이다.
  • 더 많은 과거 값 사용: 현재 단계뿐만 아니라 이전 단계들의 정보를 활용하여 다음 단계 값을 계산하는 방식이다. 이는 선형 다단계 방법(Linear multistep methods) 계열로 이어지며, 예를 들어 두 단계 아담스-배쉬포스 방법(two-step Adams–Bashforth method)은 t_nt_{n-1}에서의 함수 값을 모두 사용한다.
  • 오일러 방법과 후진 오일러 방법의 조합: 오일러 방법과 후진 오일러 방법의 공식을 평균하면 사다리꼴 공식(Trapezoidal rule)을 얻을 수 있다. 이는 편미분 방정식에 적용될 때 크랭크-니콜슨 방법(Crank-Nicolson method)이라고도 불리며, 2차 정확도를 가지면서도 안정성이 좋은(A-안정) 암시적 방법이다.[24]


이처럼 개선된 방법들은 오일러 방법보다 높은 차수(주로 2차 이상)를 가지므로, 동일한 단계 크기에서 더 정확한 결과를 얻거나, 동일한 정확도를 얻기 위해 더 큰 단계 크기를 사용할 수 있어 계산 효율성을 높일 수 있다. 특히 룽게-쿠타 방법이나 선형 다단계 방법과 같은 고차 방법들은 높은 정확도가 요구되는 실제 과학 및 공학 문제 해결에 널리 사용된다.[6] 예를 들어, MATLAB의 `ode45`와 같은 내장 함수는 고차 룽게-쿠타 방법을 기반으로 구현되어 있다.[25]

6. 1. 후진 오일러 방법 (Backward Euler Method)

오일러 방법의 수치적 안정성 문제를 해결하기 위한 간단한 수정 방법 중 하나는 후진 오일러 방법(Backward Euler method)이다. 이 방법의 공식은 다음과 같다.

: y_{n+1} = y_n + h f(t_{n+1}, y_{n+1})

이는 표준적인 (전진) 오일러 방법과 달리 함수 f를 계산 단계의 시작점 t_n이 아닌 끝점 t_{n+1}에서 평가한다는 차이점이 있다. 후진 오일러 방법은 암시적 방법(implicit method)에 속한다. 공식의 양변에 구하고자 하는 값 y_{n+1} 이 모두 포함되어 있기 때문에, 이 방법을 사용하려면 매 단계마다 y_{n+1} 에 대한 방정식을 풀어야 한다. 이로 인해 명시적 방법보다 구현 비용이 더 많이 든다.

후진 오일러 방법은 테일러 전개를 이용하여 유도할 수도 있다. y(t+h) 대신 y(t)t+h 지점 주변에서 전개하면 다음과 같다.

:y(t) = y(t+h) - y'(t+h)h + \frac{1}{2}y''(t+h)h^2 + O(h^3)

여기서 y'(t+h) = f(t+h, y(t+h))로 치환하고 이산화하면(t = t_n, t+h = t_{n+1}), 다음 공식을 얻는다.

: y_n = y_{n+1} - hf(t_{n+1},y_{n+1}) + O(h^2)

y_{n+1} 에 대해 정리하고 O(h^2) 항을 무시하면 후진 오일러 방법의 공식을 얻게 된다.

: y_{n+1} = y_n + hf(t_{n+1},y_{n+1})

오른쪽에 f(t_{n+1},y_{n+1}) 항이 존재하기 때문에, 후진 오일러 방법은 음적 공식이 된다. 즉, 현재 값을 구하기 위해 과거의 수치뿐만 아니라 현재 또는 미래의 수치를 알아야 한다(후진 오일러 방법에서는 미래 값에 의존하지 않는다). 결과적으로, 각 시간 간격마다 방정식계를 풀어야 하므로, 특히 비선형 방정식의 경우 계산 비용이 상당히 증가한다.

그렇지만, 이 방법은 A-stable|A-안정eng하다. 따라서 강성 미분 방정식(stiff differential equation)의 해를 구할 때 근사해는 시간 간격 h의 크기에 관계없이 수렴하는 경향을 보인다. 후진 오일러 방법도 계산 비용 때문에 보통 단독으로 사용되지는 않는다.

6. 2. 중점 방법 (Midpoint Method)

오일러 방법보다 더 높은 차수와 정확도를 얻기 위한 방법 중 하나로 중점 방법(Midpoint Method)이 있다. 이 방법은 단계의 중간 지점에서 함수를 평가하는 등 더 많은 함수 평가를 사용하여 정확도를 높이는 방식이다. 중점 방법의 공식은 다음과 같다.

: y_{n+1} = y_n + h f \left( t_n + \tfrac12 h, y_n + \tfrac12 h f(t_n, y_n) \right).

이 방법은 룽게-쿠타 방법 계열로 이어지는 방법 중 하나이다.

6. 3. 룽게-쿠타 방법 (Runge-Kutta Method)

오일러 방법보다 더 높은 차수와 정확도를 얻기 위한 방법 중 하나로 룽게-쿠타 방법(Runge-Kutta Method) 계열이 있다. 이 방법들의 핵심 아이디어는 한 단계(h)를 진행하는 동안 여러 지점에서 함수 f의 값을 평가하고 그 결과들을 조합하여 오차를 줄이는 것이다. 즉, 더 많은 함수 평가를 통해 정확도를 높인다.

예를 들어, 중점 방법(Midpoint method)은 룽게-쿠타 방법의 하나로 볼 수 있다. 중점 방법의 공식은 다음과 같다.

: y_{n+1} = y_n + h f \left( t_n + \tfrac12 h, y_n + \tfrac12 h f(t_n, y_n) \right)

이 식은 현재 지점 (t_n, y_n)에서의 기울기 f(t_n, y_n)를 이용해 중간 지점 (t_n + \tfrac12 h, y_n + \tfrac12 h f(t_n, y_n))에서의 기울기를 계산하고, 이 중간 기울기를 사용하여 y_{n+1}을 구한다.

또한, 호인 방법(Heun's method) 또는 개량 오일러 방법(improved Euler method)이라고 불리는 다음 공식 역시 가장 간단한 형태의 2단 룽게-쿠타 방법이다.

: y_{n+1} = y_n + \frac{1}{2}h(f(t_n,y_n)+f(t_{n+1},y_n + hf(t_n,y_n))

이 방법은 오일러 방법으로 예측한 y_{n+1} 값(y_n + hf(t_n,y_n))을 이용하여 t_{n+1}에서의 기울기를 계산하고, 시작점과 끝점 기울기의 평균을 사용하여 최종 y_{n+1} 값을 계산한다.

이러한 2차 방법들은 오일러 방법보다 훨씬 정밀하지만, 실제 공학이나 과학 문제 해결에 사용하기에는 여전히 정밀도가 부족한 경우가 많다. 따라서 실제로는 더 높은 차수의 룽게-쿠타 방법들이 널리 사용된다. 예를 들어, MATLAB의 `ode45` 함수는 6번의 함수 평가를 사용하는 5차 룽게-쿠타 방법을 기반으로 한다.[25]

6. 4. 선형 다단계 방법 (Linear Multistep Method)

오일러 방법보다 더 높은 정확도와 차수를 얻는 방법 중 하나는 과거의 여러 값을 사용하는 것이다. 이는 선형 다단계 방법(Linear Multistep Method) 계열로 이어지는데, 대표적인 예로 두 단계 아담스-배쉬포스 방법(two-step Adams–Bashforth method)을 들 수 있다. 이 방법의 공식은 다음과 같다.

: y_{n+1} = y_n + \tfrac32 h f(t_{n}, y_{n}) - \tfrac12 h f(t_{n-1}, y_{n-1}).

이처럼 선형 다단계 방법은 현재 단계(t_n)의 정보뿐만 아니라 이전 단계(t_{n-1})의 정보까지 활용하여 다음 단계(y_{n+1})의 값을 계산한다.

7. 코드 예시


```cpp

#include

// 초기값을 2로 설정 (y(0)=2)

double y = 2.0;

// 오일러 방법을 사용하여 미분방정식의 근사해를 구하는 함수

// dt: 독립변수 증가량 (시간 간격)

// t_end: 독립변수의 최종값 (계산 종료 시간)

void EulerMethod(double dt, double t_end) {

double dydt; // y의 변화율 (y')

// 독립변수 t는 0부터 시작

for (double t = 0; ; t = t + dt) {

// 현재 시간 t와 근사해 y를 소수점 둘째 자리까지 출력

printf("%.2f \t %.2f\n", t, y);

// 예시 미분방정식: y' = 4

// 실제 문제에서는 이 부분에 해당 미분방정식의 우변을 계산하는 코드를 넣어야 함

dydt = 4;

// 오일러 방법 적용: y_{n+1} = y_n + dt * f(t_n, y_n)

y = y + dt * dydt;

// 계산 종료 조건 확인: 현재 시간 t가 목표 시간 t_end 이상이면 반복 종료

if (t_end <= t) {

break;

}

}

}

int main(void) {

// EulerMethod 함수 호출: 시간 간격 0.01로 시간 3까지 단계적으로 계산

// 초기값 문제 y(0)=2, y'=4를 푸는 예시

EulerMethod(0.01, 3);

return 0;

}

```

C++ 코드는 초기값 문제 를 오일러 방법으로 푸는 간단한 예시이다. `EulerMethod` 함수는 시간 간격 `dt`와 계산을 멈출 시간 `t_end`를 인자로 받는다. `for` 반복문 안에서 현재 시간 `t`와 그때의 근사해 `y`를 출력하고, 주어진 미분방정식(`dydt = 4`)에 따라 다음 단계의 `y` 값을 계산한다. `main` 함수에서는 `dt = 0.01`, `t_end = 3`으로 설정하여 함수를 호출한다. 즉, 시간 t=0부터 t=3까지 0.01 간격으로 근사해를 계산한다.

  • Maple 코드

Maple과 같은 수식 처리 소프트웨어를 사용해서도 오일러 방법을 구현할 수 있다.

8. 응용 사례

영화 ''히든 피겨스''에서 캐서린 고블은 우주 비행사 존 글렌의 지구 궤도 재진입을 계산하는 데 오일러 방법을 사용한다.[22]

참조

[1] 서적
[2] 서적
[3] 서적
[4] 서적
[5] 서적
[6] 서적
[7] 서적
[8] 서적
[9] 서적
[10] 서적
[11] 서적
[12] 서적
[13] 서적
[14] 서적
[15] 서적
[16] 서적
[17] 서적
[18] 서적
[19] 서적
[20] 서적
[21] 서적 2017 IEEE 13th International Colloquium on Signal Processing & its Applications (CSPA) 2017-03
[22] 웹사이트 Meet the 'Hidden Figures' mathematician who helped send Americans into space http://www.latimes.c[...] 2017-01-09
[23] 서적
[24] 서적
[25] 웹사이트 Ordinary Differential Equation Solvers ODE23 and ODE45 http://blogs.mathwor[...] 2016-12-16



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com