Progulki-po-reke-moskwa.ru

прогулки на теплоходе по Москве реке

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

17-04-2023

-функция Ламберта определяется как обратная функция к , для комплексных . Обозначается или . Для любого комплексного она определяется функциональным уравнением:

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

Содержание

История

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

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

График W0(x) для −1/ex ≤ 4

Поскольку функция не является инъективной на интервале , является многозначной функцией на . Если ограничиться вещественными и потребовать , будет определена однозначная функция .

Асимптотики

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

Свойства

С помощью дифференцирования неявной функции можно получить, что при функция Ламберта удовлетворяет следующему дифференциальному уравнению

С помощью теоремы об обращении рядов можно получить выражение для ряда Тейлора; он в окрестности нуля сходится при :

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

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

(постоянная Омега)

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

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

Пример:

, следовательно, .

Пример:

Обозначим , тогда , отсюда и окончательно .

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

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

где a0, c и r являются вещественными константами. Решением такого уравнения является . Ниже перечислены некоторые из обобщенных применений W-функции[2] Ламберта:

и где константы r1 и r2, являются корнями этого квадратичного многочлена. В данном случае решением этого уравнения является функция с аргументом x , а ri и ao являются параметрами этой функции. С этой точки зрения, несмотря на то, что данное обобщенное применение W-функции Ламберта напоминает гипергеометрическую функцию и функцию “Meijer G", оно принадлежит к другому типу функций. Когда r1 = r2, то обе стороны уравнения (2) могут быть упрощены к уравнению (1), и таким образом общее решение упрощается к стандартной W-функцией. Уравнение (2) показывает определяющие отношения в скалярном поле дилатонноя, из чего следует решение задачи измерения линейной гравитации парных тел в 1+1 измерениях (измерение пространства и измерение времени) в случае неравных масс, а также решение задачи двумерного стационарного уравнения Шрёдингера с потенциалом в виде дельта-функции Дирака для неодинаковых зарядов в одном измерении.
  • Эта функция может быть использована для решения частной задачи внутренних энергий квантовой механики, состоящей в определении относительного движения трёх тел, а именно трёхмерной молекулы водорода[4]. В этом случае, правая сторона уравнения (1) (или (2)) теперь становится отношением двух беспредельных многочленов по переменной x:
где ri и si константы, а x является функцией между внутренней энергией и расстоянием внутри ядра R. Уравнение (3), а также его упрощённые формы, выраженные в уравнениях (1) и (2), относятся к типу дифференциальных уравнений с запозданием.

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

Вычисление

-функция может быть приблизительно вычислена с помощью рекуррентного соотношения[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

Для приближённого вычисления можно использовать формулу[6]: !!!Приведенная функция похожа, но более чем на 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. ↑ Corless et al. "On the Lambert W function" Adv. Computational Maths. 5, 329 - 359 (1996) (PostScript)
  2. [1]; Arxiv article [2]
  3. [3]; Arxiv article [4]
  4. [5]; Arxiv article [6]
  5. [7]
  6. Double precision function LAMBERTW(X) в пакете QCDINS

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

© 2021–2023 progulki-po-reke-moskwa.ru, Россия, Нальчик, ул. Терская 11, +7 (8662) 65-82-84