當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python SciPy special.yv用法及代碼示例


本文簡要介紹 python 語言中 scipy.special.yv 的用法。

用法:

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

第二類實數和複數參數的貝塞爾函數。

參數

v array_like

訂單(浮點數)。

z array_like

參數(浮點數或複數)。

out ndarray,可選

函數結果的可選輸出數組

返回

Y 標量或 ndarray

第二類貝塞爾函數的值

注意

對於正v值,計算是使用 AMOS 進行的[1] 茲貝西例程,它利用與 Hankel Bessel 函數的連接\(H_v^{(1)}\) \(H_v^{(2)}\) ,

對於負 v 值,公式,

被使用,其中\(J_v(z)\) 是第一類貝塞爾函數,使用 AMOS 例程計算zbesj.請注意,對於整數,第二項正好為零v;為了提高準確性,第二項被明確省略v這樣的值v = 樓層(v).

參考

[1]

Donald E. Amos,“AMOS,用於複雜參數和非負階貝塞爾函數的便攜式軟件包”,http://netlib.org/amos/

例子

在某一點評估 0 階函數。

>>> from scipy.special import yv
>>> yv(0, 1.)
0.088256964215677

在某一點評估不同階次的函數。

>>> yv(0, 1.), yv(1, 1.), yv(1.5, 1.)
(0.088256964215677, -0.7812128213002889, -1.102495575160179)

通過提供一個列表或 NumPy 數組作為 v 參數的參數,可以在一次調用中執行不同順序的評估:

>>> yv([0, 1, 1.5], 1.)
array([ 0.08825696, -0.78121282, -1.10249558])

通過提供 z 數組,在多個點評估函數的 0 階。

>>> import numpy as np
>>> points = np.array([0.5, 3., 8.])
>>> yv(0, points)
array([-0.44451873,  0.37685001,  0.22352149])

如果 z 是一個數組,並且在一次調用中計算不同的階數,則階數參數 v 必須可廣播為正確的形狀。要計算一維數組的階數 0 和 1:

>>> orders = np.array([[0], [1]])
>>> orders.shape
(2, 1)
>>> yv(orders, points)
array([[-0.44451873,  0.37685001,  0.22352149],
       [-1.47147239,  0.32467442, -0.15806046]])

繪製從 0 到 10 的 0 到 3 階函數。

>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots()
>>> x = np.linspace(0., 10., 1000)
>>> for i in range(4):
...     ax.plot(x, yv(i, x), label=f'$Y_{i!r}$')
>>> ax.set_ylim(-3, 1)
>>> ax.legend()
>>> plt.show()
scipy-special-yv-1.png

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.special.yv。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。