| 수치적분 Numerical Integration / Quadrature | |
|---|---|
| 목적 | 적분값의 근사 계산 |
| 기본 형태 | ∫f(x)dx ≈ Σ wᵢ f(xᵢ) |
| 대표 기법 | 사다리꼴, 심프슨, 가우스 구적 |
| 고차원 대안 | 몬테카를로 방법 |
| 주요 응용 | FEM, FVM |
1. 개요[편집]
못 푸는 적분은 없다. 정확히 못 풀 뿐이다.
수치적분(numerical integration), 또는 구적법(quadrature)은 해석적으로 풀리지 않거나 함수값만 알려진 적분 를 유한 개의 함수값에 가중치를 곱해 더하는 방식으로 근사 계산하는 기법이다. 일반적인 형태는
로, 노드(node) 를 어디에 찍고 가중치 를 어떻게 줄 것인가가 모든 방법론의 차이를 만든다.1 세상의 적분 대부분은 초등함수로 안 풀리기 때문에, 실무 수치해석에서 수치적분은 미분방정식 못지않게 자주 쓰이는 기본기다.
2. 뉴턴-코츠 공식들[편집]
노드를 등간격으로 찍고, 그 위에서 함수를 다항식으로 보간한 뒤 그 다항식을 적분하는 방식이 뉴턴-코츠(Newton–Cotes) 공식이다. 가장 낮은 차수부터 익숙한 얼굴들이 나온다.
- 사다리꼴 공식(Trapezoidal rule): 두 점을 직선으로 이어 사다리꼴 넓이로 근사. 오차는 구간폭의 제곱()에 비례한다. 단순함이 곧 미덕.
- 심프슨 공식(Simpson’s rule): 세 점을 2차 포물선으로 이어 근사. 오차가 로 확 좋아진다. 홀수 개의 구간이 필요하다는 사소한 제약만 지키면 가성비가 훌륭해 국룰 취급.2
- 고차 뉴턴-코츠: 심프슨 3/8, 불(Boole) 공식 등으로 올라가지만, 차수를 무작정 높이면 룽게 현상(Runge phenomenon)으로 진동이 생겨 오히려 불안정해진다. 그래서 실무에선 낮은 차수를 여러 구간으로 나눠(composite) 반복 적용하는 게 정석이다.
3. 가우스 구적법[편집]
노드를 등간격에 묶어 둘 이유가 없다면? 가우스 구적법(Gaussian quadrature)은 노드 위치까지 자유변수로 풀어, 같은 점 개수로 최대 차수의 다항식을 정확히 적분한다. 개의 점으로 무려 차 다항식까지 오차 0으로 적분하는데, 이는 뉴턴-코츠가 흉내 낼 수 없는 효율이다.
비결은 노드를 직교다항식의 근(예: 르장드르 다항식의 근)에 배치하는 것이다. 이 마법 같은 최적 배치 덕에 가우스 구적은 매끄러운 함수에서 압도적으로 빠르게 수렴한다. 가중함수에 따라 르장드르(균등), 체비쇼프, 라게르(반무한구간), 에르미트(무한구간) 등 다양한 변종이 있다. 유한요소법에서 요소 강성행렬을 적분할 때 쓰는 가우스 점(Gauss point)이 바로 이것이다.3
4. 적응 구적[편집]
함수가 어떤 구간에선 밋밋하고 어떤 구간에선 요동친다면, 전 구간에 같은 촘촘함을 적용하는 건 낭비다. 적응 구적(adaptive quadrature)은 구간을 재귀적으로 반으로 쪼개면서, 쪼개기 전후의 추정값 차이(오차 추정)가 허용오차보다 크면 그 부분만 더 잘게 나눈다. 함수가 급변하는 곳에 계산 자원을 집중하는 셈이다. scipy.integrate.quad나 QUADPACK 같은 라이브러리가 내부에서 이 전략(가우스-크론로드 쌍 등)을 돌린다. 사용자는 그냥 함수와 구간만 던지면 되지만, 뒤에서는 정교한 오차 제어가 굴러가고 있다.
5. 다차원과 몬테카를로[편집]
1차원까진 위 방법들이 잘 먹힌다. 문제는 차원이 올라갈 때다. 격자 기반 구적법은 차원에서 노드 수가 로 폭증하는 차원의 저주(curse of dimensionality)에 걸린다. 10차원에서 축마다 노드 10개면 벌써 100억 점이다.
여기서 몬테카를로 방법이 판을 뒤집는다. 무작위 샘플로 적분을 추정하는 몬테카를로의 오차는 표본 수 에 대해 로, 차원과 무관하다. 저차원에선 가우스 구적에 처참히 지지만, 고차원에선 유일한 현실적 선택지가 된다. 그래서 금융, 입자물리, 양자 몬테카를로 같은 고차원 적분은 거의 다 몬테카를로 계열(준몬테카를로, 중요도 샘플링 포함)이다.4
| 상황 | 추천 기법 |
|---|---|
| 매끄러운 저차원 함수 | 가우스 구적 |
| 함수값만 아는 등간격 데이터 | 심프슨 등 뉴턴-코츠 |
| 급변·불규칙 1차원 함수 | 적응 구적 |
| 고차원 적분 | 몬테카를로 계열 |
6. FEM/FVM에서의 역할[편집]
수치적분은 수치해석 교과서 안에만 사는 개념이 아니다. 유한요소법에서는 갤러킨 방법으로 유도된 약형식(weak form)의 요소 적분을 매번 가우스 구적으로 처리한다. 강성행렬과 질량행렬의 모든 항이 사실은 수치적분의 결과물이다. 이때 적분점 수를 일부러 줄이는 저감적분(reduced integration)은 계산을 아끼고 잠김(locking)을 완화하지만, 잘못 쓰면 모래시계(hourglass) 같은 가짜 모드를 부르기도 한다.
유한체적법에서도 검사체적 면을 지나는 플럭스를 면적분으로 계산하며, 여기에 구적 규칙이 들어간다. 요컨대 전산유체역학이든 구조해석이든, 이산화된 방정식의 계수 하나하나에 수치적분이 조용히 깔려 있다. 눈에 안 띌 뿐, 안 쓰이는 곳이 없다.
7. 관련 문서[편집]
8. Footnotes[편집]
-
“구적(quadrature)“이라는 옛말은 원의 넓이를 같은 넓이의 정사각형으로 바꾸는 고대 기하학 문제에서 왔다. 넓이=적분을 구하는 일이 곧 quadrature였던 셈. 요즘도 수치적분 함수 이름에
quad가 붙는 이유다. ↩ -
심프슨 공식은 토머스 심프슨(1710~1761)이 대중화했지만 정작 케플러가 먼저 썼다. 수학사에서 정리 이름이 발견자와 안 맞는 건 흔한 일(스티글러의 명명 법칙)이라, 놀랄 것도 없다. ↩
-
2차원·3차원 요소에서는 텐서곱으로 가우스 점을 배치한다. 예를 들어 8절점 육면체 요소의 완전적분은 각 방향 2점씩 총 2×2×2 = 8 가우스 점을 쓴다. 이 숫자를 외우고 있으면 FEM 좀 해본 티가 난다. ↩
-
몬테카를로의 는 축복이자 저주다. 차원과 무관해서 고차원에선 최고지만, 정밀도를 10배 올리려면 표본을 100배 늘려야 한다는 뜻이기도 하다. “정확도는 신에게, 계산은 GPU에게 맡긴다”가 괜히 나온 말이 아니다. ↩