scipy.special.struve#
-
scipy.special.struve(v, x, выход=None) =
'struve'> # Функция Струве.
Вернуть значение функции Струве порядка v в x. Функция Струве определяется как,
\[H_v(x) = (z/2)^{v + 1} \sum_{n=0}^\infty \frac{(-1)^n (z/2)^{2n}}{\Gamma(n + \frac{3}{2}) \Gamma(n + v + \frac{3}{2})},\]где \(\Gamma\) является гамма-функцией.
- Параметры:
- varray_like
Порядок функции Струве (float).
- xarray_like
Аргумент функции Струве (float; должен быть положительным, если только v является целым числом).
- выходndarray, необязательно
Необязательный выходной массив для результатов функции
- Возвращает:
- Hскаляр или ndarray
Значение функции Струве порядка v в x.
Смотрите также
modstruveМодифицированная функция Струве
Примечания
Три метода, рассмотренные в [1] используются для вычисления функции Струве:
степенной ряд
разложение в функции Бесселя (если \(|z| < |v| + 20\))
асимптотическое разложение при больших z (если \(z \geq 0.7v + 12\))
Ошибки округления оцениваются на основе наибольших членов в суммах, и результат, связанный с наименьшей ошибкой, возвращается.
Ссылки
[1]NIST Digital Library of Mathematical Functions https://dlmf.nist.gov/11
Примеры
Вычислить функцию Струве порядка 1 в точке 2.
>>> import numpy as np >>> from scipy.special import struve >>> import matplotlib.pyplot as plt >>> struve(1, 2.) 0.6467637282835622
Вычислить функцию Струве при 2 для порядков 1, 2 и 3, предоставив список для параметра порядка v.
>>> struve([1, 2, 3], 2.) array([0.64676373, 0.28031806, 0.08363767])
Вычислить функцию Струве порядка 1 для нескольких точек, предоставив массив для x.
>>> points = np.array([2., 5., 8.]) >>> struve(1, points) array([0.64676373, 0.80781195, 0.48811605])
Вычислить функцию Струве для нескольких порядков в нескольких точках, предоставляя массивы для v и z. Массивы должны быть совместимы для трансляции до правильных форм.
>>> orders = np.array([[1], [2], [3]]) >>> points.shape, orders.shape ((3,), (3, 1))
>>> struve(orders, points) array([[0.64676373, 0.80781195, 0.48811605], [0.28031806, 1.56937455, 1.51769363], [0.08363767, 1.50872065, 2.98697513]])
Построить функции Струве порядка от 0 до 3 от -10 до 10.
>>> fig, ax = plt.subplots() >>> x = np.linspace(-10., 10., 1000) >>> for i in range(4): ... ax.plot(x, struve(i, x), label=f'$H_{i!r}$') >>> ax.legend(ncol=2) >>> ax.set_xlim(-10, 10) >>> ax.set_title(r"Struve functions $H_{\nu}$") >>> plt.show()