- Функция Ламберта
-
W-функция Ламберта определяется как обратная функция к f(w) = wew, для комплексных w. Обозначается W(x) или . Для любого комплексного z она определяется функциональным уравнением:
- z = W(z)eW(z)
W-функция Ламберта не может быть выражена в элементарных функциях. Она применяется в комбинаторике, например, при подсчёте числа деревьев, а также при решении уравнений.
Содержание
История
Функция изучалась ещё в работе Леонарда Эйлера в 1779, но не имела самостоятельного значения и названия вплоть до 1980-х. Как самостоятельная функция была введена в системе компьютерной алгебры LambertW. Имя Иоганна Генриха Ламберта было выбрано, поскольку Эйлер ссылался в своей работе на труды Ламберта, и поскольку «называть ещё одну функцию именем Эйлера было бы бесполезно»[1]
Многозначность
Поскольку функция f(w) не является инъективной на интервале , W(z) является многозначной функцией на [ − 1 / e,0). Если ограничиться вещественными и потребовать , будет определена однозначная функция W0(x).
Свойства
С помощью дифференцирования неявной функции можно получить, что при функция Ламберта удовлетворяет следующему дифференциальному уравнению
С помощью теоремы об обращении рядов можно получить выражение для ряда Тейлора; он в окрестности нуля сходится при | z | < 1 / e:
С помощью интегрирования по частям можно найти интеграл от W(z):
Значение в некоторых точках
- (постоянная Омега)
Решение уравнений с помощью W-функции
Решения многих трансцендентных уравнений могут быть выражены в форме W-функции.
Пример: xx = z
- , следовательно, x = eW(lnz).
Пример: 2x = 5x
Обозначим y = − xln2, тогда , отсюда и окончательно .
Вычисление
W-функция может быть приблизительно вычислена с помощью рекуррентного соотношения[1]:
Пример программы на языке Python:
import math class Error(Exception): pass def lambertW(x, prec=1e-12): w = 0 for i in xrange(100): wTimesExpW = w*math.exp(w) wPlusOneTimesExpW = (w+1)*math.exp(w) if prec>abs((x-wTimesExpW)/wPlusOneTimesExpW): break w = w-(wTimesExpW-x)/(wPlusOneTimesExpW-(w+2)*(wTimesExpW-x)/(2*w+2)) else: raise Error, "W(x) не сходится достаточно быстро при x=%f"%x return w
Для приближённого вычисления можно использовать формулу[2]:
Ссылки
Wikimedia Foundation. 2010.