수치해석

Numerical Analysis
shame analysis

1 개요

수학과 과목의 아웃사이더이지만, 공대에서는 주요과목
경제학과 대학원생이 모르면 교수님께 욕을 한바가지 얻어먹을 가능성이 있음
중고등학교때 확률 문제 나오면 모든 경우를 일일이 그려서 풀던 사람들이 좋아할 만한 과목
우리가 흔히 말하는 '시뮬레이션'의 근간.
순수수학이나 공학에서 다루는 부분은 조금씩 다르지만, 전체적으로 보자면 선형대수 이론의 수치적 계산, 방정식의 수치해 계산, 미분방정식의 수치해 계산 등 지금까지 다뤄진 이론의 계산 방법을 다루는 과목이다. 만약 이 학문의 발전이 더뎠다면 지금 당신이 쓰고 있는 컴의 발전 역시 없었을 것이며, 계산이 필요한 수많은 분야의 발전 역시 더뎠을 것이다. 당장 컴에서 사용할 계산 알고리즘의 태반이 수치해석을 기반으로 나온 거다.

예를들어, 아무것도 없는 텅 빈 공간에 람보르기니 모양의 전도체가 있고 거기에 5V의 전압을 걸었다고 하자. 그럼 그 전도체에 의한 전도체 외부에서 전기장의 분포는 어떤 특정한 미분방정식[1] 을 따를 것이고 그 미분방정식에 초기조건을 대입하여 풀면 모든 지점에서의 전기장의 방향과 세기를 알 수 있다. 이론적으로는. [2]

상식적으로 생각하면 람보르기니 모양의 초기조건이라는 괴랄한 조건 덕에 위 미분방정식의 정확한 해를 구하는건 불가능하거나 가능하다 하더라도 얻는데 엄청난 시간이 소요될 것이다. 때문에 다른 방법을 모색해야하는데, 그 중 하나는 문제를 풀기 쉽게 바꾸는 것이다. 위의 예시에 적용시키지자면 공간을 조각조각 나눔으로써 상황을 단순화 시키고 그 단순화 된 상황을 분석해서 근사적인 방정식의 해를 얻는 것이다. 이것이 수치해석에서 자주 쓰이는 유한요소법(Finite element method)이다. [3]

보통 고등학교나 대학 1학년 미적분학에서는 미분 배우고 적분을 배우나, 수치해석은 적분을 배우고 미분을 배운다. 학문적 접근방법이 많이 다르다. 적분은 합에 대한 알고리즘, 미분은 차와 나눗셈에 대한 알고리즘이다. 그래서 적분이 앞에 온다.

2 수학과에서

수학과 과목 중 계산과 알고리즘에 치중하는 몇 안되는 과목이다.

수학과 학부 레벨에서 개강은 되지만 의외로 이 과목의 진의를 강의를 들으며 깨닫는 사람은 그리 많지 않다. 여러가지 이유가 있지만 크게 보면,

(1) 수치해석을 들을 즈음에는 사람들이 추상화된 개념에서 세워진 정의와 명제를 바탕으로 논리적인 추론을 통한 증명에 이미 익숙해진다. [4]
(2) 이 학문의 필요성에 대하여 쉽게 피부로 느끼지 못하는 까닭이다. 계산하는 방법을 신나게 다루면서 손으로 예제를 풀려고 하면 매우 단순한 경우만 보게 된다. 실제로 프로그래밍을 해본다던가, 적어도 패키지를 써보지 않으면 단순 계산 노가다일 뿐이다.
(3) 강의의 흐름상, 계산을 중점적으로 다루게 되므로 방법만 안다면야 금방 따라하게 되는 것 또한 수치해석을 단순하게 생각할 수 있다.
(4) 왠지 모르게 수학과의 사파 과목처럼 느껴지는 것도 사실이다. (순수 수학의 추상성에 흠뻑 젖어있는 경우라면 더욱)

예를 들어, 학부수준 수치해석에서 초반에 등장하는 Newton-Raphson algorithm의 경우, 한 점에서 함수식을 미분해서 x절편찾고, 다시 그 x좌표에서 함수식을 미분해서 또 x절편찾고...의 반복으로 주어진 식의 해를 찾아가는 방법이다. 매우 간단하지 않은가? [5] 맘먹고 교수님이 수강생을 계산하는 기계로 만든다면, 아마 같은 학기에 듣게되는 여타 수학과목에 비해 난이도가 최소 2/3 정도로 느껴지게 될 것이다.

이 과목의 의미는 수치에 방점을 찍느냐 해석에 방점을 찍느냐에 따라 매우 다르게 볼 수 있다.

