테일러 전개란?
복잡한 함수를 “간단한 다항식”으로 바꿔서 계산하는 방법이다.
왜 필요한가?
- , 같은 복잡한 함수를 직접 계산하는 것은 어렵다
- 하지만 같은 다항식은 덧셈과 곱셈만으로 계산 가능
- 테일러 전개는 복잡한 함수를 이런 간단한 다항식으로 바꿔준다
핵심 컨셉
한 점에서의 정보(값, 기울기, 곡률 등)를 이용해서 주변 값들을 추정한다.
직관적 이해
산 정상에서 주변 지형 추측하기
당신이 산 정상에 서 있다고 상상해보자.
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
-
어떤 대상을 다른 대상과 거의 비슷하거나 가깝게 표현하는 것 ↩