scipy.special.elliprj#

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

第三類對稱橢圓積分。

函數 RJ 定義為 [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\]

警告

當輸入不平衡時,此函數應視為實驗性質。請使用另一個獨立的實作來檢查正確性。

參數:
x, y, z, parray_like

實數或複數輸入參數。xyz 是複數平面上的數字,沿負實軸切割(受限於其他約束,請參閱「Notes」),且最多其中一個可以為零。p 必須為非零。

outndarray,可選

函數值的可選輸出陣列

返回:
R純量或 ndarray

積分值。如果 xyzp 皆為實數,則傳回值為實數。否則,傳回值為複數。

如果 p 為實數且為負數,而 xyz 為實數、非負數,且最多其中一個為零,則傳回柯西主值。[1] [2]

參見

elliprc

退化的對稱積分。

elliprd

第二類對稱橢圓積分。

elliprf

第一類完全對稱橢圓積分。

elliprg

第二類完全對稱橢圓積分。

註解

此程式碼實作了 Carlson 演算法,該演算法基於重複定理和高達 7 階的級數展開。[3] 此演算法與其早期版本略有不同,如 [1] 中所示,因為在內部迴圈中不再需要呼叫 elliprc(或 atan/atanh,請參閱 [4])。當引數在數量級上差異很大時,會使用漸近近似。[5]

當輸入引數為複數時,輸入值受限於某些充分但非必要的約束。特別是,除非 xyz 具有非負實部,否則它們中的兩個必須是非負數且彼此共軛複數,而另一個是實數非負數。[1] 如果輸入不滿足參考文獻 [1] 中描述的充分條件,則會直接拒絕它們,並將輸出設定為 NaN。

xyz 其中一個等於 p 的情況下,由於其限制較少的域,應優先使用函數 elliprd

在版本 1.8.0 中新增。

參考文獻

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

B. C. Carlson,“Numerical computation of real or complex elliptic integrals,” Numer. Algorithm, vol. 10, no. 1, pp. 13-26, 1995. https://arxiv.org/abs/math/9409227 https://doi.org/10.1007/BF02198293

[2]

B. C. Carlson, ed., Chapter 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., vol. 118, nos. 1-2, pp. 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, eds., “Elliptic Integrals, Elliptic Functions and Modular Forms in Quantum Field Theory,” pp. 269-293, 2019 (Cham, Switzerland: Springer Nature Switzerland) https://arxiv.org/abs/math/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., vol. 25, no. 2, pp. 288-303, 1994. https://arxiv.org/abs/math/9310223 https://doi.org/10.1137/S0036141092228477

範例

基本齊次性性質

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

簡化為更簡單的橢圓積分

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

所有引數重合

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