scipy.special.kve#

scipy.special.kve(v, z, out=None) = <ufunc 'kve'>#

指数尺度修正贝塞尔函数第二类。

返回针对复数 z 的实数阶 v 的指数尺度修正贝塞尔函数第二类(有时称为第三类)。

kve(v, z) = kv(v, z) * exp(z)
参数:
vfloat类型的array_like

贝塞尔函数的阶数

z复数类型的array_like

评估贝塞尔函数的参数

outndarray, optional

用于存储函数结果的可选输出数组

返回:
标量或 ndarray

指数尺度修正贝塞尔函数第二类。

另请参阅

kv

此函数不带指数尺度。

k0e

此函数针对 0 阶的更快速版本。

k1e

此函数针对 1 阶的更快速版本。

附注

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

示例

在以下示例中 kv 返回 0,而 kve 仍然返回一个有用的有限数字。

>>> import numpy as np
>>> from scipy.special import kv, kve
>>> import matplotlib.pyplot as plt
>>> kv(3, 1000.), kve(3, 1000.)
(0.0, 0.03980696128440973)

通过为 v 参数提供列表或 NumPy 数组,在一个点上针对不同的阶数评估函数

>>> kve([0, 1, 1.5], 1.)
array([1.14446308, 1.63615349, 2.50662827])

通过为 z 提供数组,为阶数为 0 的函数在多个点处进行评估。

>>> points = np.array([1., 3., 10.])
>>> kve(0, points)
array([1.14446308, 0.6977616 , 0.39163193])

通过为 vz 提供数组,在多个点上针对不同的阶数评估函数。两个数组都必须广播到正确的形状。要计算一维点数组的 0、1 和 2 阶

>>> kve([[0], [1], [2]], points)
array([[1.14446308, 0.6977616 , 0.39163193],
       [1.63615349, 0.80656348, 0.41076657],
       [4.41677005, 1.23547058, 0.47378525]])

绘制从 0 到 5 的 0 到 3 阶函数。

>>> fig, ax = plt.subplots()
>>> x = np.linspace(0., 5., 1000)
>>> for i in range(4):
...     ax.plot(x, kve(i, x), label=fr'$K_{i!r}(z)\cdot e^z$')
>>> ax.legend()
>>> ax.set_xlabel(r"$z$")
>>> ax.set_ylim(0, 4)
>>> ax.set_xlim(0, 5)
>>> plt.show()
../../_images/scipy-special-kve-1.png