BiSection Method
BiSection Method는, 어떤 함수 f(x) = 0이 주어졌을 때, x를 찾기 위한 방법으로 특정 구간을 계속 반으로 나누어가면서 근의 존재 여부를 판단하는 방법이다. 여기서 f(x)는 연속 함수여야 한다. 여기서 구하고자 하는 x는 실근이므로, y = 0과 교점을 가져야 한다. 먼저, 특정 구간 [a, b]를 선택하여 f(a), f(b)를 계산하고, 중간점 (f(a) + f(b)) / 2를 계산한다. f(a) * f(mid)가 0보다 작다면, 다음에 탐색해야 할 구간은 [a, mid]가 되며, 반대로 0보다 크다면 다음에 탐색해야 하는 구간은 [mid, b]가 된다. Binary Search와 동일한 방법이라 할 수 있다. BiSection Method는 언제나 근을 찾을 수 있다는 것을 보장..
더보기
Truncation Error and Round-Off Error
로그 함수나 사인 함수와 같은 것을 계산한다고 해보자. 가장 간단한 방법은, 간단히 계산기를 꺼내서 두들겨 보는 것이다. 그러나, 이것은 트랜지스터 시대를 살아가는 사람들의 이야기이고, 트랜지스터가 등장하기 전, 사람의 손으로만 계산을 해야 했던 시대에서는 어떠한가? 주어진 식을 테일러 급수와 같은 것으로 전개하여, 가능한 높은 정확도로 미리 계산하여 표로 만들어 두고, 이렇게 미리 만들어진 표를 참조하여 값을 얻는 것이 가장 간단한 방법이었을 것이다. 그러나, 이렇게 컴퓨터를 사용하는 방법이나, 급수 전개를 통한 방법으로 얻어진 값은 완전히 정확한 값은 아니다. 주어진 최초의 식을 테일러 급수를 사용하여 전개하면, 이것은 원래 식과 완전히 같은 식이 아니라, 비슷한 값을 얻을 수 있는 근사식의 형태로 ..
더보기
POSIX PTHREAD for Win32
Win32 환경에서 스레드 프로그래밍을 한다면, 당연히 Win32 스레드를 사용할 것이다. 스레드와 동기화 매커니즘은, 그 플랫폼에서 제공하는 관련 라이브러리를 사용하는 것이 가장 성능이 좋고, 안정성도 뛰어나기 때문이다. 다만, 문제는 Win32 스레드는 특정 벤더의, 특정 플랫폼에서의 구현이라는 점이다. Win32 스레드도 사용하기 쉬운 편에 속하지만, 윈도우를 어느 정도 알고 있어야 한다. 간단히 말해, 널리 알려진 POSIX PTHREAD와 다르기 때문에, Win32 환경에서 스레드 프로그래밍을 시작하려는 사람에게는 적당하지 않다. 특히, GNU 환경을 Win32에 포팅한 MinGW에서 스레드 관련 라이브러리를 제공하지 않기 때문에, 이런 아쉬움은 더욱 크다. 이런 사람들을 위해 POSIX PTH..
더보기