W-функция Ламберта

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

W-функция Ламберта определяется как обратная функция к f(w)=w e^w, для комплексных w. Обозначается W(x) или \operatorname{LambertW}(x). Для любого комплексного z она определяется функциональным уравнением:

z=W(z) e^{W(z)}

W-функция Ламберта не может быть выражена в элементарных функциях. Она применяется в комбинаторике, например, при подсчёте числа деревьев, а также при решении уравнений.

История[править | править вики-текст]

Функция изучалась ещё в работе Леонарда Эйлера в 1779 года, но не имела самостоятельного значения и названия вплоть до 1980-х годов. Как самостоятельная функция была введена в системе компьютерной алгебры Maple, где для неё использовалось имя LambertW. Имя Иоганна Генриха Ламберта было выбрано, поскольку Эйлер ссылался в своей работе на труды Ламберта, и поскольку «называть ещё одну функцию именем Эйлера было бы бесполезно»[1].

Многозначность[править | править вики-текст]

Две главные ветви функции W_0 и W_{-1}
График W0(x) для −1/ex ≤ 4

Поскольку функция f(w) не является инъективной на интервале (-\infty,0), W(z) является многозначной функцией на [-\frac{1}{e},0). Если ограничиться вещественными z = x\geqslant-1/e и потребовать w\geqslant -1, будет определена однозначная функция W_0(x).

Асимптотики[править | править вики-текст]

Полезно знать асимптотики функции при стремлении к некоторым ключевым точкам. Например, для ускорения сходимости при выполнении рекуррентных расчетов.

\left.W(z)\right|_{z \to \infty} = \log(z)-\log( \log(z) )

\left.W(z)\right|_{z \to -\frac{1}{e}} = \sqrt{ 2 ( ez + 1 ) }-1

Другие формулы[править | править вики-текст]

\int_{0}^{\pi} W\bigl( 2\cot^2(x) \bigr)\sec^2(x)\;\mathrm dx = 4\sqrt{\pi}
\int_{0}^{+\infty} W\left(\frac{1}{x^2}\right)\;\mathrm dx = \sqrt{2\pi}
\int_{0}^{+\infty} \frac{W(x)}{x\sqrt{x}}\mathrm dx = 2\sqrt{2\pi}

Свойства[править | править вики-текст]

С помощью дифференцирования неявной функции можно получить, что при z\ne -\tfrac{1}{e} функция Ламберта удовлетворяет следующему дифференциальному уравнению:

{dW\over dz} = \frac{1}{z} \frac{W(z)}{W(z)+1}.

С помощью теоремы об обращении рядов можно получить выражение для ряда Тейлора; он в окрестности нуля сходится при |z|<\tfrac{1}{e}:

W_0(x)=\sum_{n=1}^\infty \frac{(-n)^{n-1}}{n!}\ x^n = x - x^2 + \frac{3}{2}x^3 - \frac{8}{3}x^4 + \frac{125}{24}x^5 - \cdots.

С помощью интегрирования по частям можно найти интеграл от W(z):

\int W(x)\, dx = x \left( W(x) - 1 + \frac{1}{W(x)} \right) + C.

Значения в некоторых точках[править | править вики-текст]

W\left(-\frac{\pi}{2}\right) = \frac{i\pi}{2}
W(-1) \approx -0.31813-1.33723{\rm{i}}\,
W\left(-{1\over e}\right) = -1
W\left(-\frac{\ln a}{a}\right)= -\ln a \left(\frac{1}{e}\le a\le e\right)
W(0) = 0\,
W(e) = 1\,
W(1) = \Omega \approx 0{,}56714329\, (постоянная Омега)

Решение уравнений с помощью W-функции[править | править вики-текст]

Решения многих трансцендентных уравнений могут быть выражены в форме W-функции.

Пример: x^x=z

\ln z=x\ln x=e^{\ln x}\,\ln x, следовательно, x=e^{W(\ln z)}.

Пример: 2^x=5 x

1 = 5 x\cdot 2^{-x} = 5 x\, e^{-x\ln 2}

Обозначим y=-x\ln 2, тогда y\,e^y={-\ln 2\over 5}, отсюда y=W\left({-\ln 2\over 5}\right) и окончательно x=-{1\over\ln2}W\left({-\ln 2\over 5}\right).

Обобщенные применения W-Функции Ламберта[править | править вики-текст]

Стандартная W-функция Ламберта показывает точные решения трансцендентных алгебраических уравнений формы:

 e^{-c x} = a_o (x-r) ~~\quad\qquad\qquad\qquad\qquad(1)

где a0, c и r являются вещественными константами. Решением такого уравнения является  x = r + \frac{1}{c} W( \frac{c\,e^{-c r}}{a_o }). Ниже перечислены некоторые из обобщенных применений W-функции Ламберта:[2][3][4]

 e^{-c x} = a_o (x-r_1 ) (x-r_2 ) ~~\qquad\qquad(2)
