2011-07-22 16 views
7

私はプロジェクトに取り組んでおり、少なくともW(x)の値の近似を得るための関数が必要な状況であることを発見した。Lambert W function xは任意の実数でよい。私はJavaで働いています。私が検索したときに私はJavaでWの実装を見つけることができませんでした。必要に応じて実装をコード化しても構わないと思いますが、現在どのように実装されているのかは分かりません。正しい方向へのどんなプッシュも非常に高く評価されます。ランバートWのJavaでの実装

+0

をまた、私は、私は[0のドメインにWが必要であることを考えますinf)。 – Graham

答えて

6

は、このページを見てみましょう:http://mathworld.wolfram.com/LambertW-Function.html

それはz>3の近似だけでなく、関数の級数展開を示しています。

ます。また、関数を近似するためにニュートン法とハレーのメソッドを使用することができます

http://en.wikipedia.org/wiki/Lambert_W_function#Numerical_evaluation

+0

投稿した最初のリンクでz> 3の近似値を見ると、エンドビットを除いてほとんどの式がわかります。 O [(L1/L2)^ 6]部分はどういう意味ですか?また、L2(-2 + L2)のようなものは、lnlnz *(-2 + lnlnz)またはlnln(-2 + lnlnz)となるでしょうか? – Graham

+0

最後の '+ O(stuff)'は単なるエラー用語です。あなたはそれを無視することができます。そして、L2(-2 + L2)= lnlnz *(-2 + lnlnz) – tskuzzy

+0

ありがとう!それはいくつかのことをクリアします。だから私はおそらく、3より大きい関数への入力にその式を使用し、0と3の間の入力のためのより簡単な近似式を見つけることができますか? – Graham

3

ランバート機能は、それが検証さg(w) = w*exp(w)の逆数関数である:

W(z)eW(z) = z. 

Wを評価するための良い方法(Z解決する

:)指定されたZ上newton raphson方法を使用することであろうf(Y)= Yexp(Y) - z = 0.

あなたは

の方法でY = W(z)を見つけるでしょう。メソッドのjavaで見つけて実装する必要があります。

が、それは方法のウィキペディアからの実例以下

お役に立てば幸いです:それは違いを作る場合

enter image description here