scipy.special.kv#
- scipy.special.kv(v, z, out=None) = <ufunc 'kv'>#
实阶 v 的二阶修正贝塞尔函数
返回在复数 z 处,实阶 v 的二阶修正贝塞尔函数。
这些函数有时也被称为三阶函数、巴塞特函数或麦克唐纳函数。它们被定义为修正贝塞尔方程的解,满足
\[K_v(x) \sim \sqrt{\pi/(2x)} \exp(-x)\]当 \(x \to \infty\) [3] 时。
- 参数:
- vfloat类型的array_like
贝塞尔函数的阶数
- z复数类型的array_like
评估贝塞尔函数的参数
- outndarray, optional
用于存储函数结果的可选输出数组
- 返回:
- 标量或 ndarray
结果。请注意,输入必须是复数类型才能获得复数输出,例如
kv(3, -2+0j)而不是kv(3, -2)。
附注
AMOS [1] 例程 zbesk 的封装。有关所用算法的讨论,请参阅 [2] 以及其中的参考文献。
参考文献
[1]Donald E. Amos,“AMOS,一个用于复数参数和非负阶数的 Bessel 函数的可移植包”,http://netlib.org/amos/
[2]Donald E. Amos, “Algorithm 644: A portable package for Bessel functions of a complex argument and nonnegative order”, ACM TOMS Vol. 12 Issue 3, Sept. 1986, p. 265
[3]NIST 数学函数数字图书馆, Eq. 10.25.E3. https://dlmf.nist.gov/10.25.E3
示例
绘制多个阶数在实数输入下的函数
>>> import numpy as np >>> from scipy.special import kv >>> import matplotlib.pyplot as plt >>> x = np.linspace(0, 5, 1000) >>> for N in np.linspace(0, 6, 5): ... plt.plot(x, kv(N, x), label='$K_{{{}}}(x)$'.format(N)) >>> plt.ylim(0, 10) >>> plt.legend() >>> plt.title(r'Modified Bessel function of the second kind $K_\nu(x)$') >>> plt.show()
为单个值计算多个阶数
>>> kv([4, 4.5, 5], 1+2j) array([ 0.1992+2.3892j, 2.3493+3.6j , 7.2827+3.8104j])