본문 바로가기

스터디

4. 심파이(SymPy)로 공부하는 미적분


책에 있던 모든 내용을 다루지는 않는다. 어렵거나 부연 설명이 필요한 부분만 다룰 것이다.  
  
1. 테일러 급수  
2. Gradient Vector, Jacobian Matrix, Hessian Matrix    

테일러 급수

테일러 급수(Taylor Series) 또는 테일러 전개(Taylor Expansion)은 어떤 함수 $f(x)$를 우리가 다루기 쉬운 다항함수 형태로 바꾸어 준다.  
  
$f(x)=p_{\infty}(x)$  
$p_n(x)=f(a)+f'(a)(x-a)+{f''(a)\over 2!}(x-a)^2+...+{f^{(n)}(a)\over n!}(x-a)^n$  
$\qquad\quad=\Sigma_{k=0}^{n}{f^{(k)}(a)\over k!}(x-a)^k$  
  
근사다항식의 차수가 높으면 높을수록 $p_n(x)$는 $f(x)$를 잘 근사하게 된다.  
  
주의해야 할 사항은 모든 $x$에 대해서 잘 근사하는 것이 아니라 $x=a$ 근처에서만 잘 근사한다는 것이다. 즉, $x$가 $a$로부터 멀어지면 멀어질수록 $f(x)=p(x)$는 큰 오차를 갖게 된다.  
  
그렇다면 위에서 봤던 $p_n(x)$는 어떻게 구한 것일까  
  
테일러 급수는 미적분의 기본 정리로부터 출발한다.  
  
$\int_a^xf'(t)dt=f(x)-f(a)$  
$f(x)=f(a)+\int_a^xf'(t)dt$  
  
이제 우변의 마지막 항인 $\int_a^xf'(t)dt$를 부분적분을 활용해 바꿔줄 것이다.  
  
$\int_a^xf'(t)dt=\int_a^x1\cdot f'(t)dt$  
$\qquad\qquad =[(t+c)f'(t)dt]_a^x-\int_a^x(t+c)f''(t)dt$  
  
여기서 $c$는 적분상수이기 때문에 우리가 원하는 값을 넣을 수 있다. $c$에 $-x$를 대입한다.  
  
$\qquad\qquad =[(t-x)f'(t)dt]_a^x-\int_a^x(t-x)f''(t)dt$  
$\qquad\qquad =(x-x)f'(x)-(a-x)f'(a)-\int_a^x(t-x)f''(t)dt$  
$\qquad\qquad =(x-a)f'(a)-\int_a^x(t-x)f''(t)dt$  
  
정리하면 다음과 같다.  
  
$p_1(x)=f(a)+(x-a)f'(a)-\int_a^x(t-x)f''(t)dt$  
  
마찬가지로 마지막 항인 $-\int_a^x(t-x)f''(t)dt$를 부분적분을 활용해 바꿔줄 것이다.  
  
$-\int_a^x(t-x)f''(t)dt=-([{(t-x)^2\over 2}f''(t)]_a^x-\int_a^x{(t-x)^2\over 2}f'''(t)dt)$  
$\qquad\qquad\qquad\qquad ={(x-a)^2 \over 2}f''(a)+\int_a^x{(t-x)^2\over 2}f'''(t)dt$  
  
정리하면 다음과 같다.  
  
$p_2(x)=f(a)+(x-a)f'(a)+{(x-a)^2 \over 2}f''(a)+\int_a^x{(t-x)^2\over 2}f'''(t)dt$  
  
마찬가지로 마지막 항인 $\int_a^x{(t-x)^2\over 2}f'''(t)dt$를 부분적분을 활용해 바꿔줄 것이다.  
  
$\int_a^x{(t-x)^2\over 2}f'''(t)dt=[{(t-x)^3\over 2\cdot 3}f'''(t)]_a^x-\int_a^x{(t-x)^3\over 2\cdot 3}f''''(t)dt$  
$\qquad\qquad\qquad\quad ={(x-a)^3 \over 2\cdot 3}f'''(a)-\int_a^x{(t-x)^2\over 2\cdot 3}f'''(t)dt$  
  
정리하면 다음과 같다.  
  
$p_3(x)=f(a)+(x-a)f'(a)+{(x-a)^2 \over 2}f''(a)+{(x-a)^3 \over 2\cdot 3}f'''(a)-\int_a^x{(t-x)^2\over 2\cdot 3}f'''(t)dt$  
  
이 정도 해보면 패턴이 눈에 보일 것이다. $p_n(x)$는 다음과 같다.  
  
$p_n(x)=f(a)+f'(a)(x-a)+{f''(a)\over 2!}(x-a)^2+...+{f^{(n)}(a)\over n!}(x-a)^n$  
$\qquad\quad=\Sigma_{k=0}^{n}{f^{(k)}(a)\over k!}(x-a)^k$  
  
참고로 테일러 급수는 보통 $a$에 0을 넣어서 사용하는데, 이를 매클로린 급수(Maclaurin Series)라고 한다.  
  
또한, 일반적으로 테일러 급수는 1차 또는 2차까지만 하는 경우가 많다. 1차, 2차 다항함수로 근사할 경우에는  
  
$f(x)\approx p_1=f(a)+(x-a)f'(a)+Q_2(x)$  
$f(x)\approx p_2=f(a)+(x-a)f'(a)+{(x-a)^2 \over 2}f''(a)+Q_3(x)$  
  
와 같이 놓고, $Q(x)$를 0으로 간주해 무시한다. 이 경우, $f(x)$를 무한차수 다항함수로 근사하는 것 보다는 근사오차가 크지만, $x$가 충분히 $a$에 가까운 경우에는 근사오차가 거의 없다.

테일러 급수가 필요한 이유

1. 잘 모르거나 복잡한 함수를 다루기 쉽고 이해하기 쉬운 다항함수로 대체
2. 함수의 특성을 분석하기 용이

 

Jacobian Matrix

우선 선형 변환에서부터 시작한다.

$\begin{bmatrix}
f_1(x,y) \\
f_2(x,y)
\end{bmatrix}=\begin{bmatrix}
x+sin(y) \\
y+sin(x)
\end{bmatrix}$

라는 선형 변환이 있다고 하자.

이 선형 변환을 통해 위 좌표계를 아래와 같은 것으로 바꿔준다. 보면 알겠지만, 이것은 선형 변환이라고 볼 수 없다.

이런 상황에서 유용한 것이 Locally Linear다. Locally Linear는 변환의 전체 결과는 비선형 변환이지만 아주 작게 쪼갠 것의 결과는 선형 변환이라는 말이다. 아래 그림으로 확인할 수 있다. (여기서 아주 작게 쪼갠다는 것에서 극한의 개념이 들어간다.)

Locally Linear를 행렬로 나타내면 다음과 같다.

$\begin{bmatrix}
\partial f_1\over \partial x & \partial f_1\over \partial y \\
\partial f_2\over \partial x & \partial f_2\over \partial y
\end{bmatrix}$

이것을 Jacobian Matrix라고 한다.

 

출처  
  
김도형의 데이터사이언스 스쿨 수학편  
  
다크 프로그래머
통계의 본질 EOStatistics

칸 아카데미