scipy.special.elliprd#
- scipy.special.elliprd(x, y, z, out=None) = <ufunc 'elliprd'>#
第二类对称椭圆积分。
函数 RD 定义为 [1]
\[R_{\mathrm{D}}(x, y, z) = \frac{3}{2} \int_0^{+\infty} [(t + x) (t + y)]^{-1/2} (t + z)^{-3/2} dt\]- 参数:
- x, y, zarray_like
实数或复数输入参数。 x 或 y 可以是沿负实轴切割的复平面中的任何数,但它们中最多只能有一个为零,而 z 必须非零。
- outndarray, 可选
函数值的可选输出数组
- 返回:
- R标量或 ndarray
积分值。如果 x、 y 和 z 均为实数,则返回值是实数。否则,返回值是复数。
说明
RD 是椭圆积分 RJ 的退化情况:
elliprd(x, y, z) == elliprj(x, y, z, z)
.该代码实现了基于倍增定理和 7 阶级数展开的 Carlson 算法。 [2]
在 1.8.0 版本中添加。
参考文献
[1]B. C. Carlson, ed., “数字数学函数库”第 19 章,NIST,美国商务部。 https://dlmf.nist.gov/19.16.E5
[2]B. C. Carlson, “实数或复数椭圆积分的数值计算”,Numer. Algorithm,第 10 卷,第 1 期,第 13-26 页,1995 年。 https://arxiv.org/abs/math/9409227 https://doi.org/10.1007/BF02198293
示例
基本齐次性
>>> import numpy as np >>> from scipy.special import elliprd
>>> x = 1.2 + 3.4j >>> y = 5. >>> z = 6. >>> scale = 0.3 + 0.4j >>> elliprd(scale*x, scale*y, scale*z) (-0.03703043835680379-0.24500934665683802j)
>>> elliprd(x, y, z)*np.power(scale, -1.5) (-0.0370304383568038-0.24500934665683805j)
所有三个参数一致
>>> x = 1.2 + 3.4j >>> elliprd(x, x, x) (-0.03986825876151896-0.14051741840449586j)
>>> np.power(x, -1.5) (-0.03986825876151894-0.14051741840449583j)
所谓的“第二莱姆尼斯科特常数”
>>> elliprd(0, 2, 1)/3 0.5990701173677961
>>> from scipy.special import gamma >>> gamma(0.75)**2/np.sqrt(2*np.pi) 0.5990701173677959