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

elliprc

Degeneriertes symmetrisches Integral.

elliprd

Symmetrisches elliptisches Integral zweiter Art.

elliprf

Vollständig symmetrisches elliptisches Integral erster Art.

elliprj

Symmetrisches elliptisches Integral dritter Art.

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, b und c ist 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