scipy.special.modstruve#
- scipy.special.modstruve(v, x, out=None) = <ufunc 'modstruve'>#
修正 Struve 函數。
傳回階數為 v,引數為 x 的修正 Struve 函數值。修正 Struve 函數定義為:
\[L_v(x) = -\imath \exp(-\pi\imath v/2) H_v(\imath x),\]其中 \(H_v\) 為 Struve 函數。
- 參數:
- varray_like
修正 Struve 函數的階數 (float)。
- xarray_like
Struve 函數的引數 (float;除非 v 為整數,否則必須為正數)。
- outndarray,optional
函數結果的可選輸出陣列
- 傳回值:
- L純量或 ndarray
階數為 v,引數為 x 的修正 Struve 函數值。
另請參閱
註解
參考文獻 [1] 中討論了三種用於評估函數的方法
冪級數
貝塞爾函數展開式 (如果 \(|x| < |v| + 20\))
大 x 漸近展開式 (如果 \(x \geq 0.7v + 12\))
捨入誤差根據總和中最大的項估算,並傳回與最小誤差相關聯的結果。
參考文獻
[1]NIST 數學函數數位圖書館 https://dlmf.nist.gov/11
範例
計算階數為 1,引數為 2 的修正 Struve 函數。
>>> import numpy as np >>> from scipy.special import modstruve >>> import matplotlib.pyplot as plt >>> modstruve(1, 2.) 1.102759787367716
計算階數為 1、2 和 3 時,引數為 2 的修正 Struve 函數,方法是為階數參數 v 提供列表。
>>> modstruve([1, 2, 3], 2.) array([1.10275979, 0.41026079, 0.11247294])
計算階數為 1 時,多個點的修正 Struve 函數,方法是為 x 提供陣列。
>>> points = np.array([2., 5., 8.]) >>> modstruve(1, points) array([ 1.10275979, 23.72821578, 399.24709139])
計算多個點多個階數的修正 Struve 函數,方法是為 v 和 z 提供陣列。陣列必須可廣播為正確的形狀。
>>> orders = np.array([[1], [2], [3]]) >>> points.shape, orders.shape ((3,), (3, 1))
>>> modstruve(orders, points) array([[1.10275979e+00, 2.37282158e+01, 3.99247091e+02], [4.10260789e-01, 1.65535979e+01, 3.25973609e+02], [1.12472937e-01, 9.42430454e+00, 2.33544042e+02]])
繪製階數從 0 到 3,範圍從 -5 到 5 的修正 Struve 函數圖。
>>> fig, ax = plt.subplots() >>> x = np.linspace(-5., 5., 1000) >>> for i in range(4): ... ax.plot(x, modstruve(i, x), label=f'$L_{i!r}$') >>> ax.legend(ncol=2) >>> ax.set_xlim(-5, 5) >>> ax.set_title(r"Modified Struve functions $L_{\nu}$") >>> plt.show()