본문 바로가기

Taylor Series

Log Function Implementation 로그(log, ln) 함수의 구현은 본질적으로 arctan와 비슷한 문제를 가지고 있다. 먼저, 로그 함수의 x 값을 적절히 바꾸어서 테일러 급수 형태로 전개해보면, 다음과 같은 형태를 얻게 된다. ln(x) = 2 (z + z^3 / 3 + z^5 / 5 + z^7 / 7 + z^9 / 9 + ....) z = (x - 1) / (x + 1) arctan와 마찬가지로, 분모가 대단히 느리게 커지고 있으며, 이것은 매우 천천히 구하고자 하는 값에 수렴하는 것을 의미한다. 로그 함수를 구현해야 한다면, 이것은 매우 치명적인 일이다. 하지만, 앞에서 이미 연분수(continued fraction)를 사용하여 이 문제를 효과적으로 다루었던 것처럼, 로그 역시 연분수를 사용해서 나타낼 수 있다. 그렇다면, 남은.. 더보기
Sine Function Implementation 사인(sine) 함수를 구현하는데 가장 중심이 되는 전략은, 사인 함수와 같은 삼각 함수가 주기 함수라는 것이다. 즉, 입력값이 계속 변하는 것이 아니라, 일정값을 중심으로 계속해서 변하기 때문에 특정 입력 범위에 대해서 상수 시간의, 적절한 오차의 계산만 해주면 쓸만한 구현을 얻을 수 있다. 특히, 사인 함수를 테일러 급수(Taylor Series)를 전개해서 근사식을 얻어보면, 각 항의 분모가 매우 빠르게 수렴한다는 것을 알 수 있다. 먼저, 사인 함수를 테일러 급수를 사용해서 전개하면 다음과 같다. sin(x) = x - (x^3 / 3!) + (x^5 / 5!) -(x^7 / 7!) + .... 즉, 테일러 급수로 전개했을 때 sin(x)의 일반항은, sin(n)(x) = (-1)^n * ((x^.. 더보기