scipy.special.yve#

scipy.special.yve(v, z, выход=None) = 'yve'>#

Экспоненциально масштабированная функция Бесселя второго рода вещественного порядка.

Возвращает экспоненциально масштабированную функцию Бесселя второго рода вещественного порядка v в комплексной z:

yve(v, z) = yv(v, z) * exp(-abs(z.imag))
Параметры:
varray_like

Порядок (float).

zarray_like

Аргумент (float или complex).

выходndarray, необязательно

Необязательный выходной массив для результатов функции

Возвращает:
Yскаляр или ndarray

Значение экспоненциально масштабированной функции Бесселя.

Смотрите также

yv

Масштабированная функция Бесселя второго рода вещественного порядка.

Примечания

Для положительных v значения, вычисление выполняется с использованием AMOS [1] zbesy подпрограммы, которая использует связь с функциями Ханкеля Бесселя \(H_v^{(1)}\) и \(H_v^{(2)}\),

\[Y_v(z) = \frac{1}{2\imath} (H_v^{(1)} - H_v^{(2)}).\]

Для отрицательных v значения формулы,

\[Y_{-v}(z) = Y_v(z) \cos(\pi v) + J_v(z) \sin(\pi v)\]

используется, где \(J_v(z)\) является функцией Бесселя первого рода, вычисленной с использованием подпрограммы AMOS zbesj. Обратите внимание, что второй член в точности равен нулю для целых v; для повышения точности второй член явно опущен для v значения такие, что v = floor(v).

Экспоненциально масштабированные функции Бесселя полезны для больших z: для них не масштабированные функции Бесселя могут легко выйти за пределы диапазона.

Ссылки

[1]

Дональд Э. Амос, «AMOS, переносимый пакет для функций Бесселя комплексного аргумента и неотрицательного порядка», http://netlib.org/amos/

Примеры

Сравните вывод yv и yve для больших комплексных аргументов для z путем вычисления их значений для порядка v=1 в z=1000j. Мы видим, что yv возвращает nan, но yve возвращает конечное число:

>>> import numpy as np
>>> from scipy.special import yv, yve
>>> v = 1
>>> z = 1000j
>>> yv(v, z), yve(v, z)
((nan+nanj), (-0.012610930256928629+7.721967686709076e-19j))

Для вещественных аргументов для z, yve возвращает то же, что и yv с точностью до ошибок с плавающей запятой.

>>> v, z = 1, 1000
>>> yv(v, z), yve(v, z)
(-0.02478433129235178, -0.02478433129235179)

Функция может быть вычислена для нескольких порядков одновременно путём предоставления списка или массива NumPy для v:

>>> yve([1, 2, 3], 1j)
array([-0.20791042+0.14096627j,  0.38053618-0.04993878j,
       0.00815531-1.66311097j])

Аналогично, функцию можно вычислить в нескольких точках за один вызов, предоставив список или массив NumPy для z:

>>> yve(1, np.array([1j, 2j, 3j]))
array([-0.20791042+0.14096627j, -0.21526929+0.01205044j,
       -0.19682671+0.00127278j])

Также возможно вычислить несколько порядков в нескольких точках одновременно, предоставив массивы для v и z с совместимыми формами вещания. Вычислить yve для двух разных порядков v и три точки z в результате получается массив 2x3.

>>> v = np.array([[1], [2]])
>>> z = np.array([3j, 4j, 5j])
>>> v.shape, z.shape
((2, 1), (3,))
>>> yve(v, z)
array([[-1.96826713e-01+1.27277544e-03j, -1.78750840e-01+1.45558819e-04j,
        -1.63972267e-01+1.73494110e-05j],
       [1.94960056e-03-1.11782545e-01j,  2.02902325e-04-1.17626501e-01j,
        2.27727687e-05-1.17951906e-01j]])