Լամբերտի W ֆունկցիա

**Լամբերտի** **<math>W</math> ֆունկցիան** բոլոր w կոմպլեքս թվերի համար սահմանված f(w)=w e^w ֆունկցիայի հակադարձ ֆունկցիան է։ Նշանակվում է հետևյալ երկու ձևերից մեկով․ W(x) կամ \operatorname{LambertW}(x)։ Ցանկացած z կոմպլեքս թվերի համար սահմանվում է ֆունկցիոնալ հավասարման միջոցով․
: z=W(z e^{z})

Լամբերտի W ֆունկցիան չի կարող արտահայտվել տարրական ֆունկցիաների միջոցով։ Այս ֆունկցիան կիրառվում է կոմբինատորիկայում, ինչպես օրինակ ծառերի քանակի հաշվման կամ հավասարումներ լուծելու ժամանակ։

## Պատմություն
1779 թվականին ֆունկցիան ուսումնասիրվել է Լեոնարդ Էյլերի կողմից, սակայն տևական ժամանակ որևէ անվանում չի ստացել։ Հետագայում անվանվել է Յոհան Լամբերտի անունով։

## Բազմիմաստություն
thumb|<math>W(x)</math> ֆունկցիայի <math>W_0</math> (կապույտ) հիմնական և <math>W_{-1}</math> (մանուշակագույն)  լրացուցիչ ճյուղերը
thumb|288px|right|''W''<sub>0</sub>(''x'') ֆունկցիայի գրաֆիկը −1/''e'' ≤ ''x'' ≤ 4 միջակայքում
f(w) ֆունկցիան (-\infty,0) միջակայքում ինյեկտիվ չի համարվում փոխարենը (-\frac{1}{e},0) միջակայքում համարվում է բազմարժեք ֆունկցիա։
* Եթե սահմանափակվենք z = x\geqslant-1/e անհավասարությունով և օգտվենք w\geqslant -1 պայմանից, ապա կվորոշվի W_0(x) միարժեք ֆունկցիան, որը W(x) ֆունկցիայի հիմնական ճյուղն է:
* Եթե սահմանափակվենք z = x\geqslant-1/e և z = x  անհավասարություններով և օգտվենք w\leqslant -1 պայմանից, ապա կորոշվի W_{-1}(x) միարժեք ֆունկցիան, որը համարվում է W(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}.

Շարքերի հակադարձման թեորեմի շնորհիվ կարելի է արտահայտություն ստանալ Թեյլորի շարքերի համար․ 
: 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.
Մասերով ինտեգրելու դեպքում կստանանք հետևյալը․
: \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.33723i
: W\left(-{1\over e}\right) = -1
: W\left(-\frac{\ln a}{a}\right)= -\ln a,  \frac{1}{e}\le a\le e
: W(0) = 0
: W(e) = 1
: W(1) = \Omega \approx 0{,}56714329 (հիմնական Օմեգա)

### Բանաձևեր
W(xe^x)=x, \,x>0

W_0(xe^x)=x, \,x\geqslant-1

W_{-1}(xe^x)=x, \,x\leqslant-1

e^{n\cdot W(x)}=\left(\frac{x}{W(x)}\right)^n

\ln W(x)=\ln x-W(x), \, x>0

W\left(\frac{nx^n}{W(x)^{n-1}}\right)=nW(x) ,\, n>0,x>0

W(x)+W(y)=W\left(xy\left(\frac{W(x)+W(y)}{W(x)W(y)}\right)\right),\, x>0,y>0

## Հավասարումների լուծումը ''W'' ֆունկցիայի միջոցով
Ոչ հանրահաշվական մի շարք հավասարումների լուծումները կարող են արտահայտվել W ֆունկցիայի տեքով։

**Օրինակ 1:** x\cdot a^x = b

: x\ln a \cdot e^{x\ln a} = b\ln a, հետևաբար, x\ln a = W(b\ln a), որտեղից x = {W(b\ln a)\over\ln a}.

**Օրինակ 2:** x^x = a

: x \cdot \ln x = \ln a, հետևաբար, {\ln a \over x}= W(\ln a), որտեղից x = {\ln a \over W(\ln a)}.

**Օրինակ 3:** a^x = b x

: {1\over b} = x a^{-x}, тогда -{\ln a\over b} = -x\ln a \cdot e^{-x\ln a}, հետևաբար, W\left(-{\ln a\over b}\right) = -x\ln a, որտեղից x=-{1\over\ln a}W\left(-{\ln a\over b}\right).

## Ստացումը
W ֆունկցիան հնարավոր է մոտավորապես հաշվվել ռեկուրենտ հարաբերության շնորհիվ․

: 
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 լեզվով գրված ծրագրի օրինակ․

```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
```

Մոտավոր հաշվարկման համար նպատակահարմար է օգտագործել հետևյալ բանաձևը․


W(x) \approx \left\{
\begin{matrix}
0{,}665\cdot (1+0{,}0195\ln(x+1))\ln(x+1) + 0{,}04 & \ :\  & 0500     \\
\end{matrix}
\right.


Ստացված ֆունկցիան, չնայած որ նման է W ֆունկցիային, սակայն տարբերվում է նրանից 10%-ով։

## Ծանոթագրություններ