수치에 방점을 찍는 경우 이 과목의 의미는 지금까지 추상적으로 다뤄온 이론을 실제적으로 가져오는 수단을 배운다는 점이다. 학부때 열리는 개론 수준의 과목의 주된 이슈 중 하나는 역행렬을 구하는 방법인데, 의외로 이 작업은 계산이 많이 필요한 작업이다. 선형대수학에서 Gaussian elimination을 배운 뒤 역행렬을 구해보려고 하면 5x5쯤 되면 정신없어진다. 하물며 100x100 크기의 역행렬 계산이라면야...

이것 뿐만 아니라 여러가지 예가 있겠지만, 요약하자면 수학과의 기초를 형성하는 논리적이고 추상적인 수학의 범주에서는 해는 존재한다! 라는 존재성과 유일성이 중요했었다면, 수치해석은 그래서 그게 얼마인데? 라는 관점으로 접근하는 차이점이 있다고 하겠다. 즉 애초에 목적 자체가 다른 여타의 수학과의 과목들과는 다르다.

해석에 방점을 찍는 경우 이 과목의 의미는 해석학적으로 알고리즘을 분석해본다는 것이다. 위의 Newton-Raphson algorithm의 예를 다시 보면 해석학에서 왜 수열을 배우고 수렴을 배웠는지를 알게된다. 이 알고리즘은 근사적인 해를 계속 구하여 수열을 만드는 과정이다. 이 수열이 방정식의 해로 수렴하면 알고리즘이 극한에서 방정식의 해를 구하는 올바른 방법이 된다.

이 예에서 보듯이 해석에 방점을 찍는 수치해석은 일반적인 알고리즘 또는 새로 개발한 알고리즘에 관한 다음과 같은 해석학적 질문에 대한 답을 구한다.

  • 이 알고리즘이 수렴하는가? 즉, 알고리즘으로 구성한 해의 근사값의 수열이 수렴하는가?
  • 수렴한다면 문제의 정답으로 수렴하는가?
  • 정답으로 수렴한다면 얼마나 빨리 수렴하는가?
  • 수렴속도 질문의 다른 형태로서, 몇번을 반복해야 알고리즘의 계산값과 정답의 차이가 주어진 오차범위 안으로 들어오는가?

기초과정에서는 바나흐 부동점 정리를 이용하여 이러한 질문에 대한 답을 하는 방법을 배운다. 이러한 관점에서 보면 수치해석은 전형적인 응용해석학 과목이다. 좀더 고급과정에서는 함수해석의 응용으로 다루어지기도 한다.

3 공대에서

공학에서는 수학의 추상성보다는 현실적인 해,최적값을 찾는 것이 더 중요하다. 그러나 공학도들에게도 수치해석이라는 과목은 조금 별나게 느껴진다. 그 이유는 공학만을 다루다가 어찌되었든 조금 특이한 수학을 접하게 되기 때문. 물론 수치해석은 공학도들이 계속 다루게 될 여러 소프트웨어의 바탕이 되기 때문에 굉장히 중요하다. 그래서 공대생들은 한학기 동안 미친듯이 MATLAB프로그래밍을 하며 수치해석의 이론, 습득까지 수행하게 된다. MATLAB을 사용하지 않는다면 공학용 계산기에라도 프로그래밍을 한다(...).

컴퓨터와 같이 계산을 돕는 기기들이 등장하면서, 수치해석의 적용과 발전 정도 또한 역시 괄목할만하게 이루어졌으며 round-off error 같이 기기에서 표현할 수 있는 수의 한계성과 이를 바탕으로 수를 정확하게 나타내려 하는 precision 문제 역시 수치해석의 한 분야로 발전하였다. 따라서, 추후 자신의 진로를 실제 계산이 필요한 연구 계열이나 (물리학 분야중 유체역학 같이 PDE와 떨어질래야 떨어질 수 없는 분야) 계산 과학 계열로 지망하는 사람들에게 수치해석 과목은 매우 중요하다 할 수 있겠다.

4 관련항목

  1. 여기서는 Laplace Eqaution
  2. 다만 여기서는 미분방정식을 직접 푸는 방법만 언급했지만 몇몇 상황에서는 방정식을 직접 풀지 않고도 해결할 수 있다. 람보르기니 모양의 전도체에 대해선 의미없지만...
  3. 단, 위 사례는 어디까지나 이해를 돕기 위한 것이다. 유한요소법은 수치해석의 한 단면일 뿐이지 모든 수치해석이 단순화에 대한 것은 아니다.
  4. 대부분 수학과 커리큘럼 상 2학년 후반 내지는 3학년 즈음에 이 과목을 수강하게 된다. 극단적인 경우, 대수학 관련 과목과 위상수학 등을 꾸준히 듣다가 수치해석을 듣게 되면...
  5. 다만, 꼭 좋은 해를 찾아가라는 법은 없다. 함수식의 형태와 초기값에 따라 성패가 나뉘게 된다. 물론 무조건 좋은 결과를 반환해주는 메소드도 있다.