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 函數值。

另請參閱

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 函數,方法是為 vz 提供陣列。陣列必須可廣播為正確的形狀。

>>> 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()
../../_images/scipy-special-modstruve-1.png