当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。