2017-02-09 32 views
0

我一直在處理一個涉及分支-1的LambertW函數的問題,從lambertw(-1/e,-1)= -1到lambertw(-0,-1)= -inf。這個論點「可笑地」很小:我想要一個lambertw(-1,-2E-278)的答案。使用Mathematica或WolframAlpha可以給出明智的答案。但是,當我嘗試使用Python(Anaconda Python 3.5,Spyder 3.0)時,它提供了一個NAN。我爲lambertw(x,-1)嘗試了不同的參數,並且對答案的限制!= NAN似乎是-1E-162。我的猜測是這裏使用的數字圖書館有限制。任何人都可以確認嗎?python 3.5中的LambertW函數給出了分支-1的NAN適用於arg <-1E-162

短上後面的 「荒謬」 參數的背景:我試圖計算大氣馮卡曼限制,其涉及求解以下等式:

(R + x)的* EXP(-x/H)= y for x,其中y〜3000-7000和H〜11000,R = 6371000答案是

h = -H * lambertw(-exp(R/H)* y/H,-1)-R。

謝謝

索倫

+0

不知道到底是什麼話題,這_might_更適合[scicomp.se]。儘管如此,請確保[首先查看主題上的內容](http://scicomp.stackexchange.com/help/on-topic)。 –

回答

0

mpmath庫可輕鬆處理LambertW的參數。

from mpmath import mp 

x = mp.mpf('-2E-278') 
y = mp.lambertw(x, k=-1) 
print(x, y, y * mp.exp(y)) 

輸出

-2.0e-278 -645.896147400105 -1.99999999999992e-278 

如果你想更精確,只需設置mp.dps。例如,對於mp.dps = 50我們得到

-2.0e-278 -645.89614740010513774585665162486252955835623920946 -1.9999999999999999999999999999999999999999999999998e-278 

mpmath對於Python 3和Python 2,並且可以很容易地在Linux系統上使用pip進行安裝。但請參閱上面的mpmath鏈接以獲取更詳細的安裝信息。

+0

非常感謝,它解決了我的問題! –

+0

@SorenMolander如果我的回答對你有所幫助,請考慮[接受](http://meta.stackexchange.com/a/5235)它。 –

相關問題