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


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


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

用法:

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

第一類 v 階指數縮放貝塞爾函數。

定義為:

jve(v, z) = jv(v, z) * exp(-abs(z.imag))

參數

v array_like

訂單(浮點數)。

z array_like

參數(浮點數或複數)。

out ndarray,可選

函數值的可選輸出數組

返回

J 標量或 ndarray

index 縮放貝塞爾函數的值。

注意

對於正v值,計算是使用 AMOS 進行的[1] zbesj例程,它利用與修改後的 Bessel 函數的連接\(I_v\) ,

對於負 v 值,公式,

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

指數縮放貝塞爾函數對於大參數 z 很有用:對於這些參數,未縮放貝塞爾函數很容易 under-or 溢出。

參考

[1]

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

例子

比較輸出jvjve對於大型複雜參數z通過計算它們的順序值v=1z=1000j。我們看到jv溢出但是jve返回一個有限數:

>>> import numpy as np
>>> from scipy.special import jv, jve
>>> v = 1
>>> z = 1000j
>>> jv(v, z), jve(v, z)
((inf+infj), (7.721967686709077e-19+0.012610930256928629j))

對於真正的參數z,jve返回相同jv.

>>> v, z = 1, 1000
>>> jv(v, z), jve(v, z)
(0.004728311907089523, 0.004728311907089523)

通過為 v 提供列表或 NumPy 數組,可以同時評估該函數的多個階數:

>>> jve([1, 3, 5], 1j)
array([1.27304208e-17+2.07910415e-01j, -4.99352086e-19-8.15530777e-03j,
       6.11480940e-21+9.98657141e-05j])

以同樣的方式,通過為 z 提供列表或 NumPy 數組,可以在一次調用中在多個點評估該函數:

>>> jve(1, np.array([1j, 2j, 3j]))
array([1.27308412e-17+0.20791042j, 1.31814423e-17+0.21526929j,
       1.20521602e-17+0.19682671j])

通過提供數組,還可以同時在多個點評估多個訂單vz具有兼容的廣播形狀。計算jve對於兩個不同的訂單v和三點z產生一個 2x3 數組。

>>> v = np.array([[1], [3]])
>>> z = np.array([1j, 2j, 3j])
>>> v.shape, z.shape
((2, 1), (3,))
>>> jve(v, z)
array([[1.27304208e-17+0.20791042j,  1.31810070e-17+0.21526929j,
        1.20517622e-17+0.19682671j],
       [-4.99352086e-19-0.00815531j, -1.76289571e-18-0.02879122j,
        -2.92578784e-18-0.04778332j]])

相關用法


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