Matip.png


안녕하세요? 교주 LGS입니다.

이번 시간에는 Taylor Series(테일러 급수)에 대해서 알아 보겠습니다.

급수(級數 Series)라는 것이 다른 것이 아니고 그냥 숫자들이 쭉 일렬로 나열되어 있는 거예요.


임의의 함수 f(x)는 Polynomial(다항식)으로 근사화 할 수 있습니다.

sin(x)를 A + Bx + Cx^2 + Dx^3 + Ex^4 + ...로 나타낼 수 있단 말입니다요.

f(x)를  A + Bx + Cx^2 + Dx^3 + Ex^4 + ... 이라고 가정하고 (즉 실제 f(x)는 다항식이 아닌데  f(x)를 다항식이라고 가정)

x = 0 에서의 (모든) 미분값을 알고 있다면~

(다시 말해 f(0), f'(0), f''(0), ... ,f(n)(0), ...의 값을 알고 있다면. f(n)는 f(x)를 n번 미분했다는 이야기)


Taylor_LGS01.png


다항식의 계수 A,B,C,D,... 를 쉽게 계산 할 수 있습니다.

다항식의 항의 개수가 많아질 수록(n이 커질 수록) 다항식이 실제 f(x)에 근접하게 되고 

만약 n -> ∞로 간다면 f(x)와 다항식은 일치하게 됩니다. (어랏 !! FFT에서 보던 것이랑 비슷하네요 ^^)

아래 에니메이션을 잘 보세용. o(^o^)o


220px-Exp_series.gif

(이미지 출처: http://en.wikipedia.org/wiki/Taylor_series )



자~ 위에서 설명드린 것은 함수 f(x)를 x = 0을 기준으로 f(0),f'(0),f''(0)등을 사용하여  [다항식으로 근사화] 하는 것이였죠?

위와 같이 x = 0을 기준으로 Series를 전개한 것을 Maclaurin series(맥클로린 급수)라고 합니다.

(다시 말해 Maclaurin series는 Taylor series의 특별한 형태입니다.)

자주 등장하는 몇가지 함수에 대해서 Maclaurin series를 외워두시면 편합니다요. ^^

유도는 어렵지 않게 하실 수 있을 테구요...


Taylor_LGS04.png


sin(x)를 예로 들자면

Linear 강좌에서 보셨듯이 x가 0에 가까운 값이라면 (x가 매우 작은 값이라면) sin(x)를 x로 linearization(선형화) 할 수 있습니다.

(x가 0에 가까울 때 sin(x)의 Maclaurin series에서 x^3, x^5,,,, 항은 크기는 무지무지무지 작은 값이므로 무시할 수 있습니다.)


Series를 전개할 때 반드시 f(0),f'(0),f''(0),...에 관하여 전개 할  필요는 없습니다.

만약 [x가 0일 때]의 기준이 아니라 일반적인 값 x = a를 기준으로 f(x)를 근사화 한다면??

넵 ^^ 위에서 유도한 다항식을 x축으로 a만큼 옮겨주면 되겠죠?


Taylor_LGS05.png


이해하시는데 어려움이 없으실 테고요.^^ 위와 같은 형태로 일반적인 point a에 대해 [f(x)를 다항식으로 근사화한 것]이 Taylor series입니다.

오늘 강의는 여기서 끝~ ^^       이 아니라 한번 더 살짝 꼬아봅시다요~ 

위의 Taylor series에서 x를 x+h로 대체하고 a를 x로 대체하면~ 뿅!!


Taylor_LGS06.png  


초등학교 산수시간 이네요~ ^^

계산 과정에서 x+h-x가 h로 깔끔하게 떨어지고 최종적으로 맨 아래식을 얻게 됩니다.

자~ 맨 아래식을 다시 f'(x)에 대해서 정리를 하면 아래처럼 되구요


Taylor_LGS07.png


( f(x+h)-f(x) )/h 를 제외한 나머지 항들을 뭉퉁그려서 함수 O(h)로 나타내겠습니다.

O(h)를 Big O(빅 오)라고 읽습니다. O(h)에서 가장 영향력이 큰 h의 차수가 중요합니다. 왜 중요하냐면요...

O(h)에서 h가 매우 작은 값이라면 h^2, h^3, ... 이런 값들은 무시할 수 있을 정도로 작을 겁니다.

예를 들어 h가 0.001이라면 h^2은 0.000001 이고 h^3은 10^-9 입니다요 -_-;; h보다 h^2과 h^3이 각각 1000배, 100만배 작은 값이므로

신경안쓰셔도 되겠죠? ^^ h^4,h^5.... 은 더 말할 필요가 없습니다.


 

Taylor_LGS08.png


컴퓨터로 f'(x)를 계산할 때 근사식으로 위의 식을 쓰거든요. (오홋!! Taylor series가 미분을 구할 때 쓰이는 군요!!)

위와 같은 방법으로 f'(x)를 계산하는 방법을 Forward difference라고 합니다.

f'(x)를 계산하고자하는 곳 x보다 h만큼 앞에있는 (forward) f(x+h)을 참조하죠? ^^


그런데 위의 f'(x) = (f(x+h)-f(x))/2 는 정확한 f'(x)가 아닙니다.

위의 식은 정확한 f'(x)에서 O(h) term을 생략했죠? 즉 진짜 f'(x)와 컴퓨터로 계산한 f'(x)는 O(h)만큼 차이(error)가 발생합니다.

Error를 줄이려면 어떻게 해야할까요? ^^ 밑으로 내려가기전에 잠시 생각해보세요~


넵 h의 크기를 줄이시면 됩니다.

h가 작으면 작을 수록 error (O(h) = -hf''(x)/2 - ...) 도 작아지겠죠? 

h가 0으로 가면 컴퓨터로도 정확한 f'(x)를 구할 수 있을 겁니다. ( h->0 then error O(h)->0 )

잘 생각해보시면 error가 줄어드는 속도가 h가 작아지는 속도랑 같습니다. 즉 h가 반으로 줄어 들면 error도 반으로 줄어든 다는 말입니다.

(h^2, h^3 등은 값이 미미하므로 거의 영향을 미치지 못합니다.)

다른 말로하면 error가 first order로 작아지네요. =(=^ㅅ^=)=

O(h)의 h가 first order죠? 즉 Big O의 order가 error가 수렴하는 속도를 나타냅니다. 이해되셨나요?


다시 이번에는 Taylor series에 (x -> x - h), (a -> x)를 대입하고 식을 정리해보면 아래의 식을 얻을 수 있고


Taylor_LGS10.png  


위의 식을 f'(x)에 대하여 정리하면~ 짠~

Taylor_LGS11.png

위와 같이 f'(x)를 (f(x)-f(x-h))/h로 계산하는 방법을 Backward difference라고 하구요~

Backward difference도 Forward difference와 마찬자기로 Big O  O(h)가 1st order 이네요.

그래프를 그려보면 아래처럼 될꺼구요~

 Taylor_LGS09.png


눈치 체셨겠지만 Forward difference와 Backward difference로 구한 x에서의 접선의 기울기 f'(x)가 서로 다름을 알 수 있습니다.

같은 지점 x에 대해서 f'(x) 가 다른 이유는 역시 error인 Big O에 기인하구요~

h가 작아지면 Forward difference와 Backward difference의 차이도 줄어 들 것입니다.


f'(x)를 계산하는 방법에는 △(Forward difference)와 (Backward difference)보다 좀더 nice한 방법이 있습니다.

위의 그래프를 잘 보시면 Forward difference의 경우는 실제 기울기 f'(x)보다는 조금 작은 것(완만) 같고 

Backward difference는 실제 기울기 f'(x)보다 조금 큰 것(가파름) 같네요.

그!렇!다!면! Forward와 Backward difference를 평균을 내면?? 즉 ( B)/2 가 실제 f'(x)에 좀더 근접한 녀석이지 겠죠? ^^


f(x+h)와 f(x-h)를 각각 Taylor series로 expansion 한 다음 f(x+h)에서 f(x-h)를 빼주면 


 Taylor_LGS12.png


중복되는 f(x), (h^2/2)f''(x),... 등의 항이 사라지고 다시 f'(x)로 정리하면


Taylor_LGS14.png

보이시나요? ^^ Big O의 order가 second order인것이!! (O(h2))

즉 h가 1/2 으로 줄어들면 error가 1/4 로 줄어 듭니다. 와우!! 

위와 같이 f(x+h)와 f(x-h)를 가지고 f'(x)를 계산하는 방식을 Centered difference(C)라고 하구요.

Centered difference는 error가 사라지는 속도가 Forward, Backward difference와는 비교도 되지 않게 빠릅니다. 예~  o(^o^)o


Taylor_LGS13.png


자~ 지금까지 위에서 설명드린 1차원에서 컴퓨터로  f'(x)를 계산하는 방법을 Finite Difference Method (FDM)라고 합니다.

(무한개 infinite가 아니라) 유한개(finite)의 구간(x-h, x, x+h)으로 쪼개서 계산했었죠? ^^

사실 무식한 컴퓨터는 무한(infinite)의 개념을 이해 할 수 없습니다. 켁

컴퓨터는 연속(continuous), 무한(infinite)의 개념을 이해할 수 없으므로 continuous, infinite과 관련된 문제는

불연속(discrete), 유한(finite)으로 바꾸어 처리해야 합니다.


FDM을 기본으로...

FDM(Finite Difference Method) -> FVM(Finite Volume Method) -> FEM(Finite Element Method) -> DG method(Discontinuous Galerkin method) 

등으로 발전하게 됩니다. (각각의 방법은 장단점이 있습니다.)


아흐~ Taylor series에서 너무 멀리 와버렸네요 ㅜㅜ 이쯤에서 마무리 하고...

Taylor series와 관련하여 MATLAB에서 Symbolic Toolbox를 활용한 Taylor Tool 이라는 GUI를 제공하고 있습니다.

command window에서 >>taylortool 이라고 입력하시면 아래 화면을 보실 수 잇어요. ^^


Taylor_LGS03.gif


오늘은 여기까지!!

다음 시간에 뵈요~ 뿅 ^ㅠ^

profile