람베르트 W 함수 계산기 쉽게 이해하기 — 개념과 원리
람베르트 W 함수는 f(w) = w·eʷ의 역함수입니다. 즉 W(x)는 w·eʷ = x를 만족하는 수 w입니다. 이 계산기는 x ≥ −1/e인 값에 대해 주가지 W₀(x)를 구하고, w·eʷ를 다시 계산해 검산해 줍니다. 미지수가 지수의 안과 밖에 동시에 있는 x = a·e^(bx)나 xˣ = c 같은 방정식을 풀 때 쓰이며, 알고리즘 분석, 다이오드 회로 방정식, 개체군 모형, 효소 반응 속도론 등에 등장합니다.
계산 방법
f(w) = w·eʷ − x = 0을 뉴턴 방법의 3차 수렴형인 핼리(Halley) 방법으로 풉니다.
- wₙ₊₁ = wₙ − f ÷ [eʷ(w + 1) − (w + 2)f ÷ (2w + 2)], 여기서 f = wₙe^(wₙ) − x입니다.
- 시작값은 x < 1이면 0, 그 밖에는 ln x입니다.
- 변화량이 10⁻¹⁵보다 작아지면(최대 100회) 멈춥니다.
x는 −1/e ≈ −0.3679 이상이어야 하며, 그보다 작으면 실수 해가 없습니다.
원리
w·eʷ는 w = −1에서 최솟값 −1/e를 가진 뒤 한없이 커집니다. 그래서 x ≥ −1/e이면 w ≥ −1인 해가 하나 있고, 이것이 주가지 W₀입니다. −1/e < x < 0이면 w < −1인 실수 해(가지 W₋₁)도 하나 더 있지만, 이 계산기는 W₀만 구합니다. 핼리 방법은 1계와 2계 도함수를 함께 쓰므로 해 근처에서 맞는 자릿수가 단계마다 약 세 배로 늘어납니다.
예제 풀이
- 기본 입력값은 x = 1이므로 w·eʷ = 1인 w를 찾습니다.
- 시작값은 w₀ = ln 1 = 0입니다.
- 1단계에서 f = −1이므로 w₁ = 0.5입니다.
- 2단계 w₂ = 0.5670520513, 3단계 w₃ = 0.5671432904095입니다.
- 한 단계 더 계산해도 값이 변하지 않으므로 결과는 W₀(1) = 0.5671432904입니다.
- 검산하면 0.5671432904 × e^0.5671432904 = 1입니다. 이 수를 오메가 상수 Ω라고 하며, Ω = e^(−Ω)도 만족합니다.
| x (≥ −1/e) | W₀(x) |
|---|---|
| 0.25 | 0.2038883547 |
| 0.5 | 0.3517337112 |
| 0.75 | 0.4691502107 |
| 1 | 0.5671432904 |
| 1.25 | 0.6515479054 |
| 1.5 | 0.7258613578 |
| 2 | 0.852605502 |
결과 해석
W₀(0) = 0, W₀(e) = 1, W₀(−1/e) = −1입니다. x가 크면 W₀(x)는 대략 ln x − ln ln x 정도로 천천히 커집니다. 검산값이 입력한 x와 같아야 하며, 다르면 수렴에 문제가 있다는 신호입니다.
흔한 실수
- x < −1/e를 입력하는 경우로, 이때는 실수 해가 없습니다.
- −1/e < x < 0에서 해가 두 개라는 사실을 잊는 경우입니다. 문제에 따라 W₋₁이 필요할 수 있습니다.
- 방정식을 정확히 w·eʷ = (상수) 꼴로 바꾸지 않고 대입하는 실수입니다.
자주 묻는 질문
xˣ = c는 어떻게 푸나요?
로그를 취하면 x ln x = ln c이고, u = ln x로 두면 u·eᵘ = ln c이므로 x = ln c ÷ W(ln c)입니다.
x = a·e^(bx)는 어떻게 푸나요?
양변을 정리하면 (−bx)e^(−bx) = −ab이므로 x = −W(−ab) ÷ b이며, −ab ≥ −1/e일 때만 실수 해가 있습니다.
왜 람베르트 W라고 부르나요?
18세기 람베르트와 오일러의 연구에서 비롯되었고, W라는 이름은 1996년 코리스(Corless) 등의 논문으로 널리 쓰이게 되었습니다.
출처: Corless, R. M., Gonnet, G. H., Hare, D. E. G., Jeffrey, D. J., Knuth, D. E. (1996), On the Lambert W function, Advances in Computational Mathematics 5, 329–359 · NIST Digital Library of Mathematical Functions, §4.13 (dlmf.nist.gov)