테일러 전개란?


복잡한 함수를 “간단한 다항식”으로 바꿔서 계산하는 방법이다.



왜 필요한가?


  • , 같은 복잡한 함수를 직접 계산하는 것은 어렵다
  • 하지만 같은 다항식은 덧셈과 곱셈만으로 계산 가능
  • 테일러 전개는 복잡한 함수를 이런 간단한 다항식으로 바꿔준다


핵심 컨셉


한 점에서의 정보(값, 기울기, 곡률 등)를 이용해서 주변 값들을 추정한다.



직관적 이해


산 정상에서 주변 지형 추측하기

당신이 산 정상에 서 있다고 상상해보자.

0차 근사1 (그냥 평평하다고 가정)
  • “주변도 다 이 높이야!”
  • 현재 위치의 높이만 사용
  • 가장 부정확하지만 가장 간단

1차 근사 (경사만 고려)
  • “이 방향으로 가면 이만큼 올라가겠네”
  • 현재 위치 + 경사(기울기) 정보 사용
  • 직선으로 추정

2차 근사 (경사 + 곡률 고려)
  • “경사가 점점 가파르게/완만하게 변하네”
  • 현재 위치 + 경사 + 곡률 정보 사용
  • 곡선으로 추정 (더 정확)


수식 (단계별 이해)


1변수 함수의 테일러 전개


기본 형태


각 항의 의미
  • : 점 에서의 값 (현재 높이)
  • : 기울기 효과 (경사 × 이동거리)
  • : 곡률 효과 (곡률 × 이동거리²)
  • 이후 항들 : 더 세밀한 변화들

요약 형태


3차원 벡터 함수의 테일러 전개


2차까지 근사


각 항의 의미
  • : 점 에서의 값
  • : 그래디언트 (각 방향의 기울기)
  • : 헤시안 행렬 (각 방향의 곡률)


활용


  • 복잡한 함수를 간단한 다항식으로 근사
  • 함수의 동작을 예측하고 분석
  • 게임/물리 시뮬레이션에서 빠른 근사 계산
  • Fast Winding Number 같은 기하 계산 최적화


원리 (쉬운 설명)


단계별로 이해하기


0차 근사: “그냥 같은 값이야”

에서의 값을 그대로 사용. 가장 단순하지만 부정확.

예시 )

f(3) = 10 이면, 
f(3.1)도 그냥 10이라고 추측

1차 근사: “경사대로 올라가거나 내려가”

의 기울기를 이용해 직선으로 근사.

예시 )

f(3) = 10, f'(3) = 2 (기울기)이면
f(3.1) ≈ 10 + 2×(3.1-3) = 10 + 0.2 = 10.2

2차 근사: “경사가 변하는 것도 고려”

곡률까지 고려해서 곡선으로 근사.

예시 )

f(3) = 10, f'(3) = 2, f''(3) = 0.5 (곡률)이면
f(3.1) ≈ 10 + 2×0.1 + 0.5×0.01/2 = 10.2025


언제 정확한가?


가까울수록 정확
  • 전개 중심점 에 가까우면 매우 정확
  • 멀어질수록 오차 증가

차수가 높을수록 정확
  • 0차 < 1차 < 2차 < 3차 …
  • 하지만 계산량도 함께 증가

비유 : 지도 확대
  • 1cm 주변: 매우 정확
  • 1km 주변: 오차 발생
  • 100km 주변: 많이 틀림


매클로린 급수 (Maclaurin Series)


인 특수한 경우를 매클로린 급수라고 한다.

대표적인 매클로린 급수


다변수 함수의 테일러 전개


3차원 벡터 함수 를 점 주변에서 전개하면:

1차 근사

// 1차 테일러 근사
double Approximate1stOrder( Vector3d x, Vector3d a, Vector3d gradient )
{
    double f_a = EvaluateFunction( a );
    Vector3d dx = x - a;
    return f_a + Dot( gradient, dx );
}

2차 근사

// 2차 테일러 근사
double Approximate2ndOrder( Vector3d x, Vector3d a, Vector3d gradient, Matrix3d hessian )
{
    double f_a = EvaluateFunction( a );
    Vector3d dx = x - a;
 
    double order1 = Dot( gradient, dx );
    double order2 = 0.5 * dx.Dot( hessian * dx );
 
    return f_a + order1 + order2;
}


특성


수렴 반경 (Radius of Convergence)
  • 테일러 급수가 수렴하는 범위는 함수와 전개 중심점에 따라 다르다.
  • 범위에서 수렴한다. (: 수렴 반경)

오차 평가 (Error Estimation)
  • 나머지 항(Remainder Term): (단, 사이의 값)
  • 고차 항을 무시할수록 오차가 증가한다.

전개 중심점의 중요성
  • 전개 중심점 에서 가까울수록 근사가 정확하다.
  • 멀어질수록 더 높은 차수가 필요하다.

미분 가능성
  • 테일러 전개를 하려면 함수가 충분히 미분 가능해야 한다.
  • 차 테일러 전개는 번 미분 가능한 함수에 적용 가능하다.


실용적 고려사항


차수 선택

  • 1차: 빠르지만 정확도 낮음, 선형 근사
  • 2차: 균형잡힌 선택, 곡률 고려
  • 3차 이상: 정확하지만 계산 비용 증가

적용 조건

  • 전개 중심점에서의 거리가 충분히 가까워야 함
  • Fast Winding Number에서는 거리 조건:
// 테일러 근사 사용 가능 여부 판정
bool CanUseTaylorApproximation( Vector3d center, double radius, Vector3d query, double beta = 2.0 )
{
    double distance = Distance( center, query );
    return distance > beta * radius;
}


Footnotes

  1. 어떤 대상을 다른 대상과 거의 비슷하거나 가깝게 표현하는 것