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

Эта статья находится на начальном уровне проработки, в одной из её версий выборочно используется текст из источника, распространяемого под свободной лицензией
Материал из энциклопедии Руниверсалис

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

[math]\displaystyle{ z=W(z) e^{W(z)} }[/math]

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

История

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

Многозначность

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

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

Асимптотики

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

[math]\displaystyle{ \left.W(z)\right|_{z \to \infty} = \log(z)-\log( \log(z) ) }[/math]

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

Другие формулы

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

Свойства

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

[math]\displaystyle{ {dW\over dz} = \frac{1}{z} \frac{W(z)}{W(z)+1}. }[/math]

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

[math]\displaystyle{ 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. }[/math]

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

[math]\displaystyle{ \int W(x)\, dx = x \left( W(x) - 1 + \frac{1}{W(x)} \right) + C. }[/math]

Значения в некоторых точках

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

Формулы

[math]\displaystyle{ W(xe^x)=x, \,x\gt 0 }[/math]

[math]\displaystyle{ e^{n\cdot W(x)}=\left(\frac{x}{W(x)}\right)^n }[/math]

[math]\displaystyle{ \ln W(x)=\ln x-W(x), \, x\gt 0 }[/math]

[math]\displaystyle{ W\left(\frac{nx^n}{W(x)^{n-1}}\right)=nW(x) ,\, n\gt 0,x\gt 0 }[/math]

[math]\displaystyle{ W(x)+W(y)=W\left(xy\left(\frac{W(x)+W(y)}{W(x)W(y)}\right)\right),\, x\gt 0,y\gt 0 }[/math]

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

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

Пример: [math]\displaystyle{ x^x=z }[/math]

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

Пример: [math]\displaystyle{ 2^x=5 x }[/math]

[math]\displaystyle{ 1 = 5 x\cdot 2^{-x} = 5 x\, e^{-x\ln 2} }[/math]

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

Обобщенные применения W-Функции Ламберта

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

[math]\displaystyle{ e^{-c x} = a_o (x-r) ~~\quad\qquad\qquad\qquad\qquad(1) }[/math]

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

[math]\displaystyle{ e^{-c x} = a_o (x-r_1 ) (x-r_2 ) ~~\qquad\qquad(2) }[/math]
и где константы r1 и r2, являются корнями этого квадратичного многочлена. В данном случае решением этого уравнения является функция с аргументом x , а ri и ao являются параметрами этой функции. С этой точки зрения, несмотря на то, что данное обобщенное применение W-функции Ламберта напоминает гипергеометрическую функцию и функцию «Meijer G», оно принадлежит к другому типу функций. Когда r1 = r2, то обе стороны уравнения (2) могут быть упрощены к уравнению (1), и таким образом общее решение упрощается к стандартной W-функцией. Уравнение (2) показывает определяющие отношения в скалярном поле дилатонноя, из чего следует решение задачи измерения линейной гравитации парных тел в 1+1 измерениях (измерение пространства и измерение времени) в случае неравных масс, а также решение задачи двумерного стационарного уравнения Шрёдингера с потенциалом в виде дельта-функции Дирака для неодинаковых зарядов в одном измерении.
  • Эта функция может быть использована для решения частной задачи внутренних энергий квантовой механики, состоящей в определении относительного движения трёх тел, а именно трёхмерной молекулярный ион водорода[6][7]. В этом случае правая сторона уравнения (1) (или (2)) теперь становится отношением двух беспредельных многочленов по переменной x:
[math]\displaystyle{ 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) }[/math]
где ri и si константы, а x является функцией между внутренней энергией и расстоянием внутри ядра R. Уравнение (3), а также его упрощённые формы, выраженные в уравнениях (1) и (2), относятся к типу дифференциальных уравнений с запозданием.

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

Вычисление

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

[math]\displaystyle{ 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}} }[/math]

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

import math

def lambertW(x, prec=1e-12):
    w = 0
    for i in range(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

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

[math]\displaystyle{ W(x) \approx \left\{ \begin{matrix} 0{,}665\cdot (1+0{,}0195\ln(x+1))\ln(x+1) + 0{,}04 & \ :\ & 0\lt x\le500 \\ \ln(x-4) - (1-{1\over\ln x}) \ln\ln x & \ :\ & x\gt 500 \\ \end{matrix} \right. }[/math]

Ссылки

  1. 1,0 1,1 Corless et al. On the Lambert W function (неопр.) // Adv. Computational Maths.. — 1996. — Т. 5. — С. 329—359. Архивировано 18 января 2005 года.
  2. T. C. Scott, R. B. Mann. General Relativity and Quantum Mechanics: Towards a Generalization of the Lambert W Function (англ.) // AAECC (Applicable Algebra in Engineering, Communication and Computing) : journal. — 2006. — Vol. 17, no. 1. — P. 41—47. — doi:10.1007/s00200-006-0196-1.
  3. T. C. Scott, G. Fee, J. Grotendorst. Asymptotic series of Generalized Lambert W Function (англ.) // SIGSAM (ACM Special Interest Group in Symbolic and Algebraic Manipulation) : journal. — 2013. — Vol. 47, no. 185. — P. 75—83.
  4. T. C. Scott, G. Fee, J. Grotendorst, W.Z. Zhang. Numerics of the Generalized Lambert W Function (неопр.) // SIGSAM. — 2014. — Т. 48, № 1/2. — С. 42—56.
  5. P. S. Farrugia, R. B. Mann, T. C. Scott. N-body Gravity and the Schrödinger Equation (англ.) // Classical and Quantum Gravity : journal. — 2007. — Vol. 24, no. 18. — P. 4647—4659. — doi:10.1088/0264-9381/24/18/006.
  6. T. C. Scott, M. Aubert-Frécon, J. Grotendorst. New Approach for the Electronic Energies of the Hydrogen Molecular Ion (англ.) // Chem. Phys.  (англ.) : journal. — 2006. — Vol. 324. — P. 323—338. — doi:10.1016/j.chemphys.2005.10.031.
  7. Maignan, Aude; Scott, T. C. Fleshing out the Generalized Lambert W Function (неопр.) // SIGSAM. — 2016. — Т. 50, № 2. — С. 45—60. — doi:10.1145/2992274.2992275.
  8. T. C. Scott, A. Lüchow, D. Bressanini, J. D. Morgan III. The Nodal Surfaces of Helium Atom Eigenfunctions (англ.) // Phys. Rev. A : journal. — 2007. — Vol. 75. — P. 060101. — doi:10.1103/PhysRevA.75.060101.
  9. Double precision function LAMBERTW(X) Архивная копия от 2 сентября 2005 на Wayback Machine в пакете QCDINS Архивная копия от 4 апреля 2005 на Wayback Machine