ランベルトのW関数

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

ランベルトのW関数(ランベルトのだぶりゅーかんすう、Lambert's W function) とは、次の関数逆関数である。

1ex ≤ 4 における W0(x) のグラフ。

f(w) = w e^w\,

ただし、ew指数関数w は任意の複素数である。

概要[編集]

「ランベルトのW関数」という名前は、ヨハン・ハインリッヒ・ランベルト にちなんで名づけられた。また、オメガ関数(―かんすう、Omega function)、対数積(たいすうせき、product log) という呼び名もある。

ランベルトのW関数は、通常 W(z) と表記される。ここで、任意の複素数 z に対して、次式が成立する。

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

関数 f は (−∞, 0) において単射ではないため、関数 W は [-1e, 0) で多価となる。もし、定義域実数 x ≥ −1e値域w ≥ − 1 に制限するとすれば (これを分岐 (branch cut, en) と呼ぶ)、グラフで示した一価の関数 W0(x) が定義される。特に、W0(0)=0, W0(−1e)=−1 である。

ランベルトのW関数は、初等関数では表現できない。これは、の数え上げなどの、組合せ論の分野において有用である。また、これは、指数関数を含む様々な方程式を解くのに使われたり、y′(t) = ay(t−1) のような遅延微分方程式(time-delayed differential equations) の解に現れたりする。

陰関数微分公式によって、W を次のような微分方程式を満たすものとして表示できる。

z(1+W)\frac{dW}{dz}=W\quad\mathrm{for\ }z\neq -1/e

W0 の 0 近傍におけるテイラー級数は、ラグランジュの逆転の定理 (en) を用いると求めることができ、次式で与えられる。


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

ダランベールの収束判定法によると、収束半径1e である。この級数によって定義された関数は、定義域が複素数全体で、分岐区間 (−∞, 1e] に持つ正則関数に拡張することができる。この関数は、ランベルトのW関数の主値として定義される。

方程式の求解への応用[編集]

指数関数を含む方程式の多くは、W関数を用いることで解くことができる。主な方針は、未知数を含む項を方程式の左辺(あるいは右辺)に寄せ、W関数で解を表現できる x ex の形にすることである。例えば、方程式 2^t = 5t を解くには、両辺を 2t で割り、1=5 te(−ln(2) t) と変形する。そして両辺を 5 で割り、−ln(2) を掛ける。すると、−ln(2)5 = −ln(2) t e(−ln(2) t) となる。ここで、W関数を用いれば、−ln(2) t = W(−ln(2)5)、即ち t = −W(-ln(2)5)/ln(2) となる。

同様の方法で、xx = z の解は、

x=\frac{\ln(z)}{W(\ln(z))}

あるいは

x=exp(W(ln(z)))

となる。

複素数の無限回の累乗

z^{z^{z^{\cdots}}} \!

が収束するとき、ランベルトのW関数を用いれば、その極限値を次のように表現できる。

c=\frac{W(-\log(z))}{-\log(z)}

ただし、log(z) は複素対数関数主値とする。

関数 W(x)、あるいは W(x) を使って表現される関数の積分は、多くの場合 w=W(x) (即ち、x=we^w) と置換することで解ける。


\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\left(-{1\over e}\right) = -1

W\left(-\frac{\ln 2}{2}\right)= -\ln 2

W(0) = 0\,

W(e) = 1\,

W(1) = \Omega\,オメガ定数

一般化[編集]

標準的なLambert W関数は以下のように超越代数方程式の解を表すことができる。

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

     そのうち、a0, c と r は定数である。 その解は Lambert W関数の一般化[1][2][3]は以下の状況がある。

  • 低次元空間における一般相対性理論量子力学 (量子重力理論) の応用は実にこれまで違ったようにこの2領域に繋がっている。例えば、”Journal of Classical and Quantum Gravity”[4]で示しているように、(1)のイコールの右にある部分は二次元多項式 ’’x’’で、
 e^{-c x} = a_o (x-r_1 ) (x-r_2 ) ~~\qquad\qquad(2)
となる。そのうち、 r1 と r2 は 別々の定数であって、二次元多項式の根でもある。関数の解には x という単一引数があったが、ri と ao は関数の媒介変数である。そうすれば、”hypergeometric”(超幾何級数)のような関数(超幾何分布)と”Meijer G”は異なった階層の関数に属している。r1 = r2 のようになると、(2)の両側の式を(1)に分解できる。したがって、その解を簡素化して標準的W関数にすることができる。(2)の式は”dilaton”(アクシオン) の方程式を表していて、そしてそれは一次元空間に不均質にチャージする為の量子力学におけるダブルウェールディラックによるデルタ関数モデルの固有エネルギーと同様に不均等な残りの総体の為に1+1 次元(一次元空間及び一次元時間)の中にある、R=Tか二体重力の問題の測定基準によって導き出された。
  • 量子力学のもう一つの特徴によって、三体、つまり(三次元)水素分子イオン[5] (1)(あるいは (2))の右の式は無限級数多項式対’’x’’:
 e^{-c x} = a_o \frac{\prod_{i=1}^{\infty} (x-r_i )}{ \prod_{i=1}^{\infty} (x-s_i)} \qquad \qquad\qquad(3)
そのうち、ri と si  は相違定数であるが、’’x’’ は固有エネルギーの作用であり、核心距離Rの関数である。(3)の式は(1) や(2)と違って、例のような遅延微分方程式である。

Lambert ‘’W’’関数は物理問題に基づいた応用であるが、検討が十分ではない。最近、例(1)のような標準的状況は原子やイオンや光学物理などの分野でよく見られる。[6]

数値計算[編集]

W関数は、漸化式


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

を用いることで数値計算することができる。この計算法は、コーレス(Corless) らによって与えられた。これを計算する Pythonコードを以下に示す。誤差の評価には、Chapeau-Belandeau と Monir によるものを用いている。

#!/usr/bin/env python2
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 doesn't converge fast enough for {}".format(x))
    return w

これは、x>1/e における主値を計算するものである。初期値の選び方次第で、性能を上げることができる。

以下に示す閉じた形の近似は、さほど精度を要求ない場合や、上のコードに少ない反復回数で優れた初期値を与える際に用いる。

double
desy_lambert_W(double x) {
      double  lx1;
      if (x <= 500.0) {
              lx1 = log(x + 1.0);
              return 0.665 * (1 + 0.0195 * lx1) * lx1 + 0.04;
      }
      return log(x - 4.0) - (1.0 - 1.0/log(x)) * log(log(x));
}

http://www.desy.de/~t00fri/qcdins/texhtml/lambertw/ より)

Mathematica には ProductLog という名前で実装されており、値を対話的な操作で計算したり、解析的な演算 (不定積分、微分など) をしたり、プロットしたりできる[7]。またフリーC言語ライブラリである GNU Scientific Library では gsl_sf_lambert_W0 という名前などで実装されている[8]

関連項目[編集]

脚注[編集]

  1. ^ Scott, T.C.; Mann, R.B.; Martinez Ii, Roberto E. (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. arXiv:math-ph/0607011. doi:10.1007/s00200-006-0196-1. 
  2. ^ Scott, T. C.; Fee, G.; Grotendorst, J. (2013). “Asymptotic series of Generalized Lambert W Function”. SIGSAM (ACM Special Interest Group in Symbolic and Algebraic Manipulation) 47 (185): 75–83. http://www.sigsam.org/cca/issues/issue185.html. 
  3. ^ Scott, T. C.; Fee, G.; Grotendorst, J.; Zhang, W.Z. (2014). “Numerics of the Generalized Lambert W Function”. SIGSAM 48 (188): 42–56. http://www.sigsam.org/cca/issues/issue188.html. 
  4. ^ P.S. Farrugia, R.B. Mann, and T.C. Scott, N-body Gravity and the Schrödinger Equation, Class. Quantum Grav. vol. 24, (2007), pp. 4647-4659, [1]; Arxiv [2]
  5. ^ T.C. Scott, M. Aubert-Frécon and J. Grotendorst, New Approach for the Electronic Energies of the Hydrogen Molecular Ion, Chem. Phys. vol. 324, (2006), pp. 323-338, [3]; Arxiv [4]
  6. ^ T.C. Scott, A. Lüchow, D. Bressanini and J.D. Morgan III, The Nodal Surfaces of Helium Atom Eigenfunctions, Phys. Rev. A 75, (2007), p. 060101, [5]
  7. ^ Wolfram research の解説ページ (英語)
  8. ^ GSL reference manual の Lambert W Functions の項 (英語)

参考文献・外部リンク[編集]