Chapter 10

수치 적분

정규분포의 확률 ∫e−x2/2dx\int e^{-x^2/2}dx, 진자의 주기를 주는 타원 적분, 측정값으로만 주어진 힘이 한 일. 이런 적분에는 기본 함수로 쓸 수 있는 원시함수가 없거나, 함수가 아예 표로만 주어집니다. 이 장은 정적분을 함숫값 몇 개의 가중합 ∑wif(xi)\sum w_if(x_i)로 바꾸는 법, 곧 구적법(quadrature)을 다룹니다. 점을 등간격으로 놓는 뉴턴–코츠 공식에서 출발해, 구간을 잘게 나누는 합성 공식과 그 수렴 차수, 사다리꼴 공식의 오차 구조를 이용해 외삽하는 롬베르크 적분, 점의 위치까지 최적으로 고르는 가우스 구적법, 어려운 곳만 촘촘히 나누는 적응 구적법을 차례로 봅니다. 마지막으로 특이점과 무한 구간을 변수 변환으로 길들이고, 차원이 높아지면 왜 난수(몬테카를로)가 이기는지 확인합니다.

이 수식이 없었다면정규분포표와 유한 요소 해석

통계 프로그램이 p-값을 내놓을 때, 구조 해석 프로그램이 요소 하나의 강성 행렬을 만들 때, 위성 항법 수신기가 궤도를 예측할 때, 컴퓨터 그래픽이 한 픽셀에 들어오는 빛을 모을 때, 그 안에서는 모두 적분이 숫자로 계산됩니다. 유한 요소 프로그램은 요소마다 몇 개의 가우스 점에서만 피적분 함수를 계산하고, 렌더러는 빛의 경로를 무작위로 수천 개 뽑아 평균을 냅니다(몬테카를로). 원시함수를 찾는 대신 "어디서 함숫값을 재고, 어떤 가중치로 더할까"를 묻는 것이 수치 적분입니다.

넓이를 작은 조각의 합으로 구하는 생각은 고대 그리스의 착출법까지 거슬러 올라가지만, 오늘날 쓰는 공식의 이름에는 17~19세기의 수학자들이 남아 있습니다. 뉴턴(Isaac Newton)과 코츠(Roger Cotes)의 등간격 공식, 심프슨(Thomas Simpson)의 포물선 공식, 그리고 1814년 가우스(Carl Friedrich Gauss)가 발표한, 점의 위치까지 최적화한 구적법입니다. 롬베르크(Werner Romberg)의 외삽 적분은 1955년에 발표되었습니다.

∫ f(x) dx (원시함수 없음)→보간 다항식을 대신 적분→Σ wᵢ f(xᵢ)→확률·강성 행렬·렌더링

구적법의 아이디어: 함숫값의 가중합

원시함수가 없는 적분

표준정규분포에서 0≤Z≤10 \le Z \le 1일 확률은 12π∫01e−x2/2dx\frac{1}{\sqrt{2\pi}}\int_0^1 e^{-x^2/2}dx입니다. e−x2/2e^{-x^2/2}의 원시함수는 기본 함수로 쓸 수 없다는 것이 증명되어 있습니다(CalculusBook 12장). 함숫값은 몇 개든 계산할 수 있습니다. 몇 개를 어디서 계산해 어떻게 더해야 소수 여섯째 자리까지 맞출까요?

모든 구적법은 같은 꼴입니다. 노드 xix_i에서 함숫값을 계산하고 가중치 wiw_i를 곱해 더합니다. 노드와 가중치를 고르는 가장 자연스러운 방법은 노드를 지나는 보간 다항식 pp(5장)를 만들고 그것을 정확히 적분하는 것입니다. 라그랑주 기저 ℓi\ell_i로 p=∑f(xi)ℓip = \sum f(x_i)\ell_i이므로 ∫p=∑f(xi)∫ℓi\int p = \sum f(x_i)\int\ell_i, 곧 가중치는 다음과 같습니다.

wi=∫abℓi(x) dxw_i = \int_a^b \ell_i(x)\,dx
정의 10.1 (구적 공식과 정확도 차수) 노드 x0,…,xnx_0, \dots, x_n과 가중치 w0,…,wnw_0, \dots, w_n으로 정한
Q[f]=∑i=0nwif(xi)≈I[f]=∫abf(x) dxQ[f] = \sum_{i=0}^{n} w_i f(x_i) \approx I[f] = \int_a^b f(x)\,dx
를 구적 공식(quadrature rule)이라 한다. 차수가 kk 이하인 모든 다항식에 대해 Q=IQ = I이고 xk+1x^{k+1}에 대해서는 아닐 때, kk를 그 공식의 정확도 차수(degree of exactness)라 한다. 보간 다항식을 적분해 만든 n+1n+1점 공식은 정확도 차수가 적어도 nn이다.

정확도 차수는 공식을 검사하는 가장 쉬운 방법이기도 합니다. 1,x,x2,…1, x, x^2, \dots를 차례로 넣어 보아 맞지 않는 첫 지수를 찾으면 됩니다. 가중치의 합이 b−ab - a여야 한다(f=1f = 1)는 것이 첫 번째 확인입니다.

뉴턴–코츠 공식: 사다리꼴, 심프슨, 3/8

노드를 [a,b][a, b]에 등간격으로 놓고 양 끝을 포함한 공식이 닫힌 뉴턴–코츠 공식(Newton–Cotes formula)입니다. 점 두 개(직선)는 사다리꼴, 세 개(포물선)는 심프슨, 네 개(3차식)는 심프슨 3/8 공식입니다. 한가운데 점 하나만 쓰면(열린 공식) 중점 공식입니다.

중점: (b − a)·f(m) 사다리꼴: (b − a)(f(a) + f(b))/2 심프슨: (b − a)(f(a) + 4f(m) + f(b))/6 볼록한 곡선: 중점은 모자라고, 사다리꼴은 넘치고, 포물선은 거의 맞는다
그림 10-1. 세 공식은 곡선 대신 상수, 직선, 포물선의 넓이를 잰다. 아래로 볼록한 ff에서 중점 공식은 모자라고 사다리꼴은 넘친다. 오차의 크기는 중점이 사다리꼴의 약 절반이라서, 가중 평균 23M+13T\frac23M + \frac13T가 바로 심프슨 공식이 된다.
정리 10.2 (단일 구간 뉴턴–코츠 공식의 오차) ff가 충분히 매끄러우면 [a,b][a, b] 안의 어떤 ξ\xi에 대해
중점I=(b−a)f ⁣(a+b2)+(b−a)324f′′(ξ),사다리꼴I=b−a2(f(a)+f(b))−(b−a)312f′′(ξ),심프슨 (h=b−a2)I=h3(f0+4f1+f2)−h590f(4)(ξ),3/8 (h=b−a3)I=3h8(f0+3f1+3f2+f3)−3h580f(4)(ξ).\begin{aligned} \text{중점}\quad & I = (b-a)f\!\left(\tfrac{a+b}{2}\right) + \frac{(b-a)^3}{24}f''(\xi),\\ \text{사다리꼴}\quad & I = \frac{b-a}{2}\bigl(f(a) + f(b)\bigr) - \frac{(b-a)^3}{12}f''(\xi),\\ \text{심프슨}\ (h = \tfrac{b-a}{2})\quad & I = \frac h3\bigl(f_0 + 4f_1 + f_2\bigr) - \frac{h^5}{90}f^{(4)}(\xi),\\ \text{3/8}\ (h = \tfrac{b-a}{3})\quad & I = \frac{3h}{8}\bigl(f_0 + 3f_1 + 3f_2 + f_3\bigr) - \frac{3h^5}{80}f^{(4)}(\xi). \end{aligned}
정확도 차수는 중점 1, 사다리꼴 1, 심프슨 3, 3/8 3이다.

증명의 핵심. 사다리꼴은 보간 오차 f(x)−p(x)=f′′(ξx)2(x−a)(x−b)f(x) - p(x) = \frac{f''(\xi_x)}{2}(x - a)(x - b)를 적분한다. (x−a)(x−b)(x - a)(x - b)는 구간에서 부호가 일정하므로 적분의 평균값 정리로 f′′f''를 밖으로 꺼내고 ∫ab(x−a)(x−b)dx=−(b−a)3/6\int_a^b (x-a)(x-b)dx = -(b-a)^3/6을 쓴다. 심프슨은 대칭 덕분에 3차식까지 정확하므로(∫(x−m)3=0\int(x - m)^3 = 0), 오차는 4계 도함수에서 시작한다. ∎

심프슨이 점 세 개로 3차식까지 맞추는 것은 짝수 개의 구간을 대칭으로 쓰는 공식의 공통된 덤입니다. 그래서 점 네 개를 쓰는 3/8 공식은 차수를 올려 주지 못하고 상수만 조금 바꿉니다. 실무에서 심프슨이 3/8보다 흔한 이유입니다.

예제 10.1 (한 구간에서 비교) ∫01ex dx=e−1=1.7182818\int_0^1 e^x\,dx = e - 1 = 1.7182818.
  1. 중점: e0.5=1.6487213e^{0.5} = 1.6487213, 오차 −6.96×10−2-6.96\times10^{-2}.
  2. 사다리꼴: (1+e)/2=1.8591409(1 + e)/2 = 1.8591409, 오차 +1.41×10−1+1.41\times10^{-1}. 정리 10.2의 범위 [112,e12]=[0.083,0.227][\frac{1}{12}, \frac{e}{12}] = [0.083, 0.227] 안이다. 중점 오차의 약 −2-2배다.
  3. 심프슨: 16(1+4e0.5+e)=1.7188612\frac16(1 + 4e^{0.5} + e) = 1.7188612, 오차 5.79×10−45.79\times10^{-4}. 예측 범위 0.5590[1,e]=[3.5,9.4]×10−4\frac{0.5^5}{90}[1, e] = [3.5, 9.4]\times10^{-4}.
  4. 3/8: 18(1+3e1/3+3e2/3+e)=1.7185402\frac18(1 + 3e^{1/3} + 3e^{2/3} + e) = 1.7185402, 오차 2.58×10−42.58\times10^{-4}. 점 하나를 더 써서 오차가 절반 남짓 줄었을 뿐이다.
높은 차수의 뉴턴–코츠는 쓰지 않는다 점을 9개(n=8n = 8) 이상 등간격으로 놓으면 가중치 일부가 음수가 됩니다. [0,1][0, 1]의 9점 공식 가중치는 0.03490.0349, 0.20770.2077, −0.0327-0.0327, 0.37020.3702, −0.1601-0.1601, …이고 ∑∣wi∣=1.45\sum|w_i| = 1.45, 11점은 3.073.07입니다. 가중치의 절댓값 합은 함숫값의 오차(반올림, 측정 잡음)가 증폭되는 배율이라 조건이 나빠집니다. 게다가 등간격 고차 보간은 룽게 현상(5장)으로 발산할 수 있습니다. 1/(1+25x2)1/(1 + 25x^2)을 [−1,1][-1, 1]에서 21점 뉴턴–코츠로 적분하면 오차가 −5.9-5.9로, 참값 0.549보다 열 배 큽니다. 해결책은 두 가지입니다. 낮은 차수 공식을 여러 구간에 반복하거나(다음 절), 노드를 등간격이 아니게 고르는 것입니다(가우스 구적법).
SIMULATOR

구적 공식의 그림: 상수·직선·포물선·3차식의 넓이

공식
근삿값 Q—
참값 I—
오차 Q − I—
함숫값 계산—
해볼 것: ① n = 1에서 공식을 바꿔 가며 색칠된 도형(상수, 직선, 포물선, 3차식)이 곡선을 얼마나 따라가는지 보세요. ② 사다리꼴에서 n을 두 배로 할 때마다 오차가 약 4분의 1, 심프슨에서는 16분의 1이 됩니다(아래 메시지). ③ √x는 x = 0에서 기울기가 무한대라 심프슨도 4분의 1보다 덜 줄어듭니다. 특이점 절의 주제입니다. 모델: 심프슨·3/8은 각 소구간 안에 중간점을 1개·2개 더 쓴다.

합성 공식과 수렴 차수

차수를 올리지 말고 구간을 나눠라

정확도를 올리려고 점을 늘릴 때, 하나의 고차 다항식으로 맞추면 위의 경고처럼 실패합니다. 대신 [a,b][a, b]를 폭 hh인 nn개 소구간으로 나누고 각 소구간에 사다리꼴이나 심프슨을 적용하면 어떨까요? 스플라인(6장)이 고차 보간을 대신한 것과 같은 처방입니다.

소구간마다 사다리꼴을 쓰고 더하면, 안쪽 점은 이웃한 두 소구간에 한 번씩 들어가므로 가중치가 hh, 양 끝은 h/2h/2입니다. 심프슨은 소구간 두 개씩 묶어 가중치 h3(1,4,2,4,…,2,4,1)\frac h3(1, 4, 2, 4, \dots, 2, 4, 1)이 됩니다(nn 짝수).

정리 10.3 (합성 공식의 오차) h=(b−a)/nh = (b - a)/n, xi=a+ihx_i = a + ih일 때 어떤 ξ∈(a,b)\xi \in (a, b)에 대해
Th=h[12f0+f1+⋯+fn−1+12fn],I−Th=−(b−a)h212f′′(ξ),Mh=h∑i=0n−1f(xi+h2),I−Mh=(b−a)h224f′′(ξ),Sh=h3[f0+4f1+2f2+4f3+⋯+4fn−1+fn],I−Sh=−(b−a)h4180f(4)(ξ).\begin{aligned} T_h &= h\Bigl[\tfrac12 f_0 + f_1 + \cdots + f_{n-1} + \tfrac12 f_n\Bigr], & I - T_h &= -\frac{(b-a)h^2}{12}f''(\xi),\\ M_h &= h\sum_{i=0}^{n-1} f\bigl(x_i + \tfrac h2\bigr), & I - M_h &= \frac{(b-a)h^2}{24}f''(\xi),\\ S_h &= \frac h3\Bigl[f_0 + 4f_1 + 2f_2 + 4f_3 + \cdots + 4f_{n-1} + f_n\Bigr], & I - S_h &= -\frac{(b-a)h^4}{180}f^{(4)}(\xi). \end{aligned}

증명의 핵심. 정리 10.2의 단일 구간 오차 −h312f′′(ξi)-\frac{h^3}{12}f''(\xi_i)를 n=(b−a)/hn = (b-a)/h개 더하면 −h312∑f′′(ξi)=−(b−a)h212⋅f′′‾-\frac{h^3}{12}\sum f''(\xi_i) = -\frac{(b-a)h^2}{12}\cdot\overline{f''}이고, 평균 f′′‾\overline{f''}는 중간값 정리로 한 점의 값이다. 국소 오차 h3h^3이 구간 수 1/h1/h만큼 쌓여 전역 h2h^2이 되는 것은 ODEBook 5장의 국소·전역 오차와 같은 구조다. ∎

nn사다리꼴 오차비율심프슨 오차비율
23.565×10⁻²5.793×10⁻⁴
48.940×10⁻³3.993.701×10⁻⁵15.65
82.237×10⁻³4.002.326×10⁻⁶15.91
165.593×10⁻⁴4.001.456×10⁻⁷15.98
321.398×10⁻⁴4.009.103×10⁻⁹15.99

위 표는 ∫01ex dx\int_0^1 e^x\,dx의 합성 공식 오차(근삿값 − 참값)입니다. nn을 두 배로 할 때 비율이 4(=22=2^2)와 16(=24=2^4)으로 다가갑니다. 이 비율의 log⁡2\log_2가 실험으로 잰 수렴 차수입니다. 심프슨 n=32n = 32(함숫값 33개)에서 오차 10−810^{-8}인데, 사다리꼴로 같은 오차를 얻으려면 nn이 약 4000이어야 합니다. 같은 비용에서는 차수가 높은 공식이 압도적입니다. 단, ff가 매끄러울 때만입니다.

주기 함수의 사다리꼴 공식은 기적처럼 정확하다 ∫02πecos⁡xdx=2πI0(1)=7.954926521\int_0^{2\pi}e^{\cos x}dx = 2\pi I_0(1) = 7.954926521을 사다리꼴로 계산하면 n=4n = 4에서 오차 3.4×10−23.4\times10^{-2}, n=8n = 8에서 1.3×10−61.3\times10^{-6}, n=16n = 16에서 10−1510^{-15}입니다. 2차가 아니라 지수적 수렴입니다. 다음 절의 오일러–매클로린 공식에서 오차 항이 모두 f(k)(b)−f(k)(a)f^{(k)}(b) - f^{(k)}(a)의 꼴인데, 매끄러운 주기 함수는 한 주기의 양 끝에서 모든 도함수가 같아 전부 0이 되기 때문입니다. 이 성질이 이산 푸리에 변환(8장)이 정확한 이유이기도 합니다.
SIMULATOR

오차–비용 로그 그래프: 기울기로 읽는 수렴 차수

중점사다리꼴심프슨가우스기준선
중점 기울기—
사다리꼴 기울기—
심프슨 기울기—
오차 10⁻⁸까지 필요한 N (심프슨 · 가우스)—
해볼 것: ① eˣ에서 기울기가 −2, −2, −4인 것과 가우스가 N ≈ 7에서 바로 바닥(10⁻¹⁶)에 닿는 것을 보세요. ② √x로 바꾸면 모든 합성 공식의 기울기가 −1.5로 같아집니다. 차수는 공식이 아니라 함수의 매끄러움이 정합니다. ③ 주기 함수에서는 사다리꼴이 심프슨보다 빠릅니다(심프슨은 가중치 4, 2가 주기성을 깨뜨립니다). 모델: 가로축은 함숫값 계산 횟수 N, 기울기는 10⁻¹³ … 10⁻¹ 사이의 점으로 맞춤.

오일러–매클로린 공식과 롬베르크 적분

사다리꼴 결과 몇 개로 심프슨보다 정확하게

사다리꼴 공식은 가장 단순하지만 hh를 반으로 줄이면 오차가 정확히 4분의 1에 가깝게 줄었습니다. 9장의 리처드슨 외삽은 이런 규칙적인 오차를 지우는 기술이었습니다. 사다리꼴 오차에도 그런 전개가 있을까요?

정리 10.4 (오일러–매클로린 공식) ff가 [a,b][a, b]에서 2K+22K + 2번 연속 미분 가능하면
Th−I=h212(f′(b)−f′(a))−h4720(f′′′(b)−f′′′(a))+⋯+B2Kh2K(2K)!(f(2K−1)(b)−f(2K−1)(a))+O(h2K+2)T_h - I = \frac{h^2}{12}\bigl(f'(b) - f'(a)\bigr) - \frac{h^4}{720}\bigl(f'''(b) - f'''(a)\bigr) + \cdots + \frac{B_{2K}h^{2K}}{(2K)!}\bigl(f^{(2K-1)}(b) - f^{(2K-1)}(a)\bigr) + O(h^{2K+2})
B2=16B_2 = \frac16, B4=−130B_4 = -\frac1{30}, B6=142,…B_6 = \frac1{42}, \dots는 베르누이 수. 핵심은 오차 전개에 hh의 짝수 거듭제곱만 있다는 것이다.

이 전개는 ∫014/(1+x2)dx=π\int_0^1 4/(1 + x^2)dx = \pi에서 확인할 수 있습니다. f′(1)−f′(0)=−2f'(1) - f'(0) = -2라 첫 항이 −h2/6-h^2/6이고, n=4n = 4이면 −0.0104167-0.0104167, 실제 오차 T1/4−π=−0.0104162T_{1/4} - \pi = -0.0104162입니다. 계수가 미리 정해져 있으니 리처드슨 외삽을 반복할 수 있습니다. Ri,0=Th/2iR_{i,0} = T_{h/2^i}에서 출발해

Ri,j=4jRi,j−1−Ri−1,j−14j−1R_{i,j} = \frac{4^jR_{i,j-1} - R_{i-1,j-1}}{4^j - 1}

로 표를 채우는 것이 롬베르크 적분(Romberg integration)입니다. 둘째 열 Ri,1=(4Th/2−Th)/3R_{i,1} = (4T_{h/2} - T_h)/3은 정확히 합성 심프슨 공식이고, 셋째 열은 불(Boole) 공식입니다. hh를 반으로 줄일 때 새로 계산할 함숫값은 새 중점들뿐이라 Th/2=12Th+h2∑f(새 중점)T_{h/2} = \frac12 T_h + \frac h2\sum f(\text{새 중점})으로 앞의 계산을 그대로 재사용합니다.

function romberg(f, a, b, kmax, tol)
  h = b - a
  R[0][0] = h * (f(a) + f(b)) / 2
  for i = 1 .. kmax
    h = h / 2
    s = 0
    for j = 1 .. 2^(i-1):  s = s + f(a + (2j - 1) * h)   // 새 중점만
    R[i][0] = R[i-1][0] / 2 + h * s
    for j = 1 .. i
      R[i][j] = (4^j * R[i][j-1] - R[i-1][j-1]) / (4^j - 1)
    if |R[i][i] - R[i-1][i-1]| < tol then return R[i][i]
  return R[kmax][kmax]
예제 10.2 (롬베르크 표) ∫0πsin⁡x dx=2\int_0^\pi \sin x\,dx = 2. 괄호 안은 오차.
nnRi,0R_{i,0} (사다리꼴)Ri,1R_{i,1} (심프슨)Ri,2R_{i,2}Ri,3R_{i,3}
10 (−2)
21.5707963 (−4.3×10⁻¹)2.0943951 (9.4×10⁻²)
41.8961189 (−1.0×10⁻¹)2.0045598 (4.6×10⁻³)1.9985707 (−1.4×10⁻³)
81.9742316 (−2.6×10⁻²)2.0002692 (2.7×10⁻⁴)1.9999831 (−1.7×10⁻⁵)2.0000055 (5.6×10⁻⁶)
161.9935703 (−6.4×10⁻³)2.0000166 (1.7×10⁻⁵)1.9999998 (−2.5×10⁻⁷)2.0000000163 (1.6×10⁻⁸)

함숫값 17개(n=16n = 16)로 대각 원소의 오차가 5.4×10−95.4\times10^{-9}(R4,4=1.9999999946R_{4,4} = 1.9999999946), 한 행을 더하면(33개) 1.3×10−121.3\times10^{-12}이다. 같은 33개로 사다리꼴은 1.6×10−31.6\times10^{-3}, 심프슨은 1.0×10−61.0\times10^{-6}이다. 첫 행 n=1n = 1에서 sin⁡0=sin⁡π=0\sin 0 = \sin\pi = 0이라 사다리꼴 값이 0인데도 외삽이 회복한다.

SIMULATOR

롬베르크 표 쌓기: 사다리꼴에서 외삽으로

함숫값 계산 (누적)—
대각 Rk,k 오차—
사다리꼴 Rk,0 오차—
해볼 것: ① 행을 쌓으며 그래프에서 열마다 다른 기울기(−2, −4, −6, …)를 보세요. 가로축은 그 행의 함숫값 계산 수입니다. ② 정규분포 적분(문제 상자의 확률, 답 0.3413447461)은 6행(함숫값 33개)이면 10자리가 맞습니다. ③ √x에서는 오일러–매클로린 전개의 가정(매끄러움)이 깨져 외삽해도 기울기가 −1.5에 머뭅니다. 외삽은 공짜가 아닙니다. 모델: 최대 8행(함숫값 129개).

가우스 구적법: 노드의 위치까지 최적으로

점 두 개로 3차식을 정확히

뉴턴–코츠는 노드를 등간격으로 미리 정하고 가중치만 골랐습니다. nn점 공식의 자유도는 nn개, 그래서 n−1n - 1차(대칭이면 nn차)까지 맞춥니다. 노드의 위치 nn개도 자유롭게 고르면 자유도가 2n2n개입니다. 그러면 2n−12n - 1차 다항식까지 정확한 공식을 만들 수 있지 않을까요?

[−1,1][-1, 1]에서 2점 공식 w1f(x1)+w2f(x2)w_1f(x_1) + w_2f(x_2)가 1,x,x2,x31, x, x^2, x^3을 정확히 적분하라는 조건은 w1+w2=2w_1 + w_2 = 2, w1x1+w2x2=0w_1x_1 + w_2x_2 = 0, w1x12+w2x22=23w_1x_1^2 + w_2x_2^2 = \frac23, w1x13+w2x23=0w_1x_1^3 + w_2x_2^3 = 0입니다. 대칭 x2=−x1x_2 = -x_1, w1=w2=1w_1 = w_2 = 1을 넣으면 2x12=232x_1^2 = \frac23, 곧 x1,2=∓1/3=∓0.5773503x_{1,2} = \mp1/\sqrt3 = \mp0.5773503입니다. 이 점들은 2차 르장드르 다항식 P2(x)=12(3x2−1)P_2(x) = \frac12(3x^2 - 1)의 근입니다. 우연이 아닙니다.

정리 10.5 (가우스–르장드르 구적법) x1,…,xnx_1, \dots, x_n을 르장드르 다항식 PnP_n의 근(모두 (−1,1)(-1, 1) 안의 서로 다른 실근)이라 하고 wi=2(1−xi2) Pn′(xi)2w_i = \dfrac{2}{(1 - x_i^2)\,P_n'(x_i)^2}라 하면, 가우스 구적법(Gaussian quadrature) Gn[f]=∑wif(xi)G_n[f] = \sum w_if(x_i)은 차수 2n−12n - 1 이하의 모든 다항식을 정확히 적분하고, 이보다 높은 차수를 갖는 nn점 공식은 없다. 가중치는 모두 양수이고, 오차는
∫−11f dx−Gn[f]=22n+1(n!)4(2n+1) ((2n)!)3 f(2n)(ξ).\int_{-1}^{1}f\,dx - G_n[f] = \frac{2^{2n+1}(n!)^4}{(2n+1)\,\bigl((2n)!\bigr)^3}\,f^{(2n)}(\xi).

증명의 핵심. 차수 ≤2n−1\le 2n - 1인 pp를 PnP_n으로 나누면 p=qPn+rp = qP_n + r, qq와 rr의 차수는 n−1n - 1 이하다. PnP_n은 차수가 낮은 모든 다항식과 직교하므로(7장) ∫qPn=0\int qP_n = 0. 노드에서는 Pn(xi)=0P_n(x_i) = 0이라 p(xi)=r(xi)p(x_i) = r(x_i). 그런데 가중치가 보간형(wi=∫ℓiw_i = \int\ell_i)이라 n−1n - 1차인 rr은 정확히 적분된다. 따라서 ∫p=∫r=∑wir(xi)=∑wip(xi)\int p = \int r = \sum w_ir(x_i) = \sum w_ip(x_i). 반대로 p=∏(x−xi)2p = \prod(x - x_i)^2(차수 2n2n)는 적분이 양수인데 공식은 0을 주므로 2n2n차는 불가능하다. ∎

nn노드 ±xi\pm x_i가중치 wiw_i정확도 차수오차 상수
1021f′′/3f''/3
20.577350269213f(4)/135f^{(4)}/135
30, 0.77459666920.8888888889, 0.55555555565f(6)/15750f^{(6)}/15750
40.3399810436, 0.86113631160.6521451549, 0.34785484517f(8)/3472875f^{(8)}/3472875
50, 0.5384693101, 0.90617984590.5688888889, 0.4786286705, 0.23692688519

구간 [a,b][a, b]에서는 x=a+b2+b−a2tx = \frac{a+b}{2} + \frac{b-a}{2}t로 옮겨 ∫abf dx=b−a2∑wif(a+b2+b−a2ti)\int_a^b f\,dx = \frac{b-a}{2}\sum w_if\bigl(\frac{a+b}{2} + \frac{b-a}{2}t_i\bigr)로 씁니다. 노드는 PnP_n의 3항 점화식 kPk=(2k−1)xPk−1−(k−1)Pk−2kP_k = (2k - 1)xP_{k-1} - (k - 1)P_{k-2}과 뉴턴 방법(3장)으로 구하거나, 점화식 계수로 만든 대칭 삼중대각 행렬의 고유값으로 구합니다(골럽–웰시 알고리즘, 14장). 노드가 양 끝으로 몰리는 모양은 체비쇼프 노드(5장)와 닮았습니다.

예제 10.3 (2점 가우스 vs 심프슨) ∫01exdx\int_0^1 e^xdx. 노드 12∓123=0.2113249, 0.7886751\frac12 \mp \frac{1}{2\sqrt3} = 0.2113249,\ 0.7886751, 가중치 각각 12\frac12.
  1. G2=12(e0.2113249+e0.7886751)=1.7178964G_2 = \frac12(e^{0.2113249} + e^{0.7886751}) = 1.7178964. 오차 −3.85×10−4-3.85\times10^{-4}. 함숫값 2개로 3개를 쓴 심프슨(5.79×10−45.79\times10^{-4})보다 정확하다.
  2. 3점 가우스: 오차 −8.24×10−7-8.24\times10^{-7}. 같은 3개로 심프슨의 700분의 1이다.
  3. 5점 가우스: −6.5×10−13-6.5\times10^{-13}, 6점에서 배정밀도의 한계에 닿는다. 합성 심프슨이 오차 10−1210^{-12}에 이르려면 함숫값이 수백 개 필요하다.
  4. 룽게 함수 ∫−11dx1+25x2\int_{-1}^1 \frac{dx}{1 + 25x^2}에서는 n=21n = 21일 때 뉴턴–코츠 오차가 −5.9-5.9인데 가우스는 2.4×10−42.4\times10^{-4}이다. 가중치가 모두 양수라 발산하지 않는다.
예제 10.4 (처음 문제의 답: 정규분포 확률) P(0≤Z≤1)=12π∫01e−x2/2dx=0.3413447461P(0 \le Z \le 1) = \frac{1}{\sqrt{2\pi}}\int_0^1 e^{-x^2/2}dx = 0.3413447461을 여러 공식으로 계산하라.
방법함숫값 수근삿값오차
합성 사다리꼴 n=10n = 10110.3411430365−2.0×10⁻⁴
합성 심프슨 n=4n = 450.34135548791.1×10⁻⁵
합성 심프슨 n=10n = 10110.34134501592.7×10⁻⁷
가우스 3점30.34134554488.0×10⁻⁷
가우스 4점40.3413447435−2.6×10⁻⁹
가우스 5점50.3413447461−5.3×10⁻¹²

소수 여섯째 자리까지 맞추려면 사다리꼴은 수백 개, 심프슨은 11개, 가우스는 4개의 함숫값이면 된다. 매끄러운 피적분 함수에서 가우스 구적법이 표준인 이유다.

가우스–크론로드: 오차 추정까지 공짜로 가우스 공식은 nn을 바꾸면 노드가 모두 달라져 이전 함숫값을 재사용할 수 없습니다. 크론로드(Aleksandr Kronrod) 확장은 nn점 가우스 노드를 그대로 두고 n+1n + 1개의 노드를 더해 2n+12n + 1점 공식을 만듭니다. 두 결과의 차이가 곧 오차 추정이라, 적응 구적법(다음 절)에서 구간마다 이 쌍을 씁니다. 실무 라이브러리의 기본 적분 함수가 대부분 이 구조입니다.
SIMULATOR

가우스 노드와 가중치: 르장드르 근 vs 등간격

Pₙ(x)와 노드·가중치 막대
k차 다항식의 적분 오차: 몇 차까지 정확한가
가우스 정확도 차수—
뉴턴–코츠 정확도 차수—
시험 함수 오차 (가우스)—
시험 함수 오차 (뉴턴–코츠) · Σ|w|—
해볼 것: ① n을 올리며 노드(초록 막대)가 정확히 Pₙ의 근에 놓이고, 양 끝으로 몰리는 것을 보세요. 막대 높이가 가중치입니다. ② n ≥ 9에서 뉴턴–코츠 가중치(빨간 막대)에 음수가 나타나고 Σ|w|가 2보다 커집니다. ③ 아래 그래프에서 가우스는 k = 2n − 1까지 오차가 반올림 수준이고, 뉴턴–코츠는 n − 1(n 홀수면 n)까지입니다. |x|처럼 매끄럽지 않은 함수에서는 가우스도 느립니다. 모델: 노드는 점화식과 뉴턴 방법, NC 가중치는 반데르몽드 계.

적응 구적법: 어려운 곳만 촘촘히

한 곳만 험한 함수

∫01x dx\int_0^1\sqrt x\,dx에서 어려운 곳은 x=0x = 0 근처뿐입니다. 기울기가 무한대로 커지기 때문입니다. 균등 분할은 어려운 곳에 맞춰 hh를 정하므로 나머지 대부분에서 계산을 낭비합니다. 오차를 스스로 추정해서 필요한 곳만 쪼갤 수 없을까요? ODEBook 5장의 적응 간격과 같은 질문입니다.

구간 [a,b][a, b]에서 심프슨을 한 번(S1S_1), 반으로 나눠 두 번(S2=S왼+S오S_2 = S_{\text{왼}} + S_{\text{오}}) 계산합니다. 심프슨 오차는 h5h^5에 비례하므로 I−S2≈(I−S1)/16I - S_2 \approx (I - S_1)/16. 두 식을 빼면

I−S2≈S2−S115.I - S_2 \approx \frac{S_2 - S_1}{15}.

참값 없이 오차를 추정했습니다. 이 추정이 허용 오차보다 작으면 받아들이고(보정값 S2+(S2−S1)/15S_2 + (S_2 - S_1)/15을 쓰면 리처드슨 외삽으로 한 차수를 더 얻습니다), 크면 두 반쪽에 대해 허용 오차를 반씩 나눠 주고 재귀적으로 같은 일을 합니다.

function adapt(f, a, b, fa, fm, fb, S1, tol, depth)
  m = (a + b) / 2;  lm = (a + m) / 2;  rm = (m + b) / 2
  flm = f(lm);  frm = f(rm)                       // 새 함숫값은 두 개뿐
  L = (m - a) / 6 * (fa + 4*flm + fm)
  R = (b - m) / 6 * (fm + 4*frm + fb)
  S2 = L + R
  if depth >= maxdepth or |S2 - S1| <= 15 * tol
    return S2 + (S2 - S1) / 15                   // 받아들이고 외삽
  return adapt(f, a, m, fa, flm, fm, L, tol/2, depth+1)
       + adapt(f, m, b, fm, frm, fb, R, tol/2, depth+1)

∫01x dx\int_0^1\sqrt x\,dx에 허용 오차 10−610^{-6}을 주면 함숫값 105개, 소구간 26개로 오차 2.0×10−82.0\times10^{-8}을 얻습니다. 가장 작은 소구간은 폭 4.8×10−74.8\times10^{-7}으로 x=0x = 0에 붙어 있고, 가장 큰 것은 1/41/4입니다. 같은 105개를 균등 분할 심프슨에 쓰면 오차가 7.7×10−57.7\times10^{-5}, 4000배 나쁩니다. 반면 어디나 똑같이 매끄러운 함수라면 적응 방법은 오차 추정에 쓰는 계산만큼 손해이고, 추정이 보수적이라 허용 오차보다 훨씬 정확한(그만큼 비싼) 답을 내는 경우가 많습니다.

적응 방법도 속을 수 있다 오차 추정은 함숫값 다섯 개만 봅니다. 폭이 아주 좁은 봉우리가 그 점들 사이에 숨어 있으면 S1≈S2S_1 \approx S_2가 되어 구간이 통째로 받아들여집니다. 예를 들어 [0,1][0, 1]에서 x=0.3x = 0.3에 폭 10−410^{-4}인 봉우리가 있는데 첫 분할점이 0, 0.25, 0.5, 0.75, 1이면 봉우리를 영영 못 볼 수 있습니다. 실무 라이브러리(QUADPACK 계열, SciPy의 quad)는 가우스–크론로드 쌍처럼 더 많은 점을 쓰는 오차 추정과 최소 분할 수로 이 위험을 줄입니다. 봉우리의 위치를 안다면 거기서 구간을 미리 나눠 주는 것이 가장 확실합니다.
SIMULATOR

적응 심프슨: 오차 추정으로 쪼개는 구간 트리

함숫값 계산—
소구간 수 · 최대 깊이—
적응 오차—
같은 계산 수의 균등 심프슨 오차—
해볼 것: ① √x에서 tol을 줄이면 막대(아래 트리)가 x = 0 근처에서만 깊어집니다. 막대의 높이가 분할 깊이입니다. ② tanh에서는 x = 0.4의 급경사에만 점이 몰립니다. ③ humps처럼 전체가 매끄러운 함수에서는 균등 분할이 비슷하거나 더 좋습니다. 적응은 어려움이 국소적일 때 이깁니다. 모델: 위 의사코드 그대로, 최대 깊이 40.

특이점과 무한 구간: 변수 변환

피적분 함수가 무한대로 가면

∫01dxx=2\int_0^1 \frac{dx}{\sqrt x} = 2는 유한하지만 x=0x = 0에서 함숫값이 무한대라 사다리꼴과 심프슨은 첫 점에서 멈춥니다. ∫0∞e−x2dx\int_0^\infty e^{-x^2}dx는 구간이 끝이 없습니다. 이런 적분(CalculusBook 8장: 이상적분)을 구적 공식에 어떻게 먹일까요?

먼저 매끄럽지 않은 함수에서 무슨 일이 생기는지 봅시다. ∫01x dx\int_0^1\sqrt x\,dx를 합성 공식으로 계산하면 nn을 두 배로 할 때 오차가 사다리꼴과 심프슨 모두 약 2.83=21.52.83 = 2^{1.5}배씩만 줄어듭니다. 수렴 차수가 h1.5h^{1.5}로, 공식의 차수와 상관없이 함수의 매끄러움(x\sqrt x의 도함수가 0에서 x−1/2x^{-1/2}로 발산)이 결정합니다. 1/x1/\sqrt x를 중점 공식(끝점을 쓰지 않는 열린 공식)으로 계산하면 오차가 2\sqrt2배씩, h0.5h^{0.5}로 줄어 n=128n = 128에서도 5×10−25\times10^{-2}입니다.

정리 10.6 (변수 변환으로 특이점 없애기) x=ϕ(t)x = \phi(t), ϕ\phi가 단조이고 미분 가능하면 ∫abf(x) dx=∫αβf(ϕ(t)) ϕ′(t) dt\int_a^b f(x)\,dx = \int_\alpha^\beta f(\phi(t))\,\phi'(t)\,dt이다. ϕ′\phi'이 특이점에서 충분히 빨리 0이 되도록 고르면 새 피적분 함수가 매끄러워진다. 대표적인 변환은
  • 끝점의 x±1/2x^{\pm 1/2} 특이점: x=t2x = t^2. ∫01dxx=∫012 dt\int_0^1\frac{dx}{\sqrt x} = \int_0^1 2\,dt, ∫01x dx=∫012t2dt\int_0^1\sqrt x\,dx = \int_0^1 2t^2dt.
  • 무한 구간 [0,∞)[0, \infty): x=t1−tx = \frac{t}{1 - t}, dx=dt(1−t)2dx = \frac{dt}{(1 - t)^2}, t∈[0,1)t \in [0, 1).
  • 양 끝의 일반적인 특이점: 이중 지수(tanh-sinh) 변환 x=tanh⁡(π2sinh⁡t)x = \tanh\bigl(\frac\pi2\sinh t\bigr). 끝점 근처의 가중치가 이중 지수로 작아져 대부분의 끝점 특이점을 견딘다.

변환 뒤의 두 적분은 다항식이라 심프슨이 정확합니다. 무한 구간 ∫0∞e−x2dx=π/2\int_0^\infty e^{-x^2}dx = \sqrt\pi/2에 x=t/(1−t)x = t/(1 - t)를 쓰면 새 피적분 함수는 t→1t \to 1에서 0으로 매끄럽게 사라지고, 합성 심프슨 오차가 n=16n = 16에서 1.4×10−41.4\times10^{-4}, n=64n = 64에서 1.5×10−111.5\times10^{-11}입니다. 반면 ∫0∞dx1+x2\int_0^\infty\frac{dx}{1 + x^2}을 [0,10][0, 10]에서 잘라 버리면 꼬리 ∫10∞≈0.1\int_{10}^\infty \approx 0.1을 통째로 잃습니다. 같은 변환을 쓰면 피적분 함수가 1/((1−t)2+t2)1/\bigl((1 - t)^2 + t^2\bigr), [0,1][0, 1]의 매끄러운 함수가 됩니다.

특이점은 빼낼 수도 있다 ∫01cos⁡xxdx=∫01dxx+∫01cos⁡x−1xdx=2+∫01cos⁡x−1xdx\int_0^1\frac{\cos x}{\sqrt x}dx = \int_0^1\frac{dx}{\sqrt x} + \int_0^1\frac{\cos x - 1}{\sqrt x}dx = 2 + \int_0^1\frac{\cos x - 1}{\sqrt x}dx. 뒤의 피적분 함수는 x→0x \to 0에서 −12x3/2-\frac12x^{3/2}처럼 0이 되어 훨씬 다루기 쉽습니다. 특이 부분을 손으로 적분하고 나머지를 수치로 계산하는 방법입니다.
SIMULATOR

변수 변환 전후: 피적분 함수의 모양과 수렴 속도

피적분 함수와 노드 (g(t) = f(φ(t))φ′(t))
오차 vs 함숫값 수 N
구적 공식
변환 없음 (무한 구간은 [0, 10]에서 자름)변환 후
변환 없음 오차 (N)—
변환 후 오차 (N)—
기울기 (없음 · 후)—
해볼 것: ① dx/√x에서 변환 없는 오차의 기울기가 −0.5, 변환 후는 피적분 함수가 상수 2라 처음부터 반올림 수준입니다. ② cos x/√x는 변환 후 2cos t²이 되어 중점은 기울기 −2, 가우스는 지수적으로 수렴합니다. ③ dx/(1 + x²)를 [0, 10]에서 자르면 N을 아무리 늘려도 오차가 0.0997에서 멈춥니다. 잘라 낸 꼬리입니다. 모델: 위 그림의 점은 N개의 노드.

다차원 적분, 차원의 저주, 몬테카를로

10차원 적분

심프슨 공식을 축마다 쓰면(곱 공식) dd차원 적분도 계산할 수 있습니다. 축마다 점 10개면 2차원은 100개, 3차원은 1000개, 10차원은 101010^{10}개입니다. 금융의 옵션 가격, 통계 물리의 분배 함수, 렌더링의 빛 경로는 수십~수천 차원 적분입니다. 격자로는 불가능합니다.

곱 공식의 오차는 축마다 O(hp)O(h^p)이고 총점수가 N=nd=h−dN = n^d = h^{-d}이므로 O(N−p/d)O(N^{-p/d})입니다. 심프슨(p=4p = 4)도 d=8d = 8이면 N−1/2N^{-1/2}, d=20d = 20이면 N−1/5N^{-1/5}로 느려집니다. 차원이 높아질수록 같은 정확도에 필요한 점이 지수적으로 늘어나는 이 현상을 차원의 저주(curse of dimensionality)라 합니다. 또 고차원에서는 직관이 틀립니다. 단위 정육면체 [−1,1]d[-1, 1]^d 안에서 단위 공이 차지하는 비율은 d=2d = 2에서 0.785, d=5d = 5에서 0.164, d=10d = 10에서 0.0025, d=20d = 20에서 2.5×10−82.5\times10^{-8}입니다. 부피의 거의 전부가 "모서리"에 있습니다.

정리 10.7 (몬테카를로 적분) 영역 Ω\Omega(부피 VV)에서 균등하게 뽑은 독립 표본 x1,…,xN\mathbf x_1, \dots, \mathbf x_N에 대해
I^N=VN∑k=1Nf(xk),E[I^N]=I,Var⁡I^N=VσfN\hat I_N = \frac{V}{N}\sum_{k=1}^{N} f(\mathbf x_k),\qquad \mathbb E[\hat I_N] = I,\qquad \sqrt{\operatorname{Var}\hat I_N} = \frac{V\sigma_f}{\sqrt N}
이다. 여기서 σf2\sigma_f^2은 Ω\Omega 위에서 ff의 분산이다. 오차의 크기는 차원 dd와 무관하게 N−1/2N^{-1/2}로 줄어든다. 중심극한정리에 의해 I^N±1.96 Vσ^f/N\hat I_N \pm 1.96\,V\hat\sigma_f/\sqrt N이 약 95% 신뢰구간이다.

몬테카를로 적분(Monte Carlo integration)의 오차는 확률적이고 느립니다. 한 자리 더 맞추려면 표본이 100배 필요합니다. 그러나 d>8d \gt 8 정도부터는 어떤 곱 공식보다 빠르고, 피적분 함수의 매끄러움도 요구하지 않습니다. 정사각형에 점을 뿌려 사분원 안의 비율로 π\pi를 구하면 ff는 0 또는 1이라 σf=p(1−p)\sigma_f = \sqrt{p(1 - p)}, p=π/4p = \pi/4이므로 π\pi 추정의 표준오차는 4p(1−p)/N=1.64/N4\sqrt{p(1 - p)}/\sqrt N = 1.64/\sqrt N입니다. N=106N = 10^6이면 약 0.00160.0016, 소수 셋째 자리 근처까지입니다.

더 잘 뿌리기 분산을 줄이는 기법(중요도 표집, 층화 표집, 대조 변량)은 σf\sigma_f를 줄여 상수를 개선합니다. 난수 대신 고르게 퍼진 결정론적 수열(소볼, 할턴 수열)을 쓰는 준몬테카를로(quasi-Monte Carlo)는 매끄러운 함수에서 오차를 O((log⁡N)d/N)O((\log N)^d/N)까지 줄입니다. 렌더링과 금융 공학이 이 기법들을 씁니다.
SIMULATOR

몬테카를로: 다트로 π와 d차원 공의 부피를

차원 d (단위 공의 부피)
공 안 (첫 두 좌표의 투영)공 밖|추정 − 참값|표준오차 σ/√N
표본 수 N—
추정 V̂ (참값)—
|오차| · 이론 표준오차—
같은 N의 격자: 축마다 점—
해볼 것: ① ▶로 던지며 오른쪽 그래프의 빨간 점들이 기울기 −1/2인 회색 띠를 따라 내려가는 것을 보세요. 오차가 띠 위아래로 들쭉날쭉한 것은 확률적이기 때문입니다. ② d = 10으로 바꾸면 공 안에 들어가는 점이 0.25%뿐이라 상대 오차가 훨씬 큽니다(σ/V가 큼). 분산 감소 기법이 필요한 이유입니다. ③ N = 10⁶일 때 같은 수의 격자 점은 10차원에서 축마다 4개 남짓입니다. 모델: xorshift 시드 난수, [−1, 1]d 균등 표본.

이 도구가 쓰이는 곳

상황알맞은 방법대표 도구
매끄러운 1차원 함수, 공식으로 계산 가능가우스–르장드르, 적응 가우스–크론로드scipy.integrate.quad, MATLAB integral
표로 주어진 등간격 측정값(힘–변위, 유량–시간)합성 사다리꼴·심프슨numpy.trapezoid, scipy.integrate.simpson
주기 함수(한 주기 평균, 푸리에 계수)사다리꼴(지수적 수렴)FFT
끝점 특이점·무한 구간변수 변환, tanh-sinh, 가우스–라게르·에르미트mpmath.quad
유한 요소의 요소 행렬요소마다 고정 차수 가우스 점FEM 패키지
고차원(확률, 금융, 렌더링, 통계 물리)몬테카를로, 준몬테카를로경로 추적 렌더러, MCMC

확률 계산에서 정규분포의 누적 확률은 오차 함수로, 오차 함수는 erf⁡(x)=2π∫0xe−t2dt\operatorname{erf}(x) = \frac{2}{\sqrt\pi}\int_0^xe^{-t^2}dt로 정의됩니다. 라이브러리는 이를 구간별 유리 근사로 계산하지만, 그 근사의 검증은 고정밀 구적으로 합니다. 물리량 적분에서는 일 W=∫F dxW = \int F\,dx, 질량 중심, 관성 모멘트, 곡선의 길이가 모두 이 장의 공식으로 계산됩니다.

핵심 정리

  1. 구적법은 ∫f≈∑wif(xi)\int f \approx \sum w_if(x_i)다. 보간 다항식을 적분하면 wi=∫ℓiw_i = \int\ell_i이고, kk차 다항식까지 정확하면 정확도 차수 kk다.
  2. 사다리꼴·중점은 1차까지, 심프슨·3/8은 3차까지 정확하다. 높은 차수의 등간격 뉴턴–코츠는 음수 가중치와 룽게 현상 때문에 쓰지 않는다.
  3. 합성 사다리꼴·중점의 오차는 O(h2)O(h^2), 합성 심프슨은 O(h4)O(h^4)다. 중점 오차는 사다리꼴의 약 −12-\frac12배이고, 매끄러운 주기 함수에서 사다리꼴은 지수적으로 수렴한다.
  4. 오일러–매클로린 공식에 따라 사다리꼴 오차는 h2,h4,…h^2, h^4, \dots의 짝수 거듭제곱 전개를 가진다. 롬베르크 적분은 여기에 리처드슨 외삽을 되풀이하며, 둘째 열이 심프슨이다.
  5. nn점 가우스–르장드르는 노드를 PnP_n의 근에 두어 2n−12n - 1차까지 정확하고 가중치가 모두 양수다. 매끄러운 함수에서 가장 적은 함숫값으로 가장 정확하다.
  6. 적응 심프슨은 (S2−S1)/15(S_2 - S_1)/15로 오차를 추정하고 허용 오차를 넘는 구간만 쪼갠다. 어려움이 국소적일 때 균등 분할보다 훨씬 효율적이다.
  7. 끝점 특이점과 무한 구간은 x=t2x = t^2, x=t/(1−t)x = t/(1 - t) 같은 변수 변환으로 매끄러운 유한 적분으로 바꾼다. 수렴 차수는 공식이 아니라 피적분 함수의 매끄러움이 정한다.
  8. 곱 공식의 오차는 O(N−p/d)O(N^{-p/d})로 차원과 함께 나빠진다(차원의 저주). 몬테카를로 오차는 σ/N\sigma/\sqrt N으로 차원과 무관하다.

확인 퀴즈

Q1. 매끄러운 함수를 합성 사다리꼴 공식으로 n=10n = 10일 때 오차 4×10−44\times10^{-4}을 얻었다. n=20n = 20이면 오차는 대략?

합성 사다리꼴의 오차는 −(b−a)h212f′′-\frac{(b-a)h^2}{12}f'', O(h2)O(h^2)이다. h가 반이 되면 오차는 4분의 1. 2.5×10−52.5\times10^{-5}은 심프슨(16분의 1)일 때다.

Q2. 심프슨 공식 h3(f0+4f1+f2)\frac{h}{3}(f_0 + 4f_1 + f_2)의 정확도 차수는?

포물선 보간이라 2차까지는 당연히 정확하고, 대칭 덕분에 (x−m)3(x - m)^3의 적분이 0이라 3차까지 정확하다. x4x^4에서 처음 틀리므로 오차가 f(4)f^{(4)}에 비례한다.

Q3. 5점 가우스–르장드르 공식이 정확히 적분하는 다항식의 최대 차수는?

n점 가우스 공식은 2n − 1 = 9차까지 정확하다. 노드 5개와 가중치 5개, 자유도 10개로 1,x,…,x91, x, \dots, x^9의 10개 조건을 맞춘다. 10차는 ∏(x−xi)2\prod(x - x_i)^2가 반례다.

Q4. ∫0141+x2dx\int_0^1 \frac{4}{1+x^2}dx의 사다리꼴 값이 T1/4=3.1311765T_{1/4} = 3.1311765, T1/8=3.1389885T_{1/8} = 3.1389885이다. 롬베르크 표의 R1,1R_{1,1}은?

R1,1=(4T1/8−T1/4)/3=(12.555954−3.1311765)/3=3.1415925R_{1,1} = (4T_{1/8} - T_{1/4})/3 = (12.555954 - 3.1311765)/3 = 3.1415925. 이것은 n=8n = 8의 합성 심프슨 값과 같고, π와 1.5×10−71.5\times10^{-7} 차이다. 첫 보기는 단순 평균이다.

Q5. 몬테카를로 적분으로 표본 10410^4개에서 표준오차가 0.01이었다. 표준오차를 0.001로 줄이려면 표본이 몇 개 필요한가?

표준오차가 σ/N\sigma/\sqrt N이므로 10분의 1로 줄이려면 N이 100배, 10610^6개다. 이 비율은 차원과 무관하다. 그래서 고차원에서 몬테카를로가 이긴다.

Q6. ∫01x dx\int_0^1\sqrt x\,dx를 합성 심프슨 공식으로 계산할 때 nn을 두 배로 하면 오차는 대략 몇 분의 1이 되는가?

√x는 x = 0에서 도함수가 발산해 심프슨의 오차 항 가정이 깨진다. 첫 소구간의 오차가 지배하며 h1.5h^{1.5}로 줄어 비율은 21.5=2.832^{1.5} = 2.83이다. x=t2x = t^2로 바꾸면 ∫2t2dt\int 2t^2dt가 되어 심프슨이 정확하다.

Q7. 등간격 뉴턴–코츠 공식의 점을 많이(예: 21개) 쓰지 않는 이유로 가장 알맞은 것은?

정확도 차수는 올라가고 가중치 합도 b − a로 맞다. 문제는 9점부터 음수 가중치가 생기고 ∑∣wi∣\sum|w_i|가 커지는 것이다. 21점 공식은 1/(1+25x2)1/(1+25x^2)에서 오차가 −5.9로 발산한다. 합성 공식이나 가우스 구적법을 쓴다.

Q8. 적응 심프슨에서 오차 추정에 (S2−S1)/15(S_2 - S_1)/15를 쓰는 이유는?

I−S1≈16(I−S2)I - S_1 \approx 16(I - S_2)를 S2−S1=(I−S1)−(I−S2)≈15(I−S2)S_2 - S_1 = (I - S_1) - (I - S_2) \approx 15(I - S_2)로 바꾸면 나온다. 리처드슨 외삽과 같은 논리이고, S2+(S2−S1)/15S_2 + (S_2 - S_1)/15는 불 공식 수준의 값이다.