scipy.special.modstruve#

scipy.special.modstruve(v, x, out=None) = <ufunc 'modstruve'>#

Modifizierte Struve-Funktion.

Gibt den Wert der modifizierten Struve-Funktion der Ordnung v bei x zurück. Die modifizierte Struve-Funktion ist definiert als,

\[L_v(x) = -\imath \exp(-\pi\imath v/2) H_v(\imath x),\]

wobei \(H_v\) die Struve-Funktion ist.

Parameter:
varray_like

Ordnung der modifizierten Struve-Funktion (float).

xarray_like

Argument der Struve-Funktion (float; muss positiv sein, es sei denn, v ist eine ganze Zahl).

outndarray, optional

Optionales Ausgabe-Array für die Funktionsergebnisse

Rückgabe:
Lskalar oder ndarray

Wert der modifizierten Struve-Funktion der Ordnung v bei x.

Siehe auch

struve

Hinweise

Drei in [1]">[1] diskutierte Methoden werden zur Auswertung der Funktion verwendet

  • Potenzreihen

  • Entwicklung in Bessel-Funktionen (wenn \(|x| < |v| + 20\))

  • asymptotische Entwicklung für große x (wenn \(x \geq 0.7v + 12\))

Rundungsfehler werden basierend auf den größten Termen in den Summen geschätzt, und das Ergebnis mit dem kleinsten Fehler wird zurückgegeben.

Referenzen

[1]

NIST Digital Library of Mathematical Functions https://dlmf.nist.gov/11

Beispiele

Berechnen Sie die modifizierte Struve-Funktion der Ordnung 1 bei 2.

>>> import numpy as np
>>> from scipy.special import modstruve
>>> import matplotlib.pyplot as plt
>>> modstruve(1, 2.)
1.102759787367716

Berechnen Sie die modifizierte Struve-Funktion bei 2 für die Ordnungen 1, 2 und 3, indem Sie eine Liste für den Ordnungs-Parameter v angeben.

>>> modstruve([1, 2, 3], 2.)
array([1.10275979, 0.41026079, 0.11247294])

Berechnen Sie die modifizierte Struve-Funktion der Ordnung 1 für mehrere Punkte, indem Sie ein Array für x angeben.

>>> points = np.array([2., 5., 8.])
>>> modstruve(1, points)
array([  1.10275979,  23.72821578, 399.24709139])

Berechnen Sie die modifizierte Struve-Funktion für mehrere Ordnungen an mehreren Punkten, indem Sie Arrays für v und z angeben. Die Arrays müssen so beschaffen sein, dass sie sich korrekt übertragen lassen.

>>> 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]])

Plotten Sie die modifizierten Struve-Funktionen der Ordnungen 0 bis 3 von -5 bis 5.

>>> 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