scipy.special.elliprj#

scipy.special.elliprj(x, y, z, p, out=None) = <ufunc 'elliprj'>#

Symmetrisches elliptisches Integral dritter Art.

Die Funktion RJ ist definiert als [1]

\[R_{\mathrm{J}}(x, y, z, p) = \frac{3}{2} \int_0^{+\infty} [(t + x) (t + y) (t + z)]^{-1/2} (t + p)^{-1} dt\]

Warnung

Diese Funktion sollte als experimentell betrachtet werden, wenn die Eingaben unausgeglichen sind. Überprüfen Sie die Korrektheit mit einer anderen unabhängigen Implementierung.

Parameter:
x, y, z, parray_like

Reale oder komplexe Eingabeparameter. x, y oder z sind Zahlen in der komplexen Ebene, die entlang der negativen reellen Achse geschnitten sind (vorbehaltlich weiterer Einschränkungen, siehe Hinweise), und höchstens eine davon kann Null sein. p muss ungleich Null sein.

outndarray, optional

Optionales Ausgabe-Array für die Funktionswerte

Rückgabe:
RSkalar oder ndarray

Wert des Integrals. Wenn alle von x, y, z und p reell sind, ist der Rückgabewert reell. Andernfalls ist der Rückgabewert komplex.

Wenn p reell und negativ ist, während x, y und z reell, nicht-negativ und höchstens eine davon Null ist, wird der Cauchy-Hauptwert zurückgegeben. [1] [2]

Siehe auch

elliprc

Degeneriertes symmetrisches Integral.

elliprd

Symmetrisches elliptisches Integral zweiter Art.

elliprf

Vollständig symmetrisches elliptisches Integral erster Art.

elliprg

Vollständig symmetrisches elliptisches Integral zweiter Art.

Hinweise

Der Code implementiert den Algorithmus von Carlson, der auf Duplikationstheoremen und Reihenentwicklungen bis zur 7. Ordnung basiert. [3] Der Algorithmus unterscheidet sich leicht von seiner früheren Inkarnation, wie sie in [1] erscheint, da der Aufruf von elliprc (oder atan/atanh, siehe [4]) in der inneren Schleife nicht mehr benötigt wird. Asymptotische Näherungen werden verwendet, wenn Argumente sich in der Größenordnung stark unterscheiden. [5]

Die Eingabewerte unterliegen bestimmten hinreichenden, aber nicht notwendigen Bedingungen, wenn die Eingabeargumente komplex sind. Insbesondere müssen x, y und z nicht-negative Realteile haben, es sei denn, zwei von ihnen sind nicht-negativ und komplex-konjugiert zueinander, während das andere eine reelle nicht-negative Zahl ist. [1] Wenn die Eingaben die in Ref. [1] beschriebene hinreichende Bedingung nicht erfüllen, werden sie sofort zurückgewiesen und die Ausgabe wird auf NaN gesetzt.

In dem Fall, dass einer von x, y und z gleich p ist, sollte die Funktion elliprd wegen ihres weniger restriktiven Bereichs bevorzugt werden.

Hinzugefügt in Version 1.8.0.

Referenzen

[1] (1,2,3,4,5)

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.20.iii

[3]

B. C. Carlson, J. FitzSimmons, „Reduction Theorems for Elliptic Integrands with the Square Root of Two Quadratic Factors“, J. Comput. Appl. Math., Bd. 118, Nr. 1-2, S. 71-85, 2000. https://doi.org/10.1016/S0377-0427(00)00282-X

[4]

F. Johansson, „Numerical Evaluation of Elliptic Functions, Elliptic Integrals and Modular Forms“, in J. Blumlein, C. Schneider, P. Paule, hrsg., „Elliptic Integrals, Elliptic Functions and Modular Forms in Quantum Field Theory“, S. 269-293, 2019 (Cham, Schweiz: Springer Nature Switzerland) https://arxiv.org/abs/1806.06725 https://doi.org/10.1007/978-3-030-04480-0

[5]

B. C. Carlson, J. L. Gustafson, „Asymptotic Approximations for Symmetric Elliptic Integrals“, SIAM J. Math. Anls., Bd. 25, Nr. 2, S. 288-303, 1994. https://arxiv.org/abs/math/9310223 https://doi.org/10.1137/S0036141092228477

Beispiele

Grundlegende Homogenitätseigenschaft

>>> import numpy as np
>>> from scipy.special import elliprj
>>> x = 1.2 + 3.4j
>>> y = 5.
>>> z = 6.
>>> p = 7.
>>> scale = 0.3 - 0.4j
>>> elliprj(scale*x, scale*y, scale*z, scale*p)
(0.10834905565679157+0.19694950747103812j)
>>> elliprj(x, y, z, p)*np.power(scale, -1.5)
(0.10834905565679556+0.19694950747103854j)

Reduktion auf einfachere elliptische Integrale

>>> elliprj(x, y, z, z)
(0.08288462362195129-0.028376809745123258j)
>>> from scipy.special import elliprd
>>> elliprd(x, y, z)
(0.08288462362195136-0.028376809745123296j)

Alle Argumente stimmen überein

>>> elliprj(x, x, x, x)
(-0.03986825876151896-0.14051741840449586j)
>>> np.power(x, -1.5)
(-0.03986825876151894-0.14051741840449583j)