MATip - Taylor Series and Finite Difference Method(FDM)
http://www.matlabinuse.com/20934 2013.February.13.수 16:30 [*.220.27.120]21883 Views
안녕하세요? 교주 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)를 다항식이라고 가정)
(다시 말해 f(0), f'(0), f''(0), ... ,f(n)(0), ...의 값을 알고 있다면. f(n)는 f(x)를 n번 미분했다는 이야기)
다항식의 계수 A,B,C,D,... 를 쉽게 계산 할 수 있습니다.
다항식의 항의 개수가 많아질 수록(n이 커질 수록) 다항식이 실제 f(x)에 근접하게 되고
만약 n -> ∞로 간다면 f(x)와 다항식은 일치하게 됩니다. (어랏 !! FFT에서 보던 것이랑 비슷하네요 ^^)
아래 에니메이션을 잘 보세용. o(^o^)o
(이미지 출처: 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를 외워두시면 편합니다요. ^^
유도는 어렵지 않게 하실 수 있을 테구요...
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만큼 옮겨주면 되겠죠?
이해하시는데 어려움이 없으실 테고요.^^ 위와 같은 형태로 일반적인 point a에 대해 [f(x)를 다항식으로 근사화한 것]이 Taylor series입니다.
오늘 강의는 여기서 끝~ ^^ 이 아니라 한번 더 살짝 꼬아봅시다요~
위의 Taylor series에서 x를 x+h로 대체하고 a를 x로 대체하면~ 뿅!!
초등학교 산수시간 이네요~ ^^
계산 과정에서 x+h-x가 h로 깔끔하게 떨어지고 최종적으로 맨 아래식을 얻게 됩니다.
자~ 맨 아래식을 다시 f'(x)에 대해서 정리를 하면 아래처럼 되구요
( 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.... 은 더 말할 필요가 없습니다.
컴퓨터로 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)를 대입하고 식을 정리해보면 아래의 식을 얻을 수 있고
위의 식을 f'(x)에 대하여 정리하면~ 짠~
위와 같이 f'(x)를 (f(x)-f(x-h))/h로 계산하는 방법을 Backward difference라고 하구요~
Backward difference도 Forward difference와 마찬자기로 Big O O(h)가 1st order 이네요.
그래프를 그려보면 아래처럼 될꺼구요~
눈치 체셨겠지만 Forward difference와 Backward difference로 구한 x에서의 접선의 기울기 f'(x)가 서로 다름을 알 수 있습니다.
같은 지점 x에 대해서 f'(x) 가 다른 이유는 역시 error인 Big O에 기인하구요~
h가 작아지면 Forward difference와 Backward difference의 차이도 줄어 들 것입니다.
f'(x)를 계산하는 방법에는 △F (Forward difference)와 △B (Backward difference)보다 좀더 nice한 방법이 있습니다.
위의 그래프를 잘 보시면 Forward difference의 경우는 실제 기울기 f'(x)보다는 조금 작은 것(완만) 같고
Backward difference는 실제 기울기 f'(x)보다 조금 큰 것(가파름) 같네요.
그!렇!다!면! Forward와 Backward difference를 평균을 내면?? 즉 (△F + △B)/2 가 실제 f'(x)에 좀더 근접한 녀석이지 겠죠? ^^
f(x+h)와 f(x-h)를 각각 Taylor series로 expansion 한 다음 f(x+h)에서 f(x-h)를 빼주면
중복되는 f(x), (h^2/2)f''(x),... 등의 항이 사라지고 다시 f'(x)로 정리하면
보이시나요? ^^ 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
자~ 지금까지 위에서 설명드린 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_LGS01.png (64.6KB)(1)
- 220px-Exp_series.gif (65.2KB)(2)
- Taylor_LGS03.gif (124.0KB)(1)
- Taylor_LGS04.png (20.8KB)(0)
- Taylor_LGS05.png (7.9KB)(0)
- Taylor_LGS06.png (34.3KB)(0)
- Taylor_LGS08.png (10.4KB)(0)
- Taylor_LGS07.png (9.0KB)(0)
- Taylor_LGS09.png (19.8KB)(0)
- Taylor_LGS10.png (5.4KB)(0)
- Taylor_LGS11.png (5.4KB)(1)
- Taylor_LGS12.png (10.5KB)(0)
- Taylor_LGS13.png (20.2KB)(0)
- Taylor_LGS14.png (9.5KB)(0)