, x, out=None) = <ufunc 'kn'>#

Modified Bessel function of the second kind of integer order n

Returns the modified Bessel function of the second kind for integer order n at real z.

These are also sometimes called functions of the third kind, Basset functions, or Macdonald functions.

narray_like of int

Order of Bessel functions (floats will truncate with a warning)

xarray_like of float

Argument at which to evaluate the Bessel functions

outndarray, optional

Optional output array for the function results.

scalar or ndarray

Value of the Modified Bessel function of the second kind, \(K_n(x)\).

See also


Same function, but accepts real order and complex argument


Derivative of this function


Wrapper for AMOS [1] routine zbesk. For a discussion of the algorithm used, see [2] and the references therein.



Donald E. Amos, “AMOS, A Portable Package for Bessel Functions of a Complex Argument and Nonnegative Order”,


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


Plot the function of several orders for real input:

>>> from scipy.special import kn
>>> import matplotlib.pyplot as plt
>>> x = np.linspace(0, 5, 1000)
>>> for N in range(6):
...     plt.plot(x, kn(N, x), label='$K_{}(x)$'.format(N))
>>> plt.ylim(0, 10)
>>> plt.legend()
>>> plt.title(r'Modified Bessel function of the second kind $K_n(x)$')

Calculate for a single value at multiple orders:

>>> kn([4, 5, 6], 1)
array([   44.23241585,   360.9605896 ,  3653.83831186])