scipy.special.spence#
- scipy.special.spence(z, out=None) = <ufunc 'spence'>#
Spence 函數,亦稱為雙對數函數。
其定義為
\[\int_1^z \frac{\log(t)}{1 - t}dt\]對於複數 \(z\),其中積分輪廓取為避開對數函數的分支切割線。Spence 函數在除了負實軸以外的所有地方都是解析的,在負實軸上它有一個分支切割線。
- 參數:
- zarray_like
要評估 Spence 函數的點
- outndarray,選用
函數結果的可選輸出陣列
- 返回:
- s純量或 ndarray
Spence 函數的計算值
註解
有一個不同的慣例將 Spence 函數定義為積分
\[-\int_0^z \frac{\log(1 - t)}{t}dt;\]這是我們的
spence(1 - z)
。範例
>>> import numpy as np >>> from scipy.special import spence >>> import matplotlib.pyplot as plt
此函數為複數輸入定義
>>> spence([1-1j, 1.5+2j, 3j, -10-5j]) array([-0.20561676+0.91596559j, -0.86766909-1.39560134j, -0.59422064-2.49129918j, -1.14044398+6.80075924j])
對於分支切割線上的複數輸入,即負實軸,該函數返回
z
具有正虛部的極限值。例如,在以下範例中,請注意z = -2
和z = -2 - 1e-8j
的輸出虛部符號變化>>> spence([-2 + 1e-8j, -2, -2 - 1e-8j]) array([2.32018041-3.45139229j, 2.32018042-3.4513923j , 2.32018041+3.45139229j])
對於分支切割線上的實數輸入,該函數返回
nan
>>> spence(-1.5) nan
驗證一些特定值:
spence(0) = pi**2/6
、spence(1) = 0
和spence(2) = -pi**2/12
。>>> spence([0, 1, 2]) array([ 1.64493407, 0. , -0.82246703]) >>> np.pi**2/6, -np.pi**2/12 (1.6449340668482264, -0.8224670334241132)
驗證恆等式
spence(z) + spence(1 - z) = pi**2/6 - log(z)*log(1 - z)
>>> z = 3 + 4j >>> spence(z) + spence(1 - z) (-2.6523186143876067+1.8853470951513935j) >>> np.pi**2/6 - np.log(z)*np.log(1 - z) (-2.652318614387606+1.885347095151394j)
繪製正實數輸入的函數圖。
>>> fig, ax = plt.subplots() >>> x = np.linspace(0, 6, 400) >>> ax.plot(x, spence(x)) >>> ax.grid() >>> ax.set_xlabel('x') >>> ax.set_title('spence(x)') >>> plt.show()