scipy.special.elliprg#
- scipy.special.elliprg(x, y, z, out=None) = <ufunc 'elliprg'>#
Vollständig symmetrisches elliptisches Integral zweiter Art.
Die Funktion RG ist definiert als [1]
\[R_{\mathrm{G}}(x, y, z) = \frac{1}{4} \int_0^{+\infty} [(t + x) (t + y) (t + z)]^{-1/2} \left(\frac{x}{t + x} + \frac{y}{t + y} + \frac{z}{t + z}\right) t dt\]- Parameter:
- x, y, zarray_like
Reale oder komplexe Eingabeparameter. x, y oder z können beliebige Zahlen in der komplexen Ebene sein, die entlang der negativen reellen Achse geschnitten ist.
- outndarray, optional
Optionales Ausgabe-Array für die Funktionswerte
- Rückgabe:
- RSkalar oder ndarray
Wert des Integrals. Wenn alle x, y und z reell sind, ist der Rückgabewert reell. Andernfalls ist der Rückgabewert komplex.
Siehe auch
Hinweise
Die Implementierung verwendet die Beziehung [1]
\[2 R_{\mathrm{G}}(x, y, z) = z R_{\mathrm{F}}(x, y, z) - \frac{1}{3} (x - z) (y - z) R_{\mathrm{D}}(x, y, z) + \sqrt{\frac{x y}{z}}\]und die Symmetrie von x, y, z, wenn mindestens ein Nicht-Null-Parameter als Drehpunkt gewählt werden kann. Wenn eines der Argumente nahe Null ist, wird stattdessen die AGM-Methode angewendet. Andere Sonderfälle werden gemäß Ref. [2] berechnet.
Hinzugefügt in Version 1.8.0.
Referenzen
[1] (1,2)B. C. Carlson, „Numerical computation of real or complex elliptic integrals“, Numer. Algorithm, Bd. 10, Nr. 1, S. 13–26, 1995. https://arxiv.org/abs/math/9409227 https://doi.org/10.1007/BF02198293
[2]B. C. Carlson, hrsg., Kapitel 19 in „Digital Library of Mathematical Functions“, NIST, US Dept. of Commerce. https://dlmf.nist.gov/19.16.E1 https://dlmf.nist.gov/19.20.ii
Beispiele
Grundlegende Homogenitätseigenschaft
>>> import numpy as np >>> from scipy.special import elliprg
>>> x = 1.2 + 3.4j >>> y = 5. >>> z = 6. >>> scale = 0.3 + 0.4j >>> elliprg(scale*x, scale*y, scale*z) (1.195936862005246+0.8470988320464167j)
>>> elliprg(x, y, z)*np.sqrt(scale) (1.195936862005246+0.8470988320464165j)
Vereinfachungen
>>> elliprg(0, y, y) 1.756203682760182
>>> 0.25*np.pi*np.sqrt(y) 1.7562036827601817
>>> elliprg(0, 0, z) 1.224744871391589
>>> 0.5*np.sqrt(z) 1.224744871391589
Die Oberfläche eines triaxialen Ellipsoids mit den Halbachsen
a,bundcist gegeben durch\[S = 4 \pi a b c R_{\mathrm{G}}(1 / a^2, 1 / b^2, 1 / c^2).\]>>> def ellipsoid_area(a, b, c): ... r = 4.0 * np.pi * a * b * c ... return r * elliprg(1.0 / (a * a), 1.0 / (b * b), 1.0 / (c * c)) >>> print(ellipsoid_area(1, 3, 5)) 108.62688289491807