當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python SciPy special.elliprj用法及代碼示例


本文簡要介紹 python 語言中 scipy.special.elliprj 的用法。

用法:

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

第三類對稱橢圓積分。

函數 RJ 定義為 [1]

警告

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

參數

x, y, z, p array_like

實數或複數輸入參數。 x、y 或 z 是沿負實軸切割的複平麵中的數字(受進一步約束,請參見注釋),並且最多其中之一可以為零。 p 必須非零。

out ndarray,可選

函數值的可選輸出數組

返回

R 標量或 ndarray

積分值。如果 x、y、z 和 p 均為實數,則返回值為實數。否則,返回值很複雜。

如果p是實數和負數,而x,y, 和z為實數、非負數,且至多其中一個為零,則返回柯西主值。[1] [2]

注意

該代碼實現了基於重複定理和級數展開至七階的卡爾森算法。 [3] 該算法與 [1] 中出現的早期版本略有不同,因為內部不再需要調用 elliprc (或 atan /atanh ,請參閱 [4])環形。當參數的數量級差異很大時,使用漸近近似。 [5]

當輸入參數複雜時,輸入值受到某些充分但非必要的約束。值得注意的是, xyz 必須具有非負實部,除非其中兩個互為非負數且 complex-conjugates 互為非負實數,而另一個是非負實數。 [1] 如果輸入不滿足參考文獻中說明的充分條件。 [1] 它們被徹底拒絕,輸出設置為 NaN。

xyz 之一等於 p 的情況下,應首選函數 elliprd 因為其限製域較少。

參考

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

B. C. Carlson,“實數或複數橢圓積分的數值計算”,Numer。算法,卷。 10,沒有。 1,第 13-26 頁,1995 年。https://arxiv.org/abs/math/9409227 https://doi.org/10.1007/BF02198293

[2]

B. C. Carlson 主編,“數學函數數字 Library ”第 19 章,NIST,美國商務部。 https://dlmf.nist.gov/19.20.iii

[3]

B. C. Carlson、J. FitzSimmons,“具有兩個二次因子平方根的橢圓被積函數的約簡定理”,J. Comput。應用。數學,卷。 118,沒有。 1-2,第 71-85 頁,2000 年。https://doi.org/10.1016/S0377-0427(00)00282-X

[4]

F. Johansson,“橢圓函數、橢圓積分和模形式的數值計算”,J. Blumlein、C. Schneider、P. Paule 編輯,“量子場論中的橢圓積分、橢圓函數和模形式”,第. 269-293, 2019(Cham,瑞士:瑞士施普林格自然)https://arxiv.org/abs/1806.06725 https://doi.org/10.1007/978-3-030-04480-0

[5]

B. C. Carlson、J. L. Gustafson,“對稱橢圓積分的漸近近似”,SIAM J. Math。 Anls.,卷。 25、沒有。 2,第 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)

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.special.elliprj。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。