Lambert W function

From Wikipedia, the free encyclopedia
(Redirected from Lambert's W function)
Jump to navigation Jump to search

Template:Short description Template:Use American English

The product logarithm Lambert W function plotted in the complex plane from −2 − 2i to 2 + 2i
The product logarithm Lambert W function plotted in the complex plane from −2 − 2iScript error: No such module "Check for unknown parameters". to 2 + 2iScript error: No such module "Check for unknown parameters".
File:Mplwp lambert W branches.svg
The graph of y=W(x) for real x<6 and y>4. The upper branch (blue) with y1 is the graph of the function W0 (principal branch), the lower branch (magenta) with y1 is the graph of the function W1. The minimum value of x is at {1/e,1}.

In mathematics, the Lambert W function, also called the omega function or product logarithm,[1] is a multivalued function, namely the branches of the converse relation of the function f(w)=wew, where Template:Mvar is any complex number and ew is the exponential function. The function is named after Johann Lambert, who considered a related problem in 1758. Building on Lambert's work, Leonhard Euler described the W function per se in 1783.[2] Despite its early origins and wide use, its properties were not widely recognized until the 1990s thanks primarily to the work of Corless.

For each integer k there is one branch, denoted by Wk(z), which is a complex-valued function of one complex argument. W0 is known as the principal branch. These functions have the following property: if z and w are any complex numbers, then

wew=z

holds if and only if

w=Wk(z)   for some integer k.

When dealing with real numbers only, the two branches W0 and W1 suffice: for real numbers x and y the equation

yey=x

can be solved for y only if x1e; yields y=W0(x) if x0 and the two values y=W0(x) and y=W1(x) if 1ex<0.

The Lambert W function's branches cannot be expressed in terms of elementary functions.[3] It is useful in combinatorics, for instance, in the enumeration of trees. It can be used to solve various equations involving exponentials (e.g. the maxima of the Planck, Bose–Einstein, and Fermi–Dirac distributions) and also occurs in the solution of delay differential equations, such as y(t)=a y(t1). In biochemistry, and in particular enzyme kinetics, an opened-form solution for the time-course kinetics analysis of Michaelis–Menten kinetics is described in terms of the Lambert W function.

File:Cplot Lambert W.png
Main branch of the Lambert W function in the complex plane, plotted with domain coloring. Note the branch cut along the negative real axis, ending at 1e.
File:Lambert-modulus-HSV.png
The modulus of the principal branch of the Lambert W function, colored according to argW(z)

Terminology

The notation convention chosen here (with W0 and W1) follows the canonical reference on the Lambert W function by Corless, Gonnet, Hare, Jeffrey and Knuth.[4]

The name "product logarithm" can be understood as follows: since the inverse function of f(w)=ew is termed the logarithm, it makes sense to call the inverse "function" of the product wew the "product logarithm". (Technical note: like the complex logarithm, it is multivalued and thus W is described as a converse relation rather than inverse function.) It is related to the omega constant, which is equal to W0(1).

History

Lambert first considered the related Lambert's Transcendental Equation in 1758,[5] which led to an article by Leonhard Euler in 1783[6] that discussed the special case of wew.

The equation Lambert considered was

x=xm+q.

Euler transformed this equation into the form

xaxb=(ab)cxa+b.

Both authors derived a series solution for their equations.

Once Euler had solved this equation, he considered the case Template:Tmath. Taking limits, he derived the equation

lnx=cxa.

He then put Template:Tmath and obtained a convergent series solution for the resulting equation, expressing Template:Tmath in terms of Template:Tmath.

After taking derivatives with respect to Template:Tmath and some manipulation, the standard form of the Lambert function is obtained.

In 1993, it was reported that the Lambert Template:Tmath function provides an exact solution to the quantum-mechanical double-well Dirac delta function model for equal charges[7]—a fundamental problem in physics. Prompted by this, Rob Corless and developers of the Maple computer algebra system realized that "the Lambert W function has been widely used in many fields, but because of differing notation and the absence of a standard name, awareness of the function was not as high as it should have been."[4][8]

Another example where this function is found is in Michaelis–Menten kinetics.[9]

Although it was widely believed that the Lambert Template:Tmath function cannot be expressed in terms of elementary (Liouvillian) functions, the first published proof did not appear until 2008.[10]

Elementary properties, branches and range

File:Lambert W Range.pdf
The range of the Template:Mvar function, showing all branches. The black curves (including the real axis) form the image of the real axis, the orange curves are the image of the imaginary axis. The purple curve and circle are the image of a small circle around the point z = 0Script error: No such module "Check for unknown parameters".; the red curves are the image of a small circle around the point z = −1/eScript error: No such module "Check for unknown parameters"..
File:Imaginary part of the Lambert W(n,x+i y) for various branches (n).jpg
Plot of the imaginary part of Wn(x + iy)Script error: No such module "Check for unknown parameters". for branches n = −2, −1, 0, 1, 2Script error: No such module "Check for unknown parameters".. The plot is similar to that of the multivalued complex logarithm function except that the spacing between sheets is not constant and the connection of the principal sheet is different

There are countably many branches of the Template:Mvar function, denoted by Wk(z)Script error: No such module "Check for unknown parameters"., for integer Template:Mvar; W0(z)Script error: No such module "Check for unknown parameters". being the main (or principal) branch. W0(z)Script error: No such module "Check for unknown parameters". is defined for all complex numbers z while Wk(z)Script error: No such module "Check for unknown parameters". with k ≠ 0Script error: No such module "Check for unknown parameters". is defined for all non-zero z, with W0(0) = 0Script error: No such module "Check for unknown parameters". and limz0Wk(z)=, for all k ≠ 0Script error: No such module "Check for unknown parameters"..

The branch point for the principal branch is at z=e1, with the standard branch cut extending along the negative real axis to −∞+0iScript error: No such module "Check for unknown parameters".. This branch cut separates the principal branch from the two branches W−1Script error: No such module "Check for unknown parameters". and W1Script error: No such module "Check for unknown parameters".. In all branches WkScript error: No such module "Check for unknown parameters". with k ≠ 0Script error: No such module "Check for unknown parameters"., there is a branch point at z = 0Script error: No such module "Check for unknown parameters". and a branch cut is conventionally taken along the entire negative real axis.

The functions Wk(z), kZScript error: No such module "Check for unknown parameters". are all injective and their ranges are disjoint. The range of the entire multivalued function Template:Mvar is the complex plane. The image of the real axis is the union of the real axis and the quadratrix of Hippias, the parametric curve w = −t cot t + itScript error: No such module "Check for unknown parameters"..

Inverse

File:InvertW.jpg
Regions of the complex plane for which W(n, zez) = zScript error: No such module "Check for unknown parameters"., where z = x + iyScript error: No such module "Check for unknown parameters".. The darker boundaries of a particular region are included in the lighter region of the same color. The point at Template:BraceScript error: No such module "Check for unknown parameters". is included in both the n = −1Script error: No such module "Check for unknown parameters". (blue) region and the n = 0Script error: No such module "Check for unknown parameters". (gray) region. Horizontal grid lines are in multiples of πScript error: No such module "Check for unknown parameters"..

The range plot above also delineates the regions in the complex plane where the simple inverse relationship Template:Tmath is true. Template:Tmath implies that there exists an Template:Tmath such that Template:Tmath, where Template:Tmath depends upon the value of Template:Tmath. The value of the integer Template:Tmath changes abruptly when Template:Tmath is at the branch cut of Template:Tmath, which means that Template:Tmath ≤ 0Script error: No such module "Check for unknown parameters"., except for Template:Tmath where it is Template:Tmath ≤ −1/Script error: No such module "Check for unknown parameters".Template:Tmath.

Defining Template:Tmath, where Template:Tmath and Template:Tmath are real, and expressing Template:Tmath in polar coordinates, it is seen that

zez=(x+iy)ex(cosy+isiny)=ex(xcosyysiny)+iex(xsiny+ycosy)

For n0, the branch cut for Template:Tmath is the non-positive real axis, so that

xsiny+ycosy=0x=y/tan(y),

and

(xcosyysiny)ex0.

For n=0, the branch cut for Template:Tmath is the real axis with <z1/e, so that the inequality becomes

(xcosyysiny)ex1/e.

Inside the regions bounded by the above, there are no discontinuous changes in Template:Tmath, and those regions specify where the Template:Tmath function is simply invertible, i.e. Template:Tmath.

Calculus

Derivative

By implicit differentiation, one can show that all branches of Template:Mvar satisfy the differential equation

z(1+W)dWdz=Wfor z1e.

(Template:Mvar is not differentiable for z = −Template:SfracScript error: No such module "Check for unknown parameters"..) As a consequence, that gets the following formula for the derivative of W:

dWdz=W(z)z(1+W(z))for z∉{0,1e}.

Using the identity eW(z) = Template:SfracScript error: No such module "Check for unknown parameters"., gives the following equivalent formula:

dWdz=1z+eW(z)for z1e.

At the origin we have

W'0(0)=1.

The n-th derivative of Template:Mvar is of the form:

dnWdzn=Pn(W(z))(z+eW(z))n(W(z)+1)n1for n>0,z1e.

Where PnScript error: No such module "Check for unknown parameters". is a polynomial function with coefficients defined in A042977. If and only if Template:Mvar is a root of PnScript error: No such module "Check for unknown parameters". then zezScript error: No such module "Check for unknown parameters". is a root of the n-th derivative of Template:Mvar.

Taking the derivative of the n-th derivative of Template:Mvar yields:

dn+1Wdzn+1=(W(z)+1)Pn(W(z))+(13nnW(z))Pn(W(z))(n+eW(z))n+1(W(z)+1)nfor n>0,z1e.

Inductively proving the n-th derivative equation.

Integral

The function W(x)Script error: No such module "Check for unknown parameters"., and many other expressions involving W(x)Script error: No such module "Check for unknown parameters"., can be integrated using the substitution w = W(x)Script error: No such module "Check for unknown parameters"., i.e. x = wewScript error: No such module "Check for unknown parameters".:

W(x)dx=xW(x)x+eW(x)+C=x(W(x)1+1W(x))+C.

(The last equation is more common in the literature but is undefined at x = 0Script error: No such module "Check for unknown parameters".). One consequence of this (using the fact that W0(e) = 1Script error: No such module "Check for unknown parameters".) is the identity

0eW0(x)dx=e1.


Asymptotic expansions

By the Lagrange inversion theorem, the Taylor series of the principal branch W0(x) around x=0 is:

W0(x)=n=1(n)n1n!xn=xx2+32x3166x4+12524x5.

The radius of convergence is 1/e by the ratio test, and the function defined by the series can be extended to a holomorphic function defined on all complex numbers except a branch cut along the interval (,1/e].

For large values x, the real function W0(x) is asymptotic to

W0(x)=L1L2+L2L1+L2(2+L2)2L12+L2(69L2+2L22)6L13+L2(12+36L222L22+3L23)12L14+=L1L2+=1m=1(1)[m+1]m!L2mL1,

where L1 = ln xScript error: No such module "Check for unknown parameters"., L2 = ln ln xScript error: No such module "Check for unknown parameters"., and [Script error: No such module "Su".]Script error: No such module "Check for unknown parameters". is a non-negative Stirling number of the first kind.[4] Keeping only the first two terms of the expansion,

W0(x)=lnxlnlnx+(1).

The other real branch, W−1Script error: No such module "Check for unknown parameters"., defined in the interval Template:Closed-open, has an approximation of the same form as Template:Mvar approaches zero, in this case with L1 = ln(−x)Script error: No such module "Check for unknown parameters". and L2 = ln(−ln(−x))Script error: No such module "Check for unknown parameters"..[4]

Integer and complex powers

Integer powers of W0Script error: No such module "Check for unknown parameters". also admit simple Taylor (or Laurent) series expansions at zero:

W0(x)2=n=22(n)n3(n2)!xn=x22x3+4x4253x5+18x6.

More generally, for rZScript error: No such module "Check for unknown parameters"., the Lagrange inversion formula gives

W0(x)r=n=rr(n)nr1(nr)!xn,

which is, in general, a Laurent series of order Template:Mvar. Equivalently, the latter can be written in the form of a Taylor expansion of powers of W0(x) / xScript error: No such module "Check for unknown parameters".:

(W0(x)x)r=erW0(x)=n=0r(n+r)n1n!(x)n,

which holds for any rCScript error: No such module "Check for unknown parameters". and Template:Abs < Template:SfracScript error: No such module "Check for unknown parameters"..

Bounds and inequalities

A number of non-asymptotic bounds are known for the Lambert function.

Principal branch

Hoorfar and Hassani[11] showed that the following bound holds for xeScript error: No such module "Check for unknown parameters".:

lnxlnlnx+lnlnx2lnxW0(x)lnxlnlnx+ee1lnlnxlnx.

Roberto Iacono and John P. Boyd[12] enhanced the bounds for xeScript error: No such module "Check for unknown parameters". as follows:

ln(xlnx)ln(xlnx)1+ln(xlnx)ln(1lnlnxlnx)W0(x)ln(xlnx)ln((1lnlnxlnx)(1ln(1lnlnxlnx)1+ln(xlnx))).

Hoorfar and Hassani[11] also showed the general bound

W0(x)ln(x+y1+ln(y)),

for every y>1/e and x1/e, with equality only for x=yln(y). The bound allows many other bounds to be derived, such as taking y=x+1 which gives the bound

W0(x)ln(2x+11+ln(x+1)).

Bounds for the function W0(xex) for x1 are obtained by Stewart.[13]

Secondary branch

For x[1e,0) the following bound holds:

ln(x)ln(ln(x))0.5W1(x)ln(x)ln(ln(x)).

Proof

W1(x)=ln(W1(x)eW1(x)W1(x))=ln(x)ln(W1(x))=ln(x)ln(W1(x))ln(ln(x))+ln(ln(W1(x)eW1(x)))=ln(x)ln(ln(x))+ln(ln(W1(x)eW1(x))W1(x))=ln(x)ln(ln(x))+ln(ln(W1(x))W1(x)W1(x))=ln(x)ln(ln(x))+ln(1ln(W1(x))W1(x)).

Since for t ≥ 1 it holds that ln(1lntt)[ln(ee1),0][0.5,0], by setting t=W1(x) we obtain

ln(x)ln(ln(x))0.5W1(x)ln(x)ln(ln(x)).

Note that a tighter bound can be made by replacing both of the occurrences of W1(x) in the ln(1ln(W1(x))W1(x)) expression with the current bounds.

Identities

File:Plot of Lambert W function of x exp x.svg
A plot of Wj(xex)Script error: No such module "Check for unknown parameters". where blue is for j = 0Script error: No such module "Check for unknown parameters". and red is for j = −1Script error: No such module "Check for unknown parameters".. The diagonal line represents the intervals where Wj(xex) = xScript error: No such module "Check for unknown parameters"..
The product logarithm Lambert W function W 2(z) plotted in the complex plane from -2-2i to 2+2i
The product logarithm Lambert WScript error: No such module "Check for unknown parameters". function W2(z)Script error: No such module "Check for unknown parameters". plotted in the complex plane from −2 − 2iScript error: No such module "Check for unknown parameters". to 2 + 2iScript error: No such module "Check for unknown parameters".

A few identities follow from the definition:

W0(xex)=xfor x1,W1(xex)=xfor x1.

Since f(x) = xexScript error: No such module "Check for unknown parameters". is not injective, it does not always hold that W(f(x)) = xScript error: No such module "Check for unknown parameters"., much like with the inverse trigonometric functions. For fixed x < 0Script error: No such module "Check for unknown parameters". and x ≠ −1Script error: No such module "Check for unknown parameters"., the equation xex = yeyScript error: No such module "Check for unknown parameters". has two real solutions in Template:Mvar, one of which is of course y = xScript error: No such module "Check for unknown parameters".. Then, for i = 0Script error: No such module "Check for unknown parameters". and x < −1Script error: No such module "Check for unknown parameters"., as well as for i = −1Script error: No such module "Check for unknown parameters". and x ∈ (−1, 0)Script error: No such module "Check for unknown parameters"., y = Wi(xex)Script error: No such module "Check for unknown parameters". is the other solution.

Some other identities:[14]

W(x)eW(x)=x,therefore:eW(x)=xW(x),eW(x)=W(x)x,enW(x)=(xW(x))n.
lnW0(x)=lnxW0(x)for x>0.[15]
W0(xlnx)=lnxandeW0(xlnx)=xfor 1ex.
W1(xlnx)=lnxandeW1(xlnx)=xfor 0<x1e.
W(x)=lnxW(x)for x1e,W(nxnW(x)n1)=nW(x)for n,x>0
(which can be extended to other Template:Mvar and Template:Mvar if the correct branch is chosen).
W(x)+W(y)=W(xy(1W(x)+1W(y)))for x,y>0.

Substituting −ln xScript error: No such module "Check for unknown parameters". in the definition:[16]

W0(lnxx)=lnxfor 0<xe,W1(lnxx)=lnxfor x>e.

With Euler's iterated exponential h(x)Script error: No such module "Check for unknown parameters".:

h(x)=eW(lnx)=W(lnx)lnxfor x1.

c[1e,0),let t=W1(c)W0(c)1W0(c)=lnt1t,W1(c)=tlnt1t

Special values

The following are special values of the principal branch: W0(π2)=iπ2 W0(1e)=1 W0(2ln2)=ln2 W0(xlnx)=lnx(x1e0.36788) W0(xx+1lnx)=xlnx(x>0) W0(0)=0

W0(1)=Ω=(dt(ett)2+π2)110.56714329 (the omega constant)

W0(1)=eW0(1)=ln1W0(1)=lnW0(1) W0(e)=1 W0(e1+e)=e W0(e2)=12 W0(enn)=1n W0(1)0.31813+1.33723i

Special values of the branch W−1Script error: No such module "Check for unknown parameters".: W1(ln22)=ln4

Representations

The principal branch of the Lambert function can be represented by a proper integral, due to Poisson:[17]

π2W0(x)=0πsin(32t)xecostsin(52tsint)12xecostcos(tsint)+x2e2costsin(12t)dtfor |x|<1e.

Another representation of the principal branch was found by Kalugin–Jeffrey–Corless:[18]

W0(x)=1π0πln(1+xsinttetcott)dt.

The following continued fraction representation also holds for the principal branch:[19]

W0(x)=x1+x1+x2+5x3+17x10+133x17+1927x190+13582711x94423+.

Also, if Template:Abs < 1Script error: No such module "Check for unknown parameters".:[20]

W0(x)=xexpxexpx.

In turn, if Template:Abs > 1Script error: No such module "Check for unknown parameters"., then

W0(x)=lnxlnxlnx.

Other formulas

Definite integrals

There are several useful definite integral formulas involving the principal branch of the Template:Mvar function, including the following:

0πW0(2cot2x)sec2xdx=4π,0W0(x)xxdx=22π,0W0(1x2)dx=2π, and more generally0W0(1xN)dx=N11NΓ(11N)for N>0

where Γ denotes the gamma function.

The first identity can be found by writing the Gaussian integral in polar coordinates.

The second identity can be derived by making the substitution u = W0(x)Script error: No such module "Check for unknown parameters"., which gives

x=ueu,dxdu=(u+1)eu.

Thus

0W0(x)xxdx=0uueuueu(u+1)eudu=0u+1ueudu=0u+1u1eudu=0u12eu2du+0u12eu2du=20(2w)12ewdw+20(2w)12ewdw(u=2w)=220w12ewdw+20w12ewdw=22Γ(32)+2Γ(12)=22(12π)+2(π)=22π.

The third identity may be derived from the second by making the substitution u = x−2Script error: No such module "Check for unknown parameters". and the first can also be derived from the third by the substitution z = Template:Sfrac tan xScript error: No such module "Check for unknown parameters".. Deriving its generalization, the fourth identity, is only slightly more involved and can be done by substituting, in turn, u=x1N, t=W0(u), and z=tN, observing that one obtains two integrals matching the definition of the gamma function, and finally using the properties of the gamma function to collect terms and simplify.

Except for Template:Mvar along the branch cut Template:Open-closed (where the integral does not converge), the principal branch of the Lambert Template:Mvar function can be computed by the following integral:[21]

W0(z)=z2πππ(1νcotν)2+ν2z+νcsc(ν)eνcotνdν=zπ0π(1νcotν)2+ν2z+νcsc(ν)eνcotνdν,

where the two integral expressions are equivalent due to the symmetry of the integrand.

Indefinite integrals

W(x)xdx=W(x)22+W(x)+C Template:Math proof Template:Math proof

W(AeBx)dx=W(AeBx)22B+W(AeBx)B+C Template:Math proof

W(x)x2dx=Ei(W(x))eW(x)+C Template:Math proof

Applications

Solving equations

The Lambert Template:Mvar function is used to solve equations in which the unknown quantity occurs both in the base and in the exponent, or both inside and outside of a logarithm. The strategy is to convert such an equation into one of the form zez = wScript error: No such module "Check for unknown parameters". and then to solve for Template:Mvar using the Template:Mvar function.

For example, the equation

3x=2x+2

(where Template:Mvar is an unknown real number) can be solved by rewriting it as

(x+1) 3x=12(multiply by 3x/2) (x1) 3x1=16(multiply by 1/3) (ln3)(x1) e(ln3)(x1)=ln36(multiply by ln3)

This last equation has the desired form and the solutions for real x are:

(ln3)(x1)=W0(ln36)   or   (ln3)(x1)=W1(ln36)

and thus:

x=1W0(ln36)ln3=0.79011  or  x=1W1(ln36)ln3=1.44456

Generally, the solution to

x=a+becx

is:

x=a1cW(bceac)

where a, b, and c are complex constants, with b and c not equal to zero, and the W function is of any integer order.

Tree counting and combinatorics

Cayley's formula states that the number of tree graphs on n labeled vertices is

nn2

, so that the number of trees with a designated root vertex is

nn1

. The exponential generating function of this counting sequence is:

T(x)=n=0nn1n!xn.

The class of rooted trees has a natural recurrence: a rooted tree is equivalent to a root vertex attached to a set of smaller rooted trees. Using the exponential formula for labeled combinatorial classes,[22] this translates into the equation:

T(x)=xeT(x),

which implies

T(x)eT(x)=x

and

W0(x)=T(x)

.

Reversing the argument, the Maclaurin series of

W0(x)

around

x=0

can be found directly using the Lagrange inversion theorem:

W0(x)=n=1(n)n1n!xn,

and this gives the standard analytic proof of Cayley's formula. But the Maclaurin series radius of convergence is limited to |x|<1/e because of the branch point at x=1/e.

Inviscid flows

Applying the unusual accelerating traveling-wave Ansatz in the form of ρ(η)=ρ(xat22) (where ρ, η, a, x and t are the density, the reduced variable, the acceleration, the spatial and the temporal variables) the fluid density of the corresponding Euler equation can be given with the help of the W function.[23]

Viscous flows

Granular and debris flow fronts and deposits, and the fronts of viscous fluids in natural events and in laboratory experiments can be described by using the Lambert–Euler omega function as follows:

H(x)=1+W((H(0)1)e(H(0)1)xL),

where H(x)Script error: No such module "Check for unknown parameters". is the debris flow height, Template:Mvar is the channel downstream position, Template:Mvar is the unified model parameter consisting of several physical and geometrical parameters of the flow, flow height and the hydraulic pressure gradient.

In pipe flow, the Lambert W function is part of the explicit formulation of the Colebrook equation for finding the Darcy friction factor. This factor is used to determine the pressure drop through a straight run of pipe when the flow is turbulent.[24]

Time-dependent flow in simple branch hydraulic systems

The principal branch of the Lambert Template:Mvar function is employed in the field of mechanical engineering, in the study of time dependent transfer of Newtonian fluids between two reservoirs with varying free surface levels, using centrifugal pumps.[25] The Lambert Template:Mvar function provided an exact solution to the flow rate of fluid in both the laminar and turbulent regimes: Qturb=QiζiW0[ζie(ζi+βt/b)]Qlam=QiξiW0[ξie(ξi+βt/(bΓ1))] where Qi is the initial flow rate and t is time.

Neuroimaging

The Lambert Template:Mvar function is employed in the field of neuroimaging for linking cerebral blood flow and oxygen consumption changes within a brain voxel, to the corresponding blood oxygenation level dependent (BOLD) signal.[26]

Chemical engineering

The Lambert Template:Mvar function is employed in the field of chemical engineering for modeling the porous electrode film thickness in a glassy carbon based supercapacitor for electrochemical energy storage. The Lambert Template:Mvar function provides an exact solution for a gas phase thermal activation process where growth of carbon film and combustion of the same film compete with each other.[27][28]

Crystal growth

In the crystal growth, the negative principal of the Lambert W-function can be used to calculate the distribution coefficient, k, and solute concentration in the melt, CL,[29][30] from the Scheil equation:

k=W0(Z)ln(1fs)CL=C0(1fs)eW0(Z)Z=CSC0(1fs)ln(1fs)

Materials science

The Lambert Template:Mvar function is employed in the field of epitaxial film growth for the determination of the critical dislocation onset film thickness. This is the calculated thickness of an epitaxial film, where due to thermodynamic principles the film will develop crystallographic dislocations in order to minimise the elastic energy stored in the films. Prior to application of Lambert Template:Mvar for this problem, the critical thickness had to be determined via solving an implicit equation. Lambert Template:Mvar turns it in an explicit equation for analytical handling with ease.[31]

Semiconductor devices

It was shown that a W-function describes the relation between voltage, current and resistance in a diode.[32]

The use of the Lambert W Function to analytically and exactly solve the terminals' current and voltage as explicit functions of each other in a circuit model of a diode with both series and shunt resistances was first reported in the year 2000. [33]

The Lambert W Function was introduced into compact modeling of MOSFETs in 2003 as a useful mathematical tool to explicitly describe the surface potential in undoped channels.[34]

The Lambert W function-based explicit analytic solution of the illuminated photovoltaic solar cell single-diode model with parasitic series and shunt resistance was published in 2004.[35]

Porous media

The Lambert Template:Mvar function has been employed in the field of fluid flow in porous media to model the tilt of an interface separating two gravitationally segregated fluids in a homogeneous tilted porous bed of constant dip and thickness where the heavier fluid, injected at the bottom end, displaces the lighter fluid that is produced at the same rate from the top end. The principal branch of the solution corresponds to stable displacements while the −1 branch applies if the displacement is unstable with the heavier fluid running underneath the lighter fluid.[36]

Bernoulli numbers and Todd genus

The equation (linked with the generating functions of Bernoulli numbers and Todd genus):

Y=X1eX

can be solved by means of the two real branches W0Script error: No such module "Check for unknown parameters". and W−1Script error: No such module "Check for unknown parameters".:

X(Y)={W1(YeY)W0(YeY)=YW0(YeY)for Y<1,W0(YeY)W1(YeY)=YW1(YeY)for 1<Y<0.

This application shows that the branch difference of the Template:Mvar function can be employed in order to solve other transcendental equations.[37]

Statistics

The centroid of a set of histograms defined with respect to the symmetrized Kullback–Leibler divergence (also called the Jeffreys divergence [38]) has a closed form using the Lambert Template:Mvar function.[39]

Pooling of tests for infectious diseases

Solving for the optimal group size to pool tests so that at least one individual is infected involves the Lambert WScript error: No such module "Check for unknown parameters". function.[40][41][42]

Exact solutions of the Schrödinger equation

The Lambert Template:Mvar function appears in a quantum-mechanical potential, which affords the fifth – next to those of the harmonic oscillator plus centrifugal, the Coulomb plus inverse square, the Morse, and the inverse square root potential – exact solution to the stationary one-dimensional Schrödinger equation in terms of the confluent hypergeometric functions. The potential is given as

V=V01+W(exσ).

A peculiarity of the solution is that each of the two fundamental solutions that compose the general solution of the Schrödinger equation is given by a combination of two confluent hypergeometric functions of an argument proportional to[43]

z=W(exσ).

The Lambert Template:Mvar function also appears in the exact solution for the bound state energy of the one dimensional Schrödinger equation with a Double Delta Potential.

Exact solution of QCD coupling constant

In Quantum chromodynamics, the quantum field theory of the Strong interaction, the coupling constant αs is computed perturbatively, the order n corresponding to Feynman diagrams including n quantum loops.[44] The first order, n = 1Script error: No such module "Check for unknown parameters"., solution is exact (at that order) and analytical. At higher orders, n > 1Script error: No such module "Check for unknown parameters"., there is no exact and analytical solution and one typically uses an iterative method to furnish an approximate solution. However, for second order, n = 2Script error: No such module "Check for unknown parameters"., the Lambert function provides an exact (if non-analytical) solution.[44]

Exact solutions of the Einstein vacuum equations

In the Schwarzschild metric solution of the Einstein vacuum equations, the Template:Mvar function is needed to go from the Eddington–Finkelstein coordinates to the Schwarzschild coordinates. For this reason, it also appears in the construction of the Kruskal–Szekeres coordinates.

Resonances of the delta-shell potential

The s-wave resonances of the delta-shell potential can be written exactly in terms of the Lambert Template:Mvar function.[45]

Thermodynamic equilibrium

If a reaction involves reactants and products having heat capacities that are constant with temperature then the equilibrium constant Template:Mvar obeys

lnK=aT+b+clnT

for some constants Template:Mvar, Template:Mvar, and Template:Mvar. When Template:Mvar (equal to Template:SfracScript error: No such module "Check for unknown parameters".) is not zero the value or values of Template:Mvar can be found where Template:Mvar equals a given value as follows, where Template:Mvar can be used for ln TScript error: No such module "Check for unknown parameters"..

a=(blnK)T+cTlnT=(blnK)eL+cLeLac=(blnKc+L)eLaceblnKc=(L+blnKc)eL+blnKcL=W(aceblnKc)+lnKbcT=exp(W(aceblnKc)+lnKbc).

If Template:Mvar and Template:Mvar have the same sign there will be either two solutions or none (or one if the argument of Template:Mvar is exactly Template:SfracScript error: No such module "Check for unknown parameters".). (The upper solution may not be relevant.) If they have opposite signs, there will be one solution.

Phase separation of polymer mixtures

In the calculation of the phase diagram of thermodynamically incompatible polymer mixtures according to the Edmond-Ogston model, the solutions for binodal and tie-lines are formulated in terms of Lambert Template:Mvar functions.[46]

Wien's displacement law in a D-dimensional universe

Wien's displacement law is expressed as νmax/T=α=const. With x=hνmax/kBT and dρT(x)/dx=0, where ρT is the spectral energy energy density, one finds ex=1xD, where D is the number of degrees of freedom for spatial translation. The solution x=D+W(DeD) shows that the spectral energy density is dependent on the dimensionality of the universe.[47]

AdS/CFT correspondence

The classical finite-size corrections to the dispersion relations of giant magnons, single spikes and GKP strings can be expressed in terms of the Lambert Template:Mvar function.[48][49]

Epidemiology

In the t → ∞Script error: No such module "Check for unknown parameters". limit of the SIR model, the proportion of susceptible and recovered individuals has a solution in terms of the Lambert Template:Mvar function.[50]

Determination of the time of flight of a projectile

The total time of the journey of a projectile which experiences air resistance proportional to its velocity can be determined in exact form by using the Lambert WScript error: No such module "Check for unknown parameters". function.[51]

Electromagnetic surface wave propagation

The transcendental equation that appears in the determination of the propagation wave number of an electromagnetic axially symmetric surface wave (a low-attenuation single TM01 mode) propagating in a cylindrical metallic wire gives rise to an equation like u ln u = vScript error: No such module "Check for unknown parameters". (where Template:Mvar and Template:Mvar clump together the geometrical and physical factors of the problem), which is solved by the Lambert Template:Mvar function. The first solution to this problem, due to Sommerfeld circa 1898, already contained an iterative method to determine the value of the Lambert Template:Mvar function.[52]

Orthogonal trajectories of real ellipses

The family of ellipses x2+(1ε2)y2=ε2 centered at (0,0) is parameterized by eccentricity ε. The orthogonal trajectories of this family are given by the differential equation (1y+y)dy=(1xx)dx whose general solution is the family y2=W0(x2exp(2Cx2)).

Generalizations

The standard Lambert Template:Mvar function expresses exact solutions to transcendental algebraic equations (in Template:Mvar) of the form: Template:NumBlk where a0Script error: No such module "Check for unknown parameters"., Template:Mvar and Template:Mvar are real constants. The solution is x=r+1cW(cecra0). Generalizations of the Lambert Template:Mvar function[53][54][55] include:

  • An application to general relativity and quantum mechanics (quantum gravity) in lower dimensions, in fact a link (unknown prior to 2007[56]) between these two areas, where the right-hand side of (1) is replaced by a quadratic polynomial in xScript error: No such module "Check for unknown parameters".: Template:NumBlk where r1Script error: No such module "Check for unknown parameters". and r2Script error: No such module "Check for unknown parameters". are real distinct constants, the roots of the quadratic polynomial. Here, the solution is a function which has a single argument Template:Mvar but the terms like riScript error: No such module "Check for unknown parameters". and a0Script error: No such module "Check for unknown parameters". are parameters of that function. In this respect, the generalization resembles the hypergeometric function and the [[Meijer G-function|Meijer Template:Mvar function]] but it belongs to a different class of functions. When r1 = r2Script error: No such module "Check for unknown parameters"., both sides of (2) can be factored and reduced to (1) and thus the solution reduces to that of the standard Template:Mvar function. Equation (2) expresses the equation governing the dilaton field, from which is derived the metric of the R = TScript error: No such module "Check for unknown parameters". or lineal two-body gravity problem in 1 + 1 dimensions (one spatial dimension and one time dimension) for the case of unequal rest masses, as well as the eigenenergies of the quantum-mechanical double-well Dirac delta function model for unequal charges in one dimension.
  • Analytical solutions of the eigenenergies of a special case of the quantum mechanical three-body problem, namely the (three-dimensional) hydrogen molecule-ion.[57] Here the right-hand side of (1) is replaced by a ratio of infinite order polynomials in Template:Mvar: Template:NumBlk where riScript error: No such module "Check for unknown parameters". and siScript error: No such module "Check for unknown parameters". are distinct real constants and Template:Mvar is a function of the eigenenergy and the internuclear distance Template:Mvar. Equation (3) with its specialized cases expressed in (1) and (2) is related to a large class of delay differential equations. G. H. Hardy's notion of a "false derivative" provides exact multiple roots to special cases of (3).[58]

Applications of the Lambert Template:Mvar function in fundamental physical problems are not exhausted even for the standard case expressed in (1) as seen recently in the area of atomic, molecular, and optical physics.[59]

Plots

Numerical evaluation

The Template:Mvar function may be approximated using Newton's method, with successive approximations to w = W(z)Script error: No such module "Check for unknown parameters". (so z = wewScript error: No such module "Check for unknown parameters".) being

wj+1=wjwjewjzwjewj+ewj.

Faster convergence may be obtained using Halley's method,

wj+1=wjwjewjzwjewj+ewj(wj+2)(wjewjz)2wj+2

given in Corless et al.[4] Because the computation time is dominated by the exponential function, this is only slightly more expensive than Newton's method.

For real x1/e, it may be approximated by the quadratic-rate recursive formula of R. Iacono and J.P. Boyd:[12]

wn+1(x)=wn(x)1+wn(x)(1+log(xwn(x))).

Lajos Lóczi proves[60] that by using this iteration with an appropriate starting value w0(x),

  • For the principal branch W0:
    • if x(e,): w0(x)=log(x)log(log(x)),
    • if x(0,e): w0(x)=x/e,
    • if x(1/e,0): w0(x)=exlog(1+1+ex)1+ex+1+ex,
  • For the branch W1:
    • if x(1/4,0): w0(x)=log(x)log(log(x)),
    • if x(1/e,1/4]: w0(x)=121+ex,

one can determine the maximum number of iteration steps in advance for any precision:

  • if x(e,) (Theorem 2.4): 0<W0(x)wn(x)<(log(1+1/e))2n,
  • if x(0,e) (Theorem 2.9): 0<W0(x)wn(x)<(11/e)2n15,
  • if x(1/e,0):
    • for the principal branch W0 (Theorem 2.17): 0<wn(x)W0(x)<(1/10)2n,
    • for the branch W1(Theorem 2.23): 0<W1(x)wn(x)<(1/2)2n.


Toshio Fukushima has presented a fast method for approximating the real valued parts of the principal and secondary branches of the Template:Mvar function without using any iteration.[61] In this method the Template:Mvar function is evaluated as a conditional switch of minimax rational functions on transformed variables: W0(z)={Xk(x),(zk1z<zk,k=1,2,,17),Uk(u),(zk1z<zk,k=18,19), W1(z)={Yk(y),(zk1z<zk,k=1,2,,7),Vk(v),(zk1z<zk,k=8,9,10), where Template:Mvar, Template:Mvar, Template:Mvar, and Template:Mvar are transformations of Template:Mvar:

u=lnz,v=ln(z),x=z+1/e,y=z/(x+1/e).

Here Uk(u), Vk(v), Xk(x), and Yk(y) are rational functions whose coefficients for different Template:Mvar-values are listed in the referenced paper together with the zk values that determine their subdomains. With higher degree polynomials in these rational functions the method can approximate the Template:Mvar function more accurately.

For example, when 1/ez2.0082178115844727, W0(z) can be approximated to 24 bits of accuracy on 64-bit floating point values as W0(z)X1(x)=i4Pixii3Qixi where Template:Mvar is defined with the transformation above and the coefficients Pi and Qi are given in the table below.

Coefficients for the X1 subfunction
i Pi Qi
0 Script error: No such module "val". 1
1 Script error: No such module "val". Script error: No such module "val".
2 Script error: No such module "val". Script error: No such module "val".
3 Script error: No such module "val". Script error: No such module "val".
4 Script error: No such module "val". 0

Fukushima also offers an approximation with 50 bits of accuracy on 64-bit floats that uses 8th- and 7th-degree polynomials.

Software

The Lambert Template:Mvar function is implemented in many programming languages. Some of them are listed below:

Language Function name Required library
C/C++ gsl_sf_lambert_W0 and gsl_sf_lambert_Wm1 Special functions section of the GNU Scientific Library (GSL)[62]
lambert_w0, lambert_wm1, lambert_w0_prime, and lambert_wm1_prime Boost C++ libraries[63]
LambertW LambertW-function[64]
GP lambertw
Julia lambertw LambertW[65]
Maple LambertW[66]
Mathematica ProductLog (with LambertW as a silent alias)[67]
Matlab lambertw[68]
Maxima lambert_w[69]
Octave lambertw specfun[70]
PARI glambertW, lambertWC, glambertW_i, mplambertW, lambertW
Perl LambertW ntheory[71]
Python lambertw scipy[72]
R lambertW0 and lambertWm1 lamW[73]
Rust lambert_w, lambert_w0 and lambert_wm1 lambert_w[74]

See also

Notes

<templatestyles src="Reflist/styles.css" />

  1. Script error: No such module "citation/CS1".
  2. Script error: No such module "citation/CS1".
  3. Script error: No such module "citation/CS1"..
  4. a b c d e Script error: No such module "Citation/CS1".
  5. Lambert J. H., "Observationes variae in mathesin puram", Acta Helveticae physico-mathematico-anatomico-botanico-medica, Band III, 128–168, 1758.
  6. Euler, L. "De serie Lambertina Plurimisque eius insignibus proprietatibus". Acta Acad. Scient. Petropol. 2, 29–51, 1783. Reprinted in Euler, L. Opera Omnia, Series Prima, Vol. 6: Commentationes Algebraicae. Leipzig, Germany: Teubner, pp. 350–369, 1921.
  7. Script error: No such module "Citation/CS1".
  8. Script error: No such module "Citation/CS1".
  9. Script error: No such module "citation/CS1".
  10. Script error: No such module "Citation/CS1".
  11. a b A. Hoorfar, M. Hassani, Inequalities on the Lambert W Function and Hyperpower Function, JIPAM, Theorem 2.7, page 7, volume 9, issue 2, article 51. 2008.
  12. a b Script error: No such module "Citation/CS1".
  13. Script error: No such module "Citation/CS1".
  14. Script error: No such module "citation/CS1".
  15. Script error: No such module "citation/CS1".
  16. https://isa-afp.org/entries/Lambert_W.html Note: although one of the assumptions of the relevant lemma states that x must be > 1/e, inspection of said lemma reveals that this assumption is unused. The lower bound is in fact x > 0. The reason for the branch switch at e is simple: for x > 1 there are always two solutions, −ln x and another one that you'd get from the x on the other side of e that would feed the same value to W; these must crossover at x = e: [1] Wn cannot distinguish a value of ln x/x from an x < e from the same value from the other x > e, so it cannot flip the order of its return values.
  17. Script error: No such module "citation/CS1".
  18. Script error: No such module "Citation/CS1". See Theorem 3.4, p. 821 of published version (p. 5 of preprint).
  19. Script error: No such module "citation/CS1".
  20. Script error: No such module "citation/CS1".
  21. Script error: No such module "citation/CS1".
  22. Script error: No such module "citation/CS1".
  23. Script error: No such module "Citation/CS1".
  24. Script error: No such module "Citation/CS1".
  25. Script error: No such module "Citation/CS1".
  26. Script error: No such module "Citation/CS1".
  27. Script error: No such module "Citation/CS1".
  28. Script error: No such module "Citation/CS1".
  29. Script error: No such module "Citation/CS1". https://doi.org/10.1016/j.jcrysgro.2014.03.028
  30. Script error: No such module "Citation/CS1". https://doi.org/10.1016/j.jcrysgro.2024.127605
  31. Script error: No such module "Citation/CS1".
  32. Script error: No such module "Citation/CS1".
  33. Script error: No such module "Citation/CS1".
  34. Script error: No such module "Citation/CS1".
  35. Script error: No such module "Citation/CS1".
  36. Script error: No such module "Citation/CS1".([2])
  37. D. J. Jeffrey and J. E. Jankowski, "Branch differences and Lambert W"
  38. Script error: No such module "Citation/CS1".
  39. F. Nielsen, "Jeffreys Centroids: A Closed-Form Expression for Positive Histograms and a Guaranteed Tight Approximation for Frequency Histograms"
  40. https://arxiv.org/abs/2005.03051 J. Batson et al., "A COMPARISON OF GROUP TESTING ARCHITECTURES FOR COVID-19 TESTING".
  41. A.Z. Broder, "A Note on Double Pooling Tests".
  42. Script error: No such module "Citation/CS1".
  43. A.M. Ishkhanyan, "The Lambert W barrier – an exactly solvable confluent hypergeometric potential".
  44. a b Script error: No such module "Citation/CS1".
  45. Script error: No such module "Citation/CS1".
  46. Script error: No such module "Citation/CS1".
  47. Script error: No such module "Citation/CS1".
  48. Script error: No such module "Citation/CS1".
  49. Script error: No such module "Citation/CS1".
  50. Script error: No such module "citation/CS1".
  51. Script error: No such module "Citation/CS1".
  52. Script error: No such module "Citation/CS1".
  53. Script error: No such module "Citation/CS1".
  54. Script error: No such module "Citation/CS1".
  55. Script error: No such module "Citation/CS1".
  56. Script error: No such module "Citation/CS1".
  57. Script error: No such module "Citation/CS1".
  58. Script error: No such module "Citation/CS1".
  59. Script error: No such module "Citation/CS1".
  60. Script error: No such module "Citation/CS1".
  61. Script error: No such module "Citation/CS1". Preprint available at Script error: No such module "citation/CS1".
  62. Script error: No such module "citation/CS1".
  63. Script error: No such module "citation/CS1".
  64. Script error: No such module "citation/CS1".
  65. Script error: No such module "citation/CS1".
  66. Script error: No such module "citation/CS1".
  67. ProductLog - Wolfram Language Reference
  68. lambertw – MATLAB
  69. Maxima, a Computer Algebra System
  70. Script error: No such module "citation/CS1".
  71. ntheory - MetaCPAN
  72. Script error: No such module "citation/CS1".
  73. Script error: No such module "citation/CS1".
  74. Script error: No such module "citation/CS1".

Script error: No such module "Check for unknown parameters".

References

  • Script error: No such module "Citation/CS1".
  • Script error: No such module "Citation/CS1".
  • Script error: No such module "Citation/CS1". (Lambert function is used to solve delay-differential dynamics in human disease.)
  • Script error: No such module "Citation/CS1".
  • Template:Dlmf
  • Script error: No such module "Citation/CS1".
  • Veberic, D., "Having Fun with Lambert W(x) Function" arXiv:1003.1628 (2010); Script error: No such module "Citation/CS1".
  • Script error: No such module "Citation/CS1".

External links

Template:Sister project