수치해석학은 컴퓨터를 이용하여 수학적인 문제를 해결하기 위한 방법에 관한 학문이다. 알고리즘과는 다음과 같은 관점에서 다르다.
알고리즘은 일반적으로 특정한 조건을 만족하는 해를 찾아 내기 위한 명확한 절차를 의미하며, 많은 경우 보다 적은 연산을 이용하여 문제의 해를 찾고자 한다. 예를 들면 2차원 평면 상에 N개의 점이 뿌려져 있을 때 N개의 점을 모두 포함하는 가장 작은 다각형을 그린다고 할 때 그 도형의 모서리에 있게 되는 점을 찾는 convex hull 문제와 같은 것. 혹은 보다 일반적으로는 정렬 문제. 그러나 수치해석학은 일반적으로 '수식'이 관여하는 문제의 '해'를 찾아 내기 위한 것이다. 예를 들면
ln(x) + x = K
이 때 K 가 임의의 실수라고 할 때 x 를 찾는 것. x를 양의 실수로 한정시키면 위의 문제에 대한 해를 찾는 것은 전형적인 수치해석학적인 문제가 된다. x 를 0 이 아닌 실수로 확장하고 K를 복소수로 하면 이 때부터는 수치해석학 + 알고리즘 이 되겠지. 왜냐 하면 '복소수'라는 새로운 자료 구조가 필요해지게 되니까. 1
전형적인 수치해석학 교재의 차례에는, 1. 방정식의 해를 구하는 것, 2. 주어진 점을 잇는 곡선을 찾아내는 것, 3. 함수가 주어지면 미분/적분을 계산해 내는 것, 4. 행렬이 주어지면 eigenvalue/eigenvector 를 찾아내는 것 등등이 나온다.
위에 예로 든 문제 ln(x) + x = K 에서, 우리는 일반적으로 x = 어쩌구저쩌구, 만약 근의 공식이라면 x = -b±√(b^2-4ac)/2a 였나... 여하튼 x 가 뭐라고 딱 나오는 형태로 바꿀 수 없게 된다. 이렇게, x = 어쩌구저쩌구 식으로 나타내는 해를 analytical solution 이라 말하며 이러한 형태의 수식을 closed-form 이라고 하는데, 수치해석학을 이용하면 해를 이렇게 closed-form 으로 표현할 수 없는 문제라 하더라도 해를 '근사'할 수 있게 된다. 가장 유명한 경우가 5차 이상의 다항식에 대한 해. 이 경우 2차 방정식의 '근의 공식'과 같은 해가 존재할 수 없다는 것이 그 유명한 갈루아 이론에서 나온 결과.
또 하나의 유용한 예는 미분/적분에 관한 경우. 예를 들면
저 간단한 식의 값은 결코 x=... 과 같은 형태로 나올 수 없다. 저 식은 정규분포에 대한 기본식인데, 바로 이렇게 x=... 처럼 analytic solution 이 존재하지 않기 때문에 통계책의 뒤에 표준정규분포에 대한 값이 table 로 있는 것이다. 만약 저 식이 integral (x = a to b) 2*x+1 dx 와 같았다면 x = ~~ 가 나오니 테이블 따위는 필요 없었겠지. 이렇게 analytic solution 으로 나오지 않는 경우라 해도 수치해석학을 이용하면 값을 계산해 낼 수 있다. 통계책 뒤에 있는 테이블이 바로 그렇게 계산된 것들이다. 미분도 마찬가지라서 f(x) = x^2 + a*x + 5, 와 같아서 f'(5) 를 계산해야 한다고 하면 아주 쉽게 f'(x) = 2*x + a |x=5를 이용하여 f'(5)가 10+a 라는 것을 알 수 있겠지만 이렇게 직접 f'(x)를 closed-form 으로 갖지 않고도 계산해 낼 수 있게 해준다. 또한 f'(x)를 알 때 f 를 찾는 미분방정식과 같은 경우 특히 수치해석학이 유용하다. 미방의 경우 analytic solution 이 알려진 문제는 극히 일부에 불과하기 때문에 수치해석학적으로 해를 찾는 것이 매우 중요하다고 할 수 있겠다. 편미분방정식도 마찬가지.
이 곳에 있는 글, 가령 cubic spline 이나 Runge-Kutta를 이용한 연립미분방정식의 해를 찾는 것이 모두 수치해석학 책에 나오는 것들이다.
(이 문서는 이 블로그에 수치해석학 을 키워드로 해서 접속하는 경우가 종종 있기에 작성한다.)
- log(X) 에서 X가 음수의 실수여도 log 연산자는 수학적으로 '잘 정의(well-defined)' 된다. [본문으로]
'컴퓨터 > 수학이랑' 카테고리의 다른 글
두 단어의 '유사도'를 측정하기 (resemblance) (0) | 2010.07.06 |
---|---|
resampling을 이용한 방법 (bootstrapping) (3) | 2010.07.02 |
배열의 모든 요소가 같은 부호를 갖고 있는지 판단하기 (0) | 2010.06.09 |
미분방정식에 대한 수치해석학적 해(Runge-Kutta) - 구현 (9) | 2010.05.23 |
미분방정식에 대한 수치해석학적 해(Runge-Kutta) - 원리 (6) | 2010.05.23 |