我一直在处理涉及分支-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。我的猜测是这里使用的数值库有局限性。谁能证实这一点?
对“荒谬”论证背后的背景简短说明:我试图计算大气von卡曼极限,其中包括求解以下等式:
(R + x)* exp(-x / H)= y为x,其中y~3000-7000和H~11000,R = 6371000答案是
h = -H * lambertw(-exp(R / H)* y / H,-1) - R。
谢谢,
索伦
答案 0 :(得分: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,可以使用pip
轻松安装在Linux系统上。但请参阅上面的mpmath
链接以获取更详细的安装信息。