本文簡要介紹 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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。