и где константы r1 и r2, являются корнями этого квадратичного многочлена. В данном случае решением этого уравнения является функция с аргументом x , а ri и ao являются параметрами этой функции. С этой точки зрения, несмотря на то, что данное обобщенное применение W-функции Ламберта напоминает гипергеометрическую функцию и функцию “Meijer G", оно принадлежит к другому типу функций. Когда r1 = r2, то обе стороны уравнения (2) могут быть упрощены к уравнению (1), и таким образом общее решение упрощается к стандартной W-функцией. Уравнение (2) показывает определяющие отношения в скалярном поле дилатонноя, из чего следует решение задачи измерения линейной гравитации парных тел в 1+1 измерениях (измерение пространства и измерение времени) в случае неравных масс, а также решение задачи двумерного стационарного уравнения Шрёдингера с потенциалом в виде дельта-функции Дирака для неодинаковых зарядов в одном измерении.
  • Эта функция может быть использована для решения частной задачи внутренних энергий квантовой механики, состоящей в определении относительного движения трёх тел, а именно трёхмерной mолекулярный ион водорода[6]. В этом случае, правая сторона уравнения (1) (или (2)) теперь становится отношением двух беспредельных многочленов по переменной x:
 e^{-c x} = a_o \frac{\displaystyle \prod_{i=1}^{\infty} (x-r_i )}{\displaystyle \prod_{i=1}^{\infty} (x-s_i)} \qquad \qquad\qquad(3)
где ri и si константы, а x является функцией между внутренней энергией и расстоянием внутри ядра R. Уравнение (3), а также его упрощённые формы, выраженные в уравнениях (1) и (2), относятся к типу дифференциальных уравнений с запозданием.

Применения W-Функции Ламберта в основных проблемах физики не ограничиваются стандартным уравнением (1), как было недавно показано в областях атомной, молекулярной и оптической физики[7].

Вычисление[править | править вики-текст]

W-функция может быть приблизительно вычислена с помощью рекуррентного соотношения[1]:


w_{j+1}=w_j-\frac{w_j e^{w_j}-z}{e^{w_j}(w_j+1)-\frac{(w_j+2)(w_je^{w_j}-z)}
{2w_j+2}}

Пример программы на языке Python:

import math
 
def lambertW(x, prec=1e-12):
    w = 0
    for i in xrange(100):
        wTimesExpW = w*math.exp(w)
        wPlusOneTimesExpW = (w+1)*math.exp(w)
        w -= (wTimesExpW-x)/(wPlusOneTimesExpW-(w+2)*(wTimesExpW-x)/(2*w+2))
        if (prec > abs((x-wTimesExpW)/wPlusOneTimesExpW)):
            break
    if (prec <= abs((x-wTimesExpW)/wPlusOneTimesExpW)):
        raise Exception, "W(x) не сходится достаточно быстро при x=%f" % x
    return w

Для приближённого вычисления можно использовать формулу[8]: !!!Приведенная функция похожа, но более чем на 10% отличается от функции Ламберта


W(x) \approx \left\{
\begin{matrix}
0{,}665\cdot (1+0{,}0195\ln(x+1))\ln(x+1) + 0{,}04 & \ :\  & 0<x\le500 \\
\ln(x-4) - (1-{1\over\ln x}) \ln\ln x              & \ :\  & x>500     \\
\end{matrix}
\right.

Ссылки[править | править вики-текст]

  1. 1 2 Corless et al. (1996). «On the Lambert W function». Adv. Computational Maths. 5: 329-359.
  2. T. C. Scott, R. B. Mann (2006). «General Relativity and Quantum Mechanics: Towards a Generalization of the Lambert W Function». AAECC (Applicable Algebra in Engineering, Communication and Computing) 17 (1): 41–47. DOI:10.1007/s00200-006-0196-1.
  3. T. C. Scott, G. Fee, J. Grotendorst (2013). «Asymptotic series of Generalized Lambert W Function». SIGSAM (ACM Special Interest Group in Symbolic and Algebraic Manipulation) 47 (185): 75–83.
  4. T. C. Scott, G. Fee, J. Grotendorst, W.Z. Zhang (2014). «Numerics of the Generalized Lambert W Function». SIGSAM 48 (188): 42–56.
  5. P. S. Farrugia, R. B. Mann, T. C. Scott (2007). «N-body Gravity and the Schrödinger Equation». Class. Quantum Grav. 24 (18): 4647–4659. DOI:10.1088/0264-9381/24/18/006.
  6. T. C. Scott, M. Aubert-Frécon, J. Grotendorst (2006). «New Approach for the Electronic Energies of the Hydrogen Molecular Ion». Chem. Phys. 324: 323–338. DOI:10.1016/j.chemphys.2005.10.031.
  7. T. C. Scott, A. Lüchow, D. Bressanini, J. D. Morgan III (2007). «The Nodal Surfaces of Helium Atom Eigenfunctions». Phys. Rev. A 75: 060101. DOI:10.1103/PhysRevA.75.060101.
  8. Double precision function LAMBERTW(X) в пакете QCDINS