このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
lambertw
ランベルトの W 関数
説明
例
ランベルトの W 関数の方程式を解として返す
ランベルトの W 関数 W(x)
は、方程式 x = W(x)eW(x)
の解の集合です。
次の方程式を解きます。解はランベルトの W 関数です。
syms x W eqn = x == W*exp(W); solve(eqn,W)
ans = lambertw(0, x)
ランベルトの W 関数の分枝が方程式 x = W*eW
の有効解であることを確認します。
k = -2:2; eqn = subs(eqn,W,lambertw(k,x)); isAlways(eqn)
ans = 1×5 logical array 1 1 1 1 1
数値引数およびシンボリック引数に対するランベルトの W 関数
引数に応じて、lambertw
は浮動小数点解またはシンボリック厳密解の結果を返します。
次の数値についてランベルトの W 関数を計算します。これらの数値はシンボリック オブジェクトではないため、結果は浮動小数点数となります。
A = [0 -1/exp(1); pi i]; lambertw(A)
ans = 0.0000 + 0.0000i -1.0000 + 0.0000i 1.0737 + 0.0000i 0.3747 + 0.5764i
lambertw(-1,A)
ans = -Inf + 0.0000i -1.0000 + 0.0000i -0.3910 - 4.6281i -1.0896 - 2.7664i
シンボリック オブジェクトに変換された数値についてランベルトの W 関数を計算します。ほとんどのシンボリックな (厳密な) 数値について、lambertw
は未解決のシンボリックな呼び出しを返します。
A = [0 -1/exp(sym(1)); pi i]; W0 = lambertw(A)
W0 = [ 0, -1] [ lambertw(0, pi), lambertw(0, 1i)]
Wmin1 = lambertw(-1,A)
Wmin1 = [ -Inf, -1] [ lambertw(-1, pi), lambertw(-1, 1i)]
double
を使用してシンボリックな結果を double に変換します。
double(W0)
ans = 0.0000 + 0.0000i -1.0000 + 0.0000i 1.0737 + 0.0000i 0.3747 + 0.5764i
ランベルトの W 関数の 2 つの主要分岐のプロット
ランベルトの W 関数の 2 つの主要な分枝 と をプロットします。
syms x fplot(lambertw(x)) hold on fplot(lambertw(-1,x)) hold off axis([-0.5 4 -4 2]) title('Lambert W function, two main branches') legend('k=0','k=1','Location','best')
ランベルトの W 関数の複素平面プロット
ランベルトの W 関数の主分枝を複素平面にプロットします。
fmesh
を使用して、ランベルトの W 関数の実数値をプロットします。'ShowContours'
を 'On'
に設定して、同時に等高線をプロットします。
syms x y f = lambertw(x + 1i*y); interval = [-100 100 -100 100]; fmesh(real(f),interval,'ShowContours','On')
ランベルトの W 関数の虚数値をプロットします。プロットの分枝切断は、負の実数軸沿いにあります。等高線を個別にプロットします。
fmesh(imag(f),interval)
fcontour(imag(f),interval,'Fill','on')
ランベルトの W 関数の絶対値をプロットします。
fmesh(abs(f),interval,'ShowContours','On')
入力引数
x
— 入力
数値 | ベクトル | 行列 | 配列 | シンボリック数 | シンボリック変数 | シンボリック配列 | シンボリック関数 | シンボリック式
入力。数値、ベクトル、行列、または配列、あるいはシンボリック数、変数、配列、関数、または式で指定されます。
少なくとも 1 つの入力引数はスカラーであるか、両方の引数は同じサイズのベクトルまたは行列でなければなりません。一方の入力引数がスカラーであり、もう一方の入力引数がベクトルまたは行列である場合、lambertw
によってスカラーは、すべての要素がそのスカラーと等しい、もう一方の引数と同じサイズのベクトルまたは行列に拡張されます。
k
— ランベルトの W 関数の分枝
整数 | 整数のベクトルまたは行列 | シンボリック整数 | シンボリックな整数のベクトルまたは行列
ランベルトの W 関数の分岐。整数、整数のベクトルまたは行列、シンボリック整数、シンボリックな整数のベクトルまたは行列として指定します。
少なくとも 1 つの入力引数はスカラーであるか、両方の引数は同じサイズのベクトルまたは行列でなければなりません。一方の入力引数がスカラーであり、もう一方の入力引数がベクトルまたは行列である場合、lambertw
によってスカラーは、すべての要素がそのスカラーと等しい、もう一方の引数と同じサイズのベクトルまたは行列に拡張されます。
詳細
ランベルトの W 関数
ランベルトの W 関数 W(x) は、任意の複素数 x
について、方程式 の解 y を表します。
複素数 x の場合、方程式には無数の解 y = lambertW(k,x) があります。ここで、k は、すべての整数をその範囲とします。
すべての実数値が x ≥ 0 である場合、方程式には厳密に 1 つの実数解 y = lambertW(x) = lambertW(0,x) があります。
である実数 x の場合、方程式には厳密に 2 つの実数解があります。大きい方の解は y = lambertW(x) で、小さい方の解は y = lambertW(–1,x) と表されます。
の場合、方程式には厳密に 1 つの実数解 y = –1 = lambertW(0, –exp(–1)) = lambertW(–1, -exp(–1)) があります。
参照
[1] Corless, R.M., G.H. Gonnet, D.E.G. Hare, D.J. Jeffrey, and D.E. Knuth. "On the Lambert W Function." Advances in Computational Mathematics, Vol. 5, pp. 329–359, 1996.
バージョン履歴
R2006a より前に導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)