Lambert W function implementation in Java
I'm working on a pr开发者_高级运维oject and have found myself in a situation where I need a function to be able to get at least an approximation of the value of W(x), the Lambert W function, where x can be any real number. I'm working in Java. I couldn't find any implementations of W in java when I searched. I am willing to code up the implementation myself if need be, but I am unsure of how that would be done right now. Any pushes in the right direction would be much appreciated.
Take a look at this page: http://mathworld.wolfram.com/LambertW-Function.html
It lists an approximation for z>3
as well as a series expansion for the function.
You can also use Newton's method and Halley's method to approximate the function: http://en.wikipedia.org/wiki/Lambert_W_function#Numerical_evaluation
The lambert function is the reciprocal function of g(w) = w*exp(w)
it verifies:
W(z)eW(z) = z.
A good way to evaluate W(z) on a given z would be to use newton raphson method :
to solve : f(Y)= Yexp(Y) - z = 0.
you will find Y = W(z)
with the method
You would have to find and implementation in java of the method yourself.
Hope it helps
below an illustration from wikipedia of the method:
精彩评论