本文简要介绍 python 语言中 scipy.special.lambertw
的用法。
用法:
scipy.special.lambertw(z, k=0, tol=1e-8)#
朗伯 W 函数。
朗伯 W 函数W(z)被定义为的反函数
w * exp(w)
.换句话说,值W(z)
是这样的z = W(z) * exp(W(z))
对于任何复数z
.Lambert W 函数是具有无限多个分支的多值函数。每个分支给出方程的单独解
z = w exp(w)
.这里,分支由整数索引k.- z: array_like
输入参数。
- k: 整数,可选
分支索引。
- tol: 浮点数,可选
评估容差。
- w: 数组
w 将具有与 z 相同的形状。
参数 ::
返回 ::
注意:
lambertw
支持所有分支:lambertw(z)
给出主解(分支 0)lambertw(z, k)
在分支上给出解决方案k
Lambert W 函数有两个部分实数分支:主分支 (k = 0) 是真的
z > -1/e
, 和k = -1
分支是真实的-1/e < z < 0
.除k = 0
有对数奇点z = 0
.可能的问题
在非常接近
-1/e
处的分支点时,评估可能会变得不准确。在某些极端情况下,lambertw
当前可能无法收敛,或者可能最终出现在错误的分支上。算法
哈雷迭代用于反转
w * exp(w)
, 使用 first-order 渐近逼近 (O(log(w)) 或O(w)) 作为初始估计。分支的定义、实现和选择基于[2]。
参考:
[2]Corless 等人,“关于 Lambert W 函数”,Adv.比较。数学。 5 (1996) 329-359。 https://cs.uwaterloo.ca/research/tr/1993/03/W.pdf
例子:
Lambert W 函数是
w exp(w)
的倒数:>>> import numpy as np >>> from scipy.special import lambertw >>> w = lambertw(1) >>> w (0.56714329040978384+0j) >>> w * np.exp(w) (1.0+0j)
任何分支都会给出有效的逆:
>>> w = lambertw(1, k=3) >>> w (-2.8535817554090377+17.113535539412148j) >>> w*np.exp(w) (1.0000000000000002+1.609823385706477e-15j)
申请equation-solving
Lambert W 函数可用于求解各种方程。我们在这里举两个例子。
首先,该函数可用于求解以下形式的隐式方程
对于 。我们假设 不为零。经过一点代数之后,方程可以写成
其中 。 可以使用 Lambert W 函数来表示
给予
例如,
>>> a = 3 >>> b = 2 >>> c = -0.5
的解决方案是:
>>> x = a - lambertw(-b*c*np.exp(a*c))/c >>> x (3.3707498368978794+0j)
验证它是否解方程:
>>> a + b*np.exp(c*x) (3.37074983689788+0j)
Lambert W 函数也可用于查找无限功率塔 的值:
>>> def tower(z, n): ... if n == 0: ... return z ... return z ** tower(z, n-1) ... >>> tower(0.5, 100) 0.641185744504986 >>> -lambertw(-np.log(0.5)) / np.log(0.5) (0.64118574450498589+0j)
相关用法
- Python SciPy special.laguerre用法及代码示例
- Python SciPy special.logsumexp用法及代码示例
- Python SciPy special.log1p用法及代码示例
- Python SciPy special.legendre用法及代码示例
- Python SciPy special.log_expit用法及代码示例
- Python SciPy special.logit用法及代码示例
- Python SciPy special.log_softmax用法及代码示例
- Python SciPy special.log_ndtr用法及代码示例
- Python SciPy special.exp1用法及代码示例
- Python SciPy special.expn用法及代码示例
- Python SciPy special.ncfdtri用法及代码示例
- Python SciPy special.gamma用法及代码示例
- Python SciPy special.y1用法及代码示例
- Python SciPy special.y0用法及代码示例
- Python SciPy special.ellip_harm_2用法及代码示例
- Python SciPy special.i1e用法及代码示例
- Python SciPy special.smirnovi用法及代码示例
- Python SciPy special.ker用法及代码示例
- Python SciPy special.ynp_zeros用法及代码示例
- Python SciPy special.k0e用法及代码示例
- Python SciPy special.j1用法及代码示例
- Python SciPy special.expit用法及代码示例
- Python SciPy special.polygamma用法及代码示例
- Python SciPy special.nbdtrik用法及代码示例
- Python SciPy special.nbdtrin用法及代码示例
注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.special.lambertw。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。