Реализация функции Ламберта W в Java - PullRequest
8 голосов
/ 22 июля 2011

Я работаю над проектом и попал в ситуацию, когда мне нужна функция, чтобы получить хотя бы приблизительное значение W (x), функция Ламберта W где х может быть любым действительным числом. Я работаю на Java. Я не мог найти какие-либо реализации W в Java, когда я искал. Я готов сам при необходимости написать код для реализации, но я не уверен, как это будет сделано прямо сейчас. Любые толчки в правильном направлении будут высоко оценены.

Ответы [ 2 ]

6 голосов
/ 22 июля 2011

Взгляните на эту страницу: http://mathworld.wolfram.com/LambertW-Function.html

В ней приведены аппроксимация для z>3, а также последовательное расширение для функции.

Вы также можете использовать метод Ньютона иМетод Галлея для аппроксимации функции: http://en.wikipedia.org/wiki/Lambert_W_function#Numerical_evaluation

3 голосов
/ 22 июля 2011

Функция Ламберта является обратной функцией g(w) = w*exp(w), которую она проверяет:

W(z)eW(z) = z.

Хороший способ оценить W (z) для заданного z - использовать метод Ньютона Рафсона :

решить: f(Y)= Yexp(Y) - z = 0.

вы найдете Y = W(z) по методу

Вы должны найти и внедрить в java метод самостоятельно.

Надеюсь, это поможет

ниже иллюстрации из википедии метода:

enter image description here

...