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或-1。参见注释。

signn{1, -1}, 可选

函数前因子的符号。可以是+1或-1。参见注释。

返回:
E浮动

谐波 \(E^p_n(s)\)

注释

椭球函数的几何解释在 [2][3][4] 中解释。signmsignn 参数根据函数的类型控制函数的预因子符号:

K : +1
L : signm
M : signn
N : signm*signn

Added in version 0.15.0.

参考文献

[1]

数学函数数字图书馆 29.12 https://dlmf.nist.gov/29.12

[2]

Bardhan 和 Knepley, “计算科学与再发现:开源实现椭球谐波用于势论问题”, 计算科学讨论 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)