scipy.special.elliprc#
- scipy.special.elliprc(x, y, out=None) = <ufunc 'elliprc'>#
简并对称椭圆积分。
RC 函数定义为 [1]
\[R_{\mathrm{C}}(x, y) = \frac{1}{2} \int_0^{+\infty} (t + x)^{-1/2} (t + y)^{-1} dt = R_{\mathrm{F}}(x, y, y)\]- 参数:
- x, y类数组对象
实数或复数输入参数。
x
可以是复平面上沿负实轴切割的任意数字。y
不能为空。- outndarray,可选
函数值的可选输出数组
- 返回:
- R标量或 ndarray
积分的值。如果
y
为实数且为负,则返回柯西主值。如果x
和y
均为实数,则返回值为实数。否则,返回值为复数。
注释
RC 是对称积分 RF 的退化病例:
elliprc(x, y) == elliprf(x, y, y)
。它是一个初等函数,而不是一个椭圆积分。该代码基于重叠定理和级数展开实现卡尔森算法,最高到 7 阶。 [2]
在版本 1.8.0 中添加。
参考文献
[1]B. C. Carlson,编,“数学函数数字图书馆”第 19 章,NIST,美国商务部。 https://dlmf.nist.gov/19.16.E6
[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 elliprc
>>> x = 1.2 + 3.4j >>> y = 5. >>> scale = 0.3 + 0.4j >>> elliprc(scale*x, scale*y) (0.5484493976710874-0.4169557678995833j)
>>> elliprc(x, y)/np.sqrt(scale) (0.5484493976710874-0.41695576789958333j)
当这两个参数相同时,积分会特别简单
>>> x = 1.2 + 3.4j >>> elliprc(x, x) (0.4299173120614631-0.3041729818745595j)
>>> 1/np.sqrt(x) (0.4299173120614631-0.30417298187455954j)
另一个简单的情况:第一个参数消失
>>> y = 1.2 + 3.4j >>> elliprc(0, y) (0.6753125346116815-0.47779380263880866j)
>>> np.pi/2/np.sqrt(y) (0.6753125346116815-0.4777938026388088j)
当x和em class="xref py py-obj">y均为正时,我们可以用更基本的函数表示<\(R_C(x,y)\)。(对于<\(0 \le x < y\)的情况,
>>> x = 3.2 >>> y = 6. >>> elliprc(x, y) 0.44942991498453444
>>> np.arctan(np.sqrt((y-x)/x))/np.sqrt(y-x) 0.44942991498453433
对于\(0 \le y < x\)的情况,
>>> x = 6. >>> y = 3.2 >>> elliprc(x,y) 0.4989837501576147
>>> np.log((np.sqrt(x)+np.sqrt(x-y))/np.sqrt(y))/np.sqrt(x-y) 0.49898375015761476