scipy.special.
ellip_harm#
- scipy.special.ellip_harm(h2, k2, n, p, s, signm=1, signn=1)[源代码]#
椭球谐函数 E^p_n(l)
这些函数也称为第一类拉梅函数,是拉梅方程的解
\[(s^2 - h^2)(s^2 - k^2)E''(s) + s(2s^2 - h^2 - k^2)E'(s) + (a - q s^2)E(s) = 0\]其中 \(q = (n+1)n\), 并且 \(a\) 是与解相应的特征值(不返回)。
- 参数:
- h2浮点数
h**2
- k2浮点数
k**2
,应当大于h**2
- n整数
度数
- s浮点数
坐标
- p整数
阶数,可在 [1,2n+1] 范围内
- signm{1, -1},可选
函数前缀符号。可以是 +/-1。参见 Notes。
- signn{1, -1}, 可选
函数前缀符号。可以是 +/-1。参见 Notes。
- 返回:
- E浮点数
谐波 \(E^p_n(s)\)
还可参阅
注意
椭球函数的几何解释在 [2]、[3]、[4] 中进行了说明。根据函数类型,signm 和 signn 参数控制函数前缀符号。
K : +1 L : signm M : signn N : signm*signn
在版本 0.15.0 中添加。
参考
[1]数学函数数字图书馆 29.12 https://dlmf.nist.gov/29.12
[2]Bardhan 和 Knepley,“计算科学和重新发现:用于势论问题的椭球谐波开源实现”,Comput. Sci. Disc. 5, 014006 (2012) DOI:10.1088/1749-4699/5/1/014006。
[3]David J.和 Dechambre P,“用于小型太阳系天体的椭球重力场谐波计算”,第 30-36 页,2000 年
[4]George Dassios,“椭球谐波:理论和应用”,第 418 页,2012 年
示例
>>> from scipy.special import ellip_harm >>> w = ellip_harm(5,8,1,1,2.5) >>> w 2.5
检查这些函数是否确实是 Lame 方程的解
>>> import numpy as np >>> from scipy.interpolate import UnivariateSpline >>> def eigenvalue(f, df, ddf): ... r = (((s**2 - h**2) * (s**2 - k**2) * ddf ... + s * (2*s**2 - h**2 - k**2) * df ... - n * (n + 1)*s**2*f) / f) ... return -r.mean(), r.std() >>> s = np.linspace(0.1, 10, 200) >>> k, h, n, p = 8.0, 2.2, 3, 2 >>> E = ellip_harm(h**2, k**2, n, p, s) >>> E_spl = UnivariateSpline(s, E) >>> a, a_err = eigenvalue(E_spl(s), E_spl(s,1), E_spl(s,2)) >>> a, a_err (583.44366156701483, 6.4580890640310646e-11)