이 계산기로 할 수 있는 일
이 도구는 이중지수(DE) 구적법, 즉 Tanh-Sinh 방법을 사용하여 단일 변수 함수 \(f(x)\)의 유한 구간 \([a, b]\)에서의 정적분을 계산합니다. DE 구적법은 유한 구간에 대해 가장 신뢰할 수 있는 범용 수치적분 기법 중 하나로, 특히 \(1/\sqrt{x}\)나 \(\log(x)\)처럼 끝점에서 무한대로 발산하는 피적분 함수를 다루는 데 탁월합니다. 일반적인 가우스 구적법이나 심프슨 공식이 어려움을 겪는 상황에서도 안정적으로 작동합니다.
사용 방법
피적분 함수 \(f(x)\) 칸에 일반적인 수학 표기법으로 식을 입력하세요. 사용 가능한 연산자는 + - * / ^와 괄호이며, 함수로는 sqrt, exp, log, ln, sin, cos, tan, asin, acos, atan, sinh, cosh, tanh, abs를, 상수로는 pi와 e를 쓸 수 있습니다. 적분 하한 \(a\)와 상한 \(b\)를 입력하고, 목표로 할 유효숫자 자릿수를 선택한 뒤 실행하세요. 특이점은 오직 끝점 \(a\)와 \(b\)에서만 허용됩니다. 그 외에는 열린 구간 \((a, b)\)에서 함수가 해석적(analytic)이어야 하며, 주기 함수여서는 안 됩니다.
공식 풀이
먼저 구간을 \(x(u) = \frac{(b+a)+(b-a)u}{2}\) 변환으로 \([-1, 1]\)에 매핑합니다. 그다음 DE 변환 \(u = \tanh\!\left(\frac{\pi}{2}\sinh t\right)\)가 직선을 늘려주어, \(t\)가 커질수록 \(u\)는 초지수적(super-exponential)으로 끝점에 다가가는 동시에 가중치 \(g'(t)\)는 그만큼 빠르게 0으로 수렴합니다. 노드가 결코 \(a\)나 \(b\)에 정확히 도달하지 않기 때문에 끝점의 특이점은 실제로는 절대 평가되지 않으며, 자연스럽게 "길들여집니다". 변환된 적분은 간단한 사다리꼴 공식(스텝 \(h\))으로 합산되고, 답이 더 이상 바뀌지 않을 때까지 \(h\)를 절반씩 줄여 나갑니다.
$$\int_{a}^{b} f(x)\,dx \;\approx\; \frac{b-a}{2}\,h\sum_{k} w_k\, f\!\left(x_k\right)$$
$$\begin{gathered} \int_{a}^{b} f(x)\,dx \;\approx\; \frac{b-a}{2}\,h\sum_{k} w_k\, f\!\left(x_k\right) \\[1.5em] \text{where}\quad \left\{ \begin{aligned} a &= \text{Lower limit} \\ b &= \text{Upper limit} \\ x_k &= \tfrac{b+a}{2} + \tfrac{b-a}{2}\tanh\!\left(\tfrac{\pi}{2}\sinh(k h)\right) \\ w_k &= \dfrac{\tfrac{\pi}{2}\cosh(k h)}{\cosh^{2}\!\left(\tfrac{\pi}{2}\sinh(k h)\right)} \end{aligned} \right. \end{gathered}$$
예제로 살펴보기
구간 \([0, 1]\)에서 \(f(x) = 1/\sqrt{x}\)의 정확한 값은 \(\left[2\sqrt{x}\right]\)를 0부터 1까지 계산한 \(2\)입니다. 단 7개의 점만 쓰는 거친 DE 격자(\(h = 0.5\))로도 이미 약 \(1.94\)가 나오고, \(h\)를 더 세밀하게 줄이면 추정값이 \(2.000000000000000\)으로 수렴합니다. 특이점이 없는 경우도 확인해 보면, \([0, 1]\)에서 \(f(x) = x^2\)는 \(1/3 = 0.3333333333333\)을 반환합니다.
자주 묻는 질문
구간 내부에 있는 특이점도 처리할 수 있나요? 아니요. DE 방법은 끝점에 있는 특이점만 견딜 수 있습니다. 내부의 점 \(c\)에 특이점이 있다면 적분을 \([a, c]\)와 \([c, b]\)로 나눈 뒤 두 결과를 더하세요.
주기 함수에는 왜 잘 맞지 않나요? 매끄러운 주기 피적분 함수의 경우 일반 사다리꼴 공식만으로도 이미 지수적으로 수렴하기 때문에, DE 변수 변환은 오히려 속도만 늦출 뿐입니다.
자릿수 설정은 어떤 역할을 하나요? 세분화를 언제 멈출지 결정하는 상대 허용 오차를 설정하며, 표시되는 값도 그에 맞춰 반올림합니다.