{ } Raw JSON

bundles / scipy 1.17.1 / scipy / special / _ellip_harm / ellip_harm

function

scipy.special._ellip_harm:ellip_harm

source: /scipy/special/_ellip_harm.py :7

Signature

def   ellip_harm ( h2 k2 n p s signm = 1 signn = 1 )

Summary

Ellipsoidal harmonic functions E^p_n(l)

Extended Summary

These are also known as Lamé functions of the first kind, and are solutions to the Lamé equation:

where and is the eigenvalue (not returned) corresponding to the solutions.

Parameters

h2 : float

h**2

k2 : float

k**2; should be larger than h**2

n : int

Degree

s : float

Coordinate

p : int

Order, can range between [1,2n+1]

signm : {1, -1}, optional

Sign of prefactor of functions. Can be +/-1. See Notes.

signn : {1, -1}, optional

Sign of prefactor of functions. Can be +/-1. See Notes.

Returns

E : float

the harmonic

Notes

The geometric interpretation of the ellipsoidal functions is explained in [2], [3], [4]. The signm and signn arguments control the sign of prefactors for functions according to their type

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

Examples

from scipy.special import ellip_harm
w = ellip_harm(5,8,1,1,2.5)
w
Check that the functions indeed are solutions to the Lamé equation:
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

See also

ellip_harm_2
ellip_normal

Aliases

  • scipy.special.ellip_harm