4
$\begingroup$

As a small part of a much bigger project, I need to be able to approximate the numerical output of the Lambert W function. I have found decent approximations (good up to at least 4 decimal places), for W for inputs on $[3,\infty)$ and $[0,3)$. I thought this was going to be sufficient, but it turns out much of the input to the function will have to be below zero. What is a good (and not too complicated) approximation of W for negative input? Keep in mind I'm a programmer, not a mathematician.

$\endgroup$
6
$\begingroup$

Assuming you're going for the principal branch, you'll want the expansion of the Lambert function $W(z)$ about the branch point $z=-e^{-1}$:

$$W(z)=-1+t-\frac{t^2}{3}+\frac{11}{72}t^3+\dots$$

where $t=\sqrt{2ez+2}$. If you require more terms, section 3 of this paper mentions the (complicated!) recurrence required to generate the coefficients of this series, as well as the adjustments you need to make if what you require is the "lower" branch $W_{-1}(z)$ (hint: you futz with the square root).

Alternatively, Winitzki gives in his paper a convenient approximation for the principal branch for arguments near the branch point:

$$W(z)\approx\frac{ez}{1+\left((e-1)^{-1}-\frac1{\sqrt{2}}+\frac1{\sqrt{2ez+2}}\right)^{-1}}$$


Here's a graphical side-by side comparison of three approximants over the interval $(-e^{-1},0)$. The plots are of functions of the form $f(z)-W(z)$, where $f(z)$ is one of the following: the first five terms of the branch point series, a $(3,2)$ Padé approximant constructed from the series,

$$W(z)\approx\frac{-1+\frac16 t+\frac{257}{720}t^2+\frac{13}{720}t^3}{1+\frac56 t+\frac{103}{720}t^2}, \qquad t=\sqrt{2ez+2}$$

and the Winitzki approximant:

Lambert function approximants over (-1/e,0)

$\endgroup$
  • $\begingroup$ Thanks! Just so I understand the math, the first approximation you list here is taken from the series expansion of the function, correct? $\endgroup$ – Graham Jul 25 '11 at 16:07
  • $\begingroup$ Yes @Graham, it's the series about the branch point. Just generate as many terms of the series as needed, or construct a Padé approximant from it. $\endgroup$ – J. M. is a poor mathematician Jul 27 '11 at 1:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.