1. 개요[편집]
| 수치해석 Numerical Analysis | |
|---|---|
| 정의 | 연속 수학 문제의 근사해를 유한 연산으로 구하는 학문 |
| 핵심 관심사 | 정확도 · 안정성 · 수렴성 · 계산 비용 |
| 기본 도구 | 테일러 급수, 선형대수, 함수해석 |
| 주요 분과 | 수치선형대수, 근사이론, 미분방정식 해법, 최적화 |
| 상위 분야 | 전산과학 |
정확한 답을 못 구할 바에야, 얼마나 틀렸는지라도 정확히 알자.
수치해석(numerical analysis)은 해석적으로 풀리지 않거나 풀려도 쓸모없는 수학 문제를 유한한 산술 연산의 나열로 근사해 푸는 방법을 연구하고, 그 근사가 얼마나 정확하며 얼마나 믿을 만한지를 증명하는 수학 분야이다. 전산과학이 “무엇을 계산할 것인가”를 묻는다면, 수치해석은 “그것을 어떻게 계산해야 답이 무너지지 않는가”를 묻는다.
이 분야의 존재 이유는 냉정하다. 실수는 무한히 촘촘한데 컴퓨터의 메모리는 유한하고(부동소수점 연산), 적분과 미분은 극한 연산인데 컴퓨터는 극한을 취할 줄 모르며, 대부분의 비선형 방정식은 근의 공식이 아예 없다. 그래서 수치해석은 무한을 유한으로 잘라내되, 그 잘라냄이 만들어낸 오차를 통제 가능한 크기로 묶어두는 기술의 총체가 된다.
2. 수치해석이 답해야 하는 세 가지 질문[편집]
수치해석 논문의 구조는 놀랍도록 정형화되어 있다. 어떤 새 기법이 등장하든 결국 다음 셋을 답해야 인정받는다.
- 정확도(accuracy): 격자나 스텝을 라 할 때 오차가 로 줄어드는가? 이 가 정확도 차수다. 2차 정확도 기법에서 를 절반으로 줄이면 오차는 1/4이 되어야 한다. 안 되면 코드에 버그가 있거나 이론이 틀린 것이다.1
- 안정성(stability): 계산 도중 발생한 미세한 오차가 시간이 지나며 증폭되지 않는가? 폰 노이만 안정성 해석과 CFL 조건이 이 질문의 대표적 답안이다.
- 수렴성(convergence): 이산화를 무한히 세밀하게 하면 진짜 해로 가는가? 수렴성 문서에서 다루는 락스 등가정리(Lax equivalence theorem)가 이 셋을 한 줄로 묶는다. 선형 문제에서 일관성 + 안정성 = 수렴성이다.
세 가지를 다 만족해도 남는 현실적 질문이 하나 더 있다. 계산 비용이다. 이론적으로 완벽하지만 인 알고리즘은 이 백만이 되는 순간 존재하지 않는 알고리즘과 같다.
3. 오차의 두 얼굴[편집]
수치해석에서 오차는 크게 두 종류이며, 이 둘은 서로 반대 방향으로 움직인다는 것이 고약하다.
절단오차(truncation error) 는 무한급수를 유한 항에서 자르거나 미분을 차분으로 바꿀 때 생긴다. 테일러 급수로 정량화되며, 를 줄이면 함께 줄어든다.
반올림오차(round-off error) 는 유한한 자릿수로 실수를 표현하기 때문에 생긴다. 배정밀도의 기계 엡실론은 약 이다. 이 오차는 연산 횟수에 비례해 누적되므로, 를 줄여 연산을 늘릴수록 커진다.
전형적인 사례가 수치미분이다. 전방차분의 총오차는 대략
로, 를 무작정 줄이면 두 번째 항이 폭발한다. 최적 는 배정밀도 기준 근처. 미분을 정확하게 하고 싶으면 차분을 포기하고 자동 미분으로 갈아타는 것이 정답이다.
여기에 문제 자체의 민감도가 곱해진다. 조건수가 큰 문제는 알고리즘이 아무리 훌륭해도 입력의 미세한 흔들림이 출력에서 증폭된다. 알고리즘의 잘못(불안정)과 문제의 잘못(악조건)을 구분하는 것이 수치해석의 기본 소양이다.
4. 주요 분과[편집]
수치해석의 하위 분야는 사실상 응용수학 전체를 덮는다. 심위키가 다루는 범위 안에서 정리하면 다음과 같다.
| 분과 | 다루는 문제 | 대표 기법 |
|---|---|---|
| 수치선형대수 | , 고유값 | 가우스 소거법, LU 분해, QR 분해, 크리로프 부분공간법 |
| 근사·보간 | 데이터에서 함수 복원 | 보간과 근사, 직교다항식, 최소자승법 |
| 수치 미적분 | 도함수·적분값 | 수치적분, 수치미분, 고속 푸리에 변환 |
| 비선형 방정식 | 뉴턴-랩슨법, 준-뉴턴법, 호장법 | |
| 상미분방정식 | 초기값 문제 | 룽게-쿠타법, 크랭크-니콜슨법, 뉴마크법 |
| 편미분방정식 | 장(field) 문제 | 유한요소법, 유한체적법, 유한차분법, 스펙트럴 방법 |
| 최적화 | 최적값 탐색 | 경사하강법, 카루시-쿤-터커 조건, 유전 알고리즘 |
| 확률적 방법 | 고차원 적분·표본 | 몬테카를로 방법, 담금질 모사 |
| 데이터 축약 | 차원 축소·모델 축약 | 특이값 분해, 주성분 분석, 축소차수모델 |
이 표에서 아래로 내려갈수록 “순수 수학”에서 “현장 공학”에 가까워지지만, 그렇다고 위쪽이 한가한 것은 아니다. 유한요소법이 만들어낸 희소행렬을 결국 누가 푸는가? 수치선형대수다. 모든 시뮬레이션의 최종 병목은 언제나 선형 시스템 풀기로 수렴한다.
5. 이산화의 계보[편집]
편미분방정식을 푸는 기법들은 겉모습이 다 달라 보이지만, 계보를 따라가면 두 갈래로 갈린다.
차분 계열은 미분 연산자를 직접 차분식으로 바꾼다. 유한차분법이 원조이고, 보존형으로 다듬으면 유한체적법이 된다. 격자가 정형이면 코딩이 쉽지만, 복잡한 형상에서는 격자 생성이 지옥이 된다.
약형식 계열은 방정식에 시험함수를 곱해 적분한 뒤 부분적분으로 미분 차수를 낮춘다. 갤러킨 방법이 뼈대이고, 기저함수를 국소적 조각으로 잡으면 유한요소법, 전역 매끄러운 함수로 잡으면 스펙트럴 방법이 된다. 임의 형상에 강하고 수학적 오차 추정이 깔끔하다.
여기에 격자 자체를 버린 SPH, 격자 볼츠만 방법, 경계요소법 같은 곁가지가 붙는다. 어느 쪽이 우월하냐는 질문에는 정답이 없고, 문제의 성질과 코드 자산이 답을 정한다.
6. 실무에서의 수치해석[편집]
산업 현장에서 수치해석은 대개 상용 코드 안에 숨어 있다. 사용자는 물성과 경계 조건만 넣고 계산 버튼을 누른다. 그러다 보니 “수치해석 몰라도 해석은 된다”는 착각이 흔한데, 이 착각의 청구서는 항상 나중에 온다.
발산하는 계산의 원인은 대개 물리가 아니라 수치다. 시간 간격이 안정 한계를 넘었거나, 조건수가 나쁜 시스템에 전처리기를 안 붙였거나, 격자 종횡비가 극단적이라 이산화 오차가 물리량을 삼켰거나. 잔차 그래프가 톱니처럼 진동하는 걸 보고 물성값을 바꾸는 사람과 시간 적분 도식을 의심하는 사람의 차이가 결국 수치해석 지식이다.2
그래서 검증 및 확인이 수치해석의 마지막 관문이 된다. 격자 수렴 시험(GCI)으로 이산화 오차를 정량화하지 않은 결과는, 아무리 그림이 예뻐도 숫자로서의 자격이 없다.
7. 여담[편집]
수치해석은 “빠른 알고리즘 하나가 하드웨어 세대교체 몇 번보다 낫다”는 사실을 반복해서 증명해온 분야다. 고속 푸리에 변환은 을 으로 끌어내렸고, 다중격자법은 반복 횟수를 격자 크기와 무관하게 만들었다.3 실제로 지난 수십 년간 대규모 시뮬레이션의 속도 향상은 무어의 법칙과 알고리즘 개선이 거의 절반씩 기여했다는 것이 정설이다.
동시에 이 분야는 지독하게 겸손을 요구한다. 아무리 화려한 기법도 마지막에는 언저리에서 반올림오차와 마주하고, 아무리 정교한 이론도 실험 데이터 앞에서는 그저 가설이다. 무한을 유한으로 다루는 대가로, 수치해석자는 평생 “얼마나 틀렸는가”를 계산하며 산다.
8. 관련 문서[편집]
- 전산과학 · 검증 및 확인
- 수렴성 · 조건수 · 부동소수점 연산
- 테일러 급수 · 수치미분 · 수치적분
- 가우스 소거법 · LU 분해 · 크리로프 부분공간법 · 전처리기
- 유한요소법 · 유한체적법 · 유한차분법 · 스펙트럴 방법
- 룽게-쿠타법 · 뉴턴-랩슨법
- 경사하강법 · 카루시-쿤-터커 조건 · 주성분 분석
- 몬테카를로 방법 · 불확실성 정량화
9. Footnotes[편집]
-
그래서 신규 코드의 첫 검증은 항상 “차수 검증(order verification)“이다. 격자를 체계적으로 줄여가며 오차 기울기를 로그-로그 그래프에 찍었을 때 이론 차수가 안 나오면, 그 코드는 아직 완성된 게 아니다. 제조해(method of manufactured solutions)가 이럴 때 쓰인다. ↩
-
“발산하면 시간 간격부터 줄여라”는 현장 국룰은 사실 안정성 조건을 몸으로 익힌 결과물이다. 문제는 그게 통하지 않는 나머지 절반의 경우인데, 그때부터 진짜 수치해석이 필요해진다. ↩
-
다중격자법이 이론적으로 복잡도를 달성한다는 것은 수치해석사에서 손꼽히는 사건이다. 미지수를 두 배로 늘려도 반복 횟수가 안 늘어난다는 뜻이니, 대규모 해석에서는 사실상 치트키에 가깝다. ↩