scipy.special.ellip#
- scipy.special.ellip(m, out=None) = <ufunc 'ellip'>#
第二类完全椭圆积分
此函数的定义如下
\[E(m) = \int_0^{\pi/2} [1 - m \sin(t)^2]^{1/2} dt\]- 参数:
- marray_like
定义椭圆积分的参数。
- outndarray, optional
函数值的可选输出数组
- 返回:
- Escalar or ndarray
椭圆积分的值。
另请参见
注释
Cephes [1] 例程 ellpe 的包装器。
对于 m > 0,计算使用近似值,
\[E(m) \approx P(1-m) - (1-m) \log(1-m) Q(1-m),\]其中 \(P\) 和 \(Q\) 为十次多项式。对于 m < 0,使用关系
\[E(m) = E(m/(m - 1)) \sqrt(1-m)\]使用。
根据 \(m\) 的参数化遵循 [2] 中第 17.2 节的内容。还使用了其他根据以下互补参数进行的参数化:\(1 - m\),模角 \(\sin^2(\alpha) = m\) 或模数 \(k^2 = m\),因此请小心,务必选择正确的参数。
勒让德 E 积分通过多种方式与卡尔森的对称 R_D 或 R_G 函数相关 [3]。例如,
\[E(m) = 2 R_G(0, 1-k^2, 1) .\]参考
[1]Cephes 数学函数库,http://www.netlib.org/cephes/
[2]Milton Abramowitz 和 Irene A. Stegun(编)。具有公式、图形和数学表格的数学函数手册。纽约:Dover,1972 年。
[3]NIST 数字数学函数库。http://dlmf.nist.gov/,2020 年 9 月 15 日发布 1.0.28 版。请参阅第 19.25(i) 节 https://dlmf.nist.gov/19.25#i
示例
使用半长轴 a 和半短轴 b 找出椭圆周长。
>>> import numpy as np >>> from scipy import special
>>> a = 3.5 >>> b = 2.1 >>> e_sq = 1.0 - b**2/a**2 # eccentricity squared
然后使用以下内容找出周长
>>> C = 4*a*special.ellipe(e_sq) # circumference formula >>> C 17.868899204378693
当 a 和 b 相同时(意味着偏心率为 0),则周长减小为圆的周长。
>>> 4*a*special.ellipe(0.0) # formula for ellipse with a = b 21.991148575128552 >>> 2*np.pi*a # formula for circle of radius a 21.991148575128552