Special Functions

AUTHORS:

  • David Joyner (2006-13-06): initial version
  • David Joyner (2006-30-10): bug fixes to pari wrappers of Bessel functions, hypergeometric_U
  • William Stein (2008-02): Impose some sanity checks.
  • David Joyner (2008-04-23): addition of elliptic integrals

This module provides easy access to many of Maxima and PARI’s special functions.

Maxima’s special functions package (which includes spherical harmonic functions, spherical Bessel functions (of the 1st and 2nd kind), and spherical Hankel functions (of the 1st and 2nd kind)) was written by Barton Willis of the University of Nebraska at Kearney. It is released under the terms of the General Public License (GPL).

Support for elliptic functions and integrals was written by Raymond Toy. It is placed under the terms of the General Public License (GPL) that governs the distribution of Maxima.

The (usual) Bessel functions and Airy functions are part of the standard Maxima package. Some Bessel functions also are implemented in Pari. (Caution: The Pari versions are sometimes different than the Maxima version.) For example, the K-Bessel function K_\nu (z) can be computed using either Maxima or Pari, depending on an optional variable you pass to bessel_K.

Next, we summarize some of the properties of the functions implemented here.

  • Bessel functions, first defined by the Swiss mathematician Daniel Bernoulli and named after Friedrich Bessel, are canonical solutions y(x) of Bessel’s differential equation:

    x^2 \frac{d^2 y}{dx^2} + x \frac{dy}{dx} + (x^2 - \alpha^2)y = 0,

    for an arbitrary real number \alpha (the order).

  • Another important formulation of the two linearly independent solutions to Bessel’s equation are the Hankel functions H_\alpha^{(1)}(x) and H_\alpha^{(2)}(x), defined by:

    H_\alpha^{(1)}(x) = J_\alpha(x) + i Y_\alpha(x)

    H_\alpha^{(2)}(x) = J_\alpha(x) - i Y_\alpha(x)

    where i is the imaginary unit (and J_* and Y_* are the usual J- and Y-Bessel functions). These linear combinations are also known as Bessel functions of the third kind; they are two linearly independent solutions of Bessel’s differential equation. They are named for Hermann Hankel.

  • Airy function The function Ai(x) and the related function Bi(x), which is also called an Airy function, are solutions to the differential equation

    y'' - xy = 0,

    known as the Airy equation. They belong to the class of ‘Bessel functions of fractional order’. The initial conditions Ai(0) = (\Gamma(2/3)3^{2/3})^{-1}, Ai'(0) = -(\Gamma(1/3)3^{1/3})^{-1} define Ai(x). The initial conditions Bi(0) = 3^{1/2}Ai(0), Bi'(0) = -3^{1/2}Ai'(0) define Bi(x).

    They are named after the British astronomer George Biddell Airy.

  • Spherical harmonics: Laplace’s equation in spherical coordinates is:

    {\frac{1}{r^2}}{\frac{\partial}{\partial r}}   \left(r^2 {\frac{\partial f}{\partial r}}\right) +   {\frac{1}{r^2}\sin\theta}{\frac{\partial}{\partial \theta}}   \left(\sin\theta {\frac{\partial f}{\partial \theta}}\right) +   {\frac{1}{r^2\sin^2\theta}}{\frac{\partial^2 f}{\partial \varphi^2}} = 0.

    Note that the spherical coordinates \theta and \varphi are defined here as follows: \theta is the colatitude or polar angle, ranging from 0\leq\theta\leq\pi and \varphi the azimuth or longitude, ranging from 0\leq\varphi<2\pi.

    The general solution which remains finite towards infinity is a linear combination of functions of the form

    r^{-1-\ell} \cos (m \varphi) P_\ell^m (\cos{\theta} )

    and

    r^{-1-\ell} \sin (m \varphi) P_\ell^m (\cos{\theta} )

    where P_\ell^m are the associated Legendre polynomials, and with integer parameters \ell \ge 0 and m from 0 to \ell. Put in another way, the solutions with integer parameters \ell \ge 0 and - \ell\leq m\leq \ell, can be written as linear combinations of:

    U_{\ell,m}(r,\theta , \varphi ) = r^{-1-\ell} Y_\ell^m( \theta , \varphi )

    where the functions Y are the spherical harmonic functions with parameters \ell, m, which can be written as:

    Y_\ell^m( \theta , \varphi )     = \sqrt{{\frac{(2\ell+1)}{4\pi}}{\frac{(\ell-m)!}{(\ell+m)!}}}       \cdot e^{i m \varphi } \cdot P_\ell^m ( \cos{\theta} ) .

    The spherical harmonics obey the normalisation condition

    \int_{\theta=0}^\pi\int_{\varphi=0}^{2\pi} Y_\ell^mY_{\ell'}^{m'*}\,d\Omega =\delta_{\ell\ell'}\delta_{mm'}\quad\quad d\Omega =\sin\theta\,d\varphi\,d\theta .

  • When solving for separable solutions of Laplace’s equation in spherical coordinates, the radial equation has the form:

    x^2 \frac{d^2 y}{dx^2} + 2x \frac{dy}{dx} + [x^2 - n(n+1)]y = 0.

    The spherical Bessel functions j_n and y_n, are two linearly independent solutions to this equation. They are related to the ordinary Bessel functions J_n and Y_n by:

    j_n(x) = \sqrt{\frac{\pi}{2x}} J_{n+1/2}(x),

    y_n(x) = \sqrt{\frac{\pi}{2x}} Y_{n+1/2}(x)     = (-1)^{n+1} \sqrt{\frac{\pi}{2x}} J_{-n-1/2}(x).

  • For x>0, the confluent hypergeometric function y = U(a,b,x) is defined to be the solution to Kummer’s differential equation

    xy'' + (b-x)y' - ay = 0,

    which satisfies U(a,b,x) \sim x^{-a}, as x\rightarrow \infty. (There is a linearly independent solution, called Kummer’s function M(a,b,x), which is not implemented.)

  • Jacobi elliptic functions can be thought of as generalizations of both ordinary and hyperbolic trig functions. There are twelve Jacobian elliptic functions. Each of the twelve corresponds to an arrow drawn from one corner of a rectangle to another.

    n ------------------- d
    |                     |
    |                     |
    |                     |
    s ------------------- c

    Each of the corners of the rectangle are labeled, by convention, s, c, d and n. The rectangle is understood to be lying on the complex plane, so that s is at the origin, c is on the real axis, and n is on the imaginary axis. The twelve Jacobian elliptic functions are then pq(x), where p and q are one of the letters s,c,d,n.

    The Jacobian elliptic functions are then the unique doubly-periodic, meromorphic functions satisfying the following three properties:

    1. There is a simple zero at the corner p, and a simple pole at the corner q.
    2. The step from p to q is equal to half the period of the function pq(x); that is, the function pq(x) is periodic in the direction pq, with the period being twice the distance from p to q. Also, pq(x) is also periodic in the other two directions as well, with a period such that the distance from p to one of the other corners is a quarter period.
    3. If the function pq(x) is expanded in terms of x at one of the corners, the leading term in the expansion has a coefficient of 1. In other words, the leading term of the expansion of pq(x) at the corner p is x; the leading term of the expansion at the corner q is 1/x, and the leading term of an expansion at the other two corners is 1.

    We can write

    pq(x)=\frac{pr(x)}{qr(x)}

    where p, q, and r are any of the letters s, c, d, n, with the understanding that ss=cc=dd=nn=1.

    Let

    u=\int_0^\phi \frac{d\theta} {\sqrt {1-m \sin^2 \theta}}

    Then the Jacobi elliptic function sn(u) is given by

    {sn}\; u = \sin \phi

    and cn(u) is given by

    {cn}\; u = \cos \phi

    and

    {dn}\; u = \sqrt {1-m\sin^2 \phi}.

    To emphasize the dependence on m, one can write sn(u,m) for example (and similarly for cn and dn). This is the notation used below.

    For a given k with 0 < k < 1 they therefore are solutions to the following nonlinear ordinary differential equations:

    • \mathrm{sn}\,(x;k) solves the differential equations

      \frac{\mathrm{d}^2 y}{\mathrm{d}x^2} + (1+k^2) y - 2 k^2 y^3 = 0,

      and

      \left(\frac{\mathrm{d} y}{\mathrm{d}x}\right)^2 = (1-y^2) (1-k^2 y^2).

    • \mathrm{cn}\,(x;k) solves the differential equations

      \frac{\mathrm{d}^2 y}{\mathrm{d}x^2} + (1-2k^2) y + 2 k^2 y^3 = 0,

      and \left(\frac{\mathrm{d} y}{\mathrm{d}x}\right)^2 = (1-y^2) (1-k^2 + k^2 y^2).

    • \mathrm{dn}\,(x;k) solves the differential equations

      \frac{\mathrm{d}^2 y}{\mathrm{d}x^2} - (2 - k^2) y + 2 y^3 = 0,

      and \left(\frac{\mathrm{d} y}{\mathrm{d}x}\right)^2= y^2 (1 - k^2 - y^2).

      If K(m) denotes the complete elliptic integral of the first kind (denoted elliptic_kc), the elliptic functions sn (x,m) and cn (x,m) have real periods 4K(m), whereas dn (x,m) has a period 2K(m). The limit m\rightarrow 0 gives K(0) = \pi/2 and trigonometric functions: sn(x, 0) = \sin x, cn(x, 0) = \cos x, dn(x, 0) = 1. The limit m \rightarrow 1 gives K(1) \rightarrow \infty and hyperbolic functions: sn(x, 1) = \tanh x, cn(x, 1) = \mbox{\rm sech} x, dn(x, 1) = \mbox{\rm sech} x.

    • The incomplete elliptic integrals (of the first kind, etc.) are:

      \begin{array}{c} \displaystyle\int_0^\phi \frac{1}{\sqrt{1 - m\sin(x)^2}}\, dx,\\ \displaystyle\int_0^\phi \sqrt{1 - m\sin(x)^2}\, dx,\\ \displaystyle\int_0^\phi \frac{\sqrt{1-mt^2}}{\sqrt(1 - t^2)}\, dx,\\ \displaystyle\int_0^\phi \frac{1}{\sqrt{1 - m\sin(x)^2\sqrt{1 - n\sin(x)^2}}}\, dx, \end{array}

      and the complete ones are obtained by taking \phi =\pi/2.

REFERENCES:

TODO: Resolve weird bug in commented out code in hypergeometric_U below.

AUTHORS:

  • David Joyner and William Stein

Added 16-02-2008 (wdj): optional calls to scipy and replace all ‘#random’ by ‘...’ (both at the request of William Stein)

Warning

SciPy’s versions are poorly documented and seem less accurate than the Maxima and Pari versions.

class sage.functions.special.Bessel(nu, typ='J', algorithm='pari', prec=53)

A class implementing the I, J, K, and Y Bessel functions.

EXAMPLES:

sage: g = Bessel(2); g
J_{2}
sage: print g
J-Bessel function of order 2
sage: g.plot(0,10)
order()

Returns the order of this Bessel function.

TEST:

sage: a = Bessel(3,'K')
sage: a.order()
3
plot(a, b)

Enables easy plotting of all the Bessel functions directly from the Bessel class.

TESTS:

sage: plot(Bessel(2),3,4)
sage: Bessel(2).plot(3,4)
sage: P = Bessel(2,'I').plot(1,5)
sage: P += Bessel(2,'J').plot(1,5)
sage: P += Bessel(2,'K').plot(1,5)
sage: P += Bessel(2,'Y',algorithm='maxima').plot(1,5) # default algorithm Pari not available for this one
sage: show(P)
prec()

Returns the precision (in number of bits) used to represent this Bessel function.

TESTS:

sage: a = Bessel(3,'K')
sage: a.prec()
53
sage: B = Bessel(20,prec=100); B
J_{20}
sage: B.prec()
100
system()

Returns the package used, e.g. Maxima, Pari, or SciPy, to compute with this Bessel function.

TESTS:

sage: Bessel(20,algorithm='maxima').system()
'maxima'
sage: Bessel(20,prec=100).system()
'pari'
type()

Returns the type of this Bessel object.

TEST:

sage: a = Bessel(3,'K')
sage: a.type()
'K'
class sage.functions.special.EllipticE

Bases: sage.functions.special.MaximaFunction

This returns the value of the “incomplete elliptic integral of the second kind,”

\int_0^\phi \sqrt{1 - m\sin(x)^2}\, dx,

i.e., integrate(sqrt(1 - m*sin(x)^2), x, 0, phi). Taking \phi
= \pi/2 gives elliptic_ec.

EXAMPLES:

sage: z = var("z")
sage: elliptic_e(z, 1)
sin(z)
sage: elliptic_e(z, 0)
z
sage: elliptic_e(0.5, 0.1)
0.498011394499

sage: loads(dumps(elliptic_e))
elliptic_e
class sage.functions.special.EllipticEC

Bases: sage.functions.special.MaximaFunction

This returns the value of the “complete elliptic integral of the second kind,”

\int_0^{\pi/2} \sqrt{1 - m\sin(x)^2}\, dx.

EXAMPLES:

sage: elliptic_ec(0.1)
1.5307576369
sage: elliptic_ec(x).diff()
1/2*(elliptic_ec(x) - elliptic_kc(x))/x

sage: loads(dumps(elliptic_ec))
elliptic_ec
class sage.functions.special.EllipticEU

Bases: sage.functions.special.MaximaFunction

This returns the value of the “incomplete elliptic integral of the second kind,”

\int_0^u \mathrm{dn}(x,m)^2\, dx = \int_0^\tau
{\sqrt{1-m x^2}\over\sqrt{1-x^2}}\, dx.

where \tau = \mathrm{sn}(u, m).

EXAMPLES:

sage: elliptic_eu (0.5, 0.1)
0.496054551287
class sage.functions.special.EllipticF

Bases: sage.functions.special.MaximaFunction

This returns the value of the “incomplete elliptic integral of the first kind,”

\int_0^\phi \frac{dx}{\sqrt{1 - m\sin(x)^2}},

i.e., integrate(1/sqrt(1 - m*sin(x)^2), x, 0, phi). Taking \phi = \pi/2 gives elliptic_kc.

EXAMPLES:

sage: z = var("z")
sage: elliptic_f (z, 0)
z
sage: elliptic_f (z, 1)
log(tan(1/4*pi + 1/2*z))
sage: elliptic_f (0.2, 0.1)
0.200132506748
class sage.functions.special.EllipticKC

Bases: sage.functions.special.MaximaFunction

This returns the value of the “complete elliptic integral of the first kind,”

\int_0^{\pi/2} \frac{dx}{\sqrt{1 - m\sin(x)^2}}.

EXAMPLES:

sage: elliptic_kc(0.5)
1.8540746773
sage: elliptic_f(RR(pi/2), 0.5)
1.8540746773
class sage.functions.special.EllipticPi

Bases: sage.functions.special.MaximaFunction

This returns the value of the “incomplete elliptic integral of the third kind,”

\int_0^\phi \frac{dx}{(1 - n\sin(x)^2)\sqrt{1 -
m\sin(x)^2}}.

EXAMPLES:

sage: elliptic_pi(0.1, 0.2, 0.3)
0.200665068221
class sage.functions.special.MaximaFunction(name, nargs=2, conversions={})

Bases: sage.symbolic.function.BuiltinFunction

EXAMPLES:

sage: from sage.functions.special import MaximaFunction
sage: f = MaximaFunction("jacobi_sn")
sage: f(1,1)
tanh(1)
sage: f(1/2,1/2).n()
0.470750473655657
sage.functions.special.airy_ai(x)

The function Ai(x) and the related function Bi(x), which is also called an Airy function, are solutions to the differential equation

y'' - xy = 0,

known as the Airy equation. The initial conditions Ai(0) = (\Gamma(2/3)3^{2/3})^{-1}, Ai'(0) = -(\Gamma(1/3)3^{1/3})^{-1} define Ai(x). The initial conditions Bi(0) = 3^{1/2}Ai(0), Bi'(0) = -3^{1/2}Ai'(0) define Bi(x).

They are named after the British astronomer George Biddell Airy. They belong to the class of “Bessel functions of fractional order”.

EXAMPLES:

sage: airy_ai(1.0)        # last few digits are random
0.135292416312881400
sage: airy_bi(1.0)        # last few digits are random
1.20742359495287099

REFERENCE:

sage.functions.special.airy_bi(x)

The function Ai(x) and the related function Bi(x), which is also called an Airy function, are solutions to the differential equation

y'' - xy = 0,

known as the Airy equation. The initial conditions Ai(0) = (\Gamma(2/3)3^{2/3})^{-1}, Ai'(0) = -(\Gamma(1/3)3^{1/3})^{-1} define Ai(x). The initial conditions Bi(0) = 3^{1/2}Ai(0), Bi'(0) = -3^{1/2}Ai'(0) define Bi(x).

They are named after the British astronomer George Biddell Airy. They belong to the class of “Bessel functions of fractional order”.

EXAMPLES:

sage: airy_ai(1)        # last few digits are random
0.135292416312881400
sage: airy_bi(1)        # last few digits are random
1.20742359495287099

REFERENCE:

sage.functions.special.bessel_I(nu, z, algorithm='pari', prec=53)

Implements the “I-Bessel function”, or “modified Bessel function, 1st kind”, with index (or “order”) nu and argument z.

INPUT:

  • nu - a real (or complex, for pari) number
  • z - a real (positive) algorithm - “pari” or “maxima” or “scipy” prec - real precision (for Pari only)

DEFINITION:

Maxima:
                 inf
                ====   - nu - 2 k  nu + 2 k
                \     2          z
                 >    -------------------
                /     k! Gamma(nu + k + 1)
                ====
                k = 0

Pari:

                 inf
                ====   - 2 k  2 k
                \     2      z    Gamma(nu + 1)
                 >    -----------------------
                /       k! Gamma(nu + k + 1)
                ====
                k = 0

Sometimes bessel_I(nu,z) is denoted I_nu(z) in the literature.

Warning

In Maxima (the manual says) i0 is deprecated but bessel_i(0,*) is broken. (Was fixed in recent CVS patch though.)

EXAMPLES:

sage: bessel_I(1,1,"pari",500)
0.565159103992485027207696027609863307328899621621092009480294489479255640964371134092664997766814410064677886055526302676857637684917179812041131208121
sage: bessel_I(1,1)
0.565159103992485
sage: bessel_I(2,1.1,"maxima")  
0.16708949925104...
sage: bessel_I(0,1.1,"maxima") 
1.32616018371265...
sage: bessel_I(0,1,"maxima")   
1.2660658777520...
sage: bessel_I(1,1,"scipy")
0.565159103992...
sage.functions.special.bessel_J(nu, z, algorithm='pari', prec=53)

Return value of the “J-Bessel function”, or “Bessel function, 1st kind”, with index (or “order”) nu and argument z.

Defn:
Maxima:
                 inf
                ====          - nu - 2 k  nu + 2 k
                \     (-1)^k 2           z
                 >    -------------------------
                /        k! Gamma(nu + k + 1)
                ====
                k = 0

Pari:

                 inf
                ====          - 2k    2k
                \     (-1)^k 2      z    Gamma(nu + 1)
                 >    ----------------------------
                /         k! Gamma(nu + k + 1)
                ====
                k = 0

Sometimes bessel_J(nu,z) is denoted J_nu(z) in the literature.

Warning

Inaccurate for small values of z.

EXAMPLES:

sage: bessel_J(2,1.1)
0.136564153956658
sage: bessel_J(0,1.1)
0.719622018527511
sage: bessel_J(0,1) 
0.765197686557967
sage: bessel_J(0,0)
1.00000000000000
sage: bessel_J(0.1,0.1)
0.777264368097005

We check consistency of PARI and Maxima:

sage: n(bessel_J(3,10,"maxima"))
0.0583793793051...
sage: n(bessel_J(3,10,"pari"))  
0.0583793793051868
sage: bessel_J(3,10,"scipy")
0.0583793793052...
sage.functions.special.bessel_K(nu, z, algorithm='pari', prec=53)

Implements the “K-Bessel function”, or “modified Bessel function, 2nd kind”, with index (or “order”) nu and argument z. Defn:

 pi*(bessel_I(-nu, z) - bessel_I(nu, z))
----------------------------------------
             2*sin(pi*nu)

if nu is not an integer and by taking a limit otherwise.

Sometimes bessel_K(nu,z) is denoted K_nu(z) in the literature. In Pari, nu can be complex and z must be real and positive.

EXAMPLES:

sage: bessel_K(3,2,"scipy")
0.64738539094...
sage: bessel_K(3,2)
0.64738539094...
sage: bessel_K(1,1)
0.60190723019...
sage: bessel_K(1,1,"pari",10)
0.60
sage: bessel_K(1,1,"pari",100)
0.60190723019723457473754000154
sage.functions.special.bessel_Y(nu, z, algorithm='maxima', prec=53)

Implements the “Y-Bessel function”, or “Bessel function of the 2nd kind”, with index (or “order”) nu and argument z.

Note

Currently only prec=53 is supported.

Defn:

 cos(pi n)*bessel_J(nu, z) - bessel_J(-nu, z)
-------------------------------------------------
                  sin(nu*pi)

if nu is not an integer and by taking a limit otherwise.

Sometimes bessel_Y(n,z) is denoted Y_n(z) in the literature.

This is computed using Maxima by default.

EXAMPLES:

sage: bessel_Y(2,1.1,"scipy")
-1.4314714939...
sage: bessel_Y(2,1.1)   
-1.4314714939590...
sage: bessel_Y(3.001,2.1) 
-1.0299574976424...

Note

Adding ‘0’+ inside sage_eval as a temporary bug work-around.

sage.functions.special.elliptic_j(z)

Returns the elliptic modular j-function evaluated at z.

INPUT:

  • z (complex) – a complex number with positive imaginary part.

OUTPUT:

(complex) The value of j(z).

ALGORITHM:

Calls the pari function ellj().

AUTHOR:

John Cremona

EXAMPLES:

sage: elliptic_j(CC(i))
1728.00000000000
sage: elliptic_j(sqrt(-2.0))
8000.00000000000
sage: z = ComplexField(100)(1,sqrt(11))/2
sage: elliptic_j(z)
-32768.000...
sage: elliptic_j(z).real().round()
-32768
sage.functions.special.error_fcn(t)

The complementary error function \frac{2}{\sqrt{\pi}}\int_t^\infty e^{-x^2} dx (t belongs to RR). This function is currently always evaluated immediately.

EXAMPLES:

sage: error_fcn(6)
2.15197367124989e-17
sage: error_fcn(RealField(100)(1/2))
0.47950012218695346231725334611

Note this is literally equal to 1 - erf(t):

sage: 1 - error_fcn(0.5)
0.520499877813047
sage: erf(0.5)
0.520499877813047
sage.functions.special.exp_int(t)

The exponential integral \int_t^\infty e^{-x}/x dx (t belongs to RR). This function is deprecated - please use Ei or exponential_integral_1 as needed instead.

EXAMPLES:

sage: exp_int(6)
doctest:...: DeprecationWarning: The method expint() is deprecated. Use -Ei(-x) or exponential_integral_1(x) as needed instead.
0.000360082452162659
sage.functions.special.hypergeometric_U(alpha, beta, x, algorithm='pari', prec=53)

Default is a wrap of Pari’s hyperu(alpha,beta,x) function. Optionally, algorithm = “scipy” can be used.

The confluent hypergeometric function y = U(a,b,x) is defined to be the solution to Kummer’s differential equation

xy'' + (b-x)y' - ay = 0.

This satisfies U(a,b,x) \sim x^{-a}, as x\rightarrow \infty, and is sometimes denoted x^{-a}2_F_0(a,1+a-b,-1/x). This is not the same as Kummer’s M-hypergeometric function, denoted sometimes as _1F_1(alpha,beta,x), though it satisfies the same DE that U does.

Warning

In the literature, both are called “Kummer confluent hypergeometric” functions.

EXAMPLES:

sage: hypergeometric_U(1,1,1,"scipy")
0.596347362323...
sage: hypergeometric_U(1,1,1)  
0.59634736232319...
sage: hypergeometric_U(1,1,1,"pari",70) 
0.59634736232319407434...
sage.functions.special.inverse_jacobi(sym, x, m)

Here sym = “pq”, where p,q in c,d,n,s. This returns the value of the inverse Jacobi function pq^{-1}(x,m). There are a total of 12 functions described by this.

EXAMPLES:

sage: jacobi("sn",1/2,1/2)
jacobi_sn(1/2, 1/2)
sage: float(jacobi("sn",1/2,1/2))
0.4707504736556572
sage: float(inverse_jacobi("sn",0.47,1/2))
0.49909823132221959
sage: float(inverse_jacobi("sn",0.4707504,0.5))
0.49999991146655481
sage: P = plot(inverse_jacobi('sn', x, 0.5), 0, 1, plot_points=20)

Now to view this, just type show(P).

sage.functions.special.jacobi(sym, x, m)

Here sym = “pq”, where p,q in c,d,n,s. This returns the value of the Jacobi function pq(x,m), as described in the documentation for Sage’s “special” module. There are a total of 12 functions described by this.

EXAMPLES:

sage: jacobi("sn",1,1)
tanh(1)
sage: jacobi("cd",1,1/2)
jacobi_cd(1, 1/2)
sage: RDF(jacobi("cd",1,1/2))
0.724009721659
sage: RDF(jacobi("cn",1,1/2)); RDF(jacobi("dn",1,1/2)); RDF(jacobi("cn",1,1/2)/jacobi("dn",1,1/2))
0.595976567672
0.823161001632
0.724009721659
sage: jsn = jacobi("sn",x,1)
sage: P = plot(jsn,0,1)

To view this, type P.show().

sage.functions.special.lngamma(t)

This method is deprecated, please use log_gamma() instead.

See the log_gamma() method for documentation and examples.

EXAMPLES:

sage: lngamma(RR(6))
doctest:...: DeprecationWarning: The method lngamma() is deprecated. Use log_gamma() instead.
4.78749174278205
sage.functions.special.log_gamma(t)

The principal branch of the logarithm of the Gamma function of t. This function is currently always immediately evaluated for non-symbolic input.

EXAMPLES:

sage: log_gamma(RR(6))
4.78749174278205
sage: log_gamma(6)
4.78749174278205
sage: log_gamma(pari(6))
4.78749174278205
sage: log_gamma(x)
log_gamma(x)
sage.functions.special.meval(x)

Returns x evaluated in Maxima, then returned to Sage. This is used to evaluate several of these special functions.

TEST:

sage: from sage.functions.special import airy_ai
sage: airy_bi(1.0)
1.20742359495
sage.functions.special.spherical_bessel_J(n, var, algorithm='maxima')

Returns the spherical Bessel function of the first kind for integers n >= 1.

Reference: AS 10.1.8 page 437 and AS 10.1.15 page 439.

EXAMPLES:

sage: spherical_bessel_J(2,x)
((3/x^2 - 1)*sin(x) - 3*cos(x)/x)/x
sage: spherical_bessel_J(1, 5.2, algorithm='scipy')
-0.12277149950007...
sage: spherical_bessel_J(1, 3, algorithm='scipy')
0.345677499762355...
sage.functions.special.spherical_bessel_Y(n, var, algorithm='maxima')

Returns the spherical Bessel function of the second kind for integers n -1.

Reference: AS 10.1.9 page 437 and AS 10.1.15 page 439.

EXAMPLES:

sage: x = PolynomialRing(QQ, 'x').gen()
sage: spherical_bessel_Y(2,x)
-((3/x^2 - 1)*cos(x) + 3*sin(x)/x)/x
sage.functions.special.spherical_hankel1(n, var)

Returns the spherical Hankel function of the first kind for integers n > -1, written as a string. Reference: AS 10.1.36 page 439.

EXAMPLES:

sage: spherical_hankel1(2, x)
(I*x^2 - 3*x - 3*I)*e^(I*x)/x^3
sage.functions.special.spherical_hankel2(n, x)

Returns the spherical Hankel function of the second kind for integers n > -1, written as a string. Reference: AS 10.1.17 page 439.

EXAMPLES:

sage: spherical_hankel2(2, x)
(-I*x^2 - 3*x + 3*I)*e^(-I*x)/x^3

Here I = sqrt(-1).

sage.functions.special.spherical_harmonic(m, n, x, y)

Returns the spherical Harmonic function of the second kind for integers n > -1, |m|\leq n. Reference: Merzbacher 9.64.

EXAMPLES:

sage: x,y = var('x,y') 
sage: spherical_harmonic(3,2,x,y)
1/8*sqrt(7)*sqrt(30)*e^(2*I*y)*sin(x)^2*cos(x)/sqrt(pi)
sage: spherical_harmonic(3,2,1,2)
1/8*sqrt(7)*sqrt(30)*e^(4*I)*sin(1)^2*cos(1)/sqrt(pi)

Previous topic

Orthogonal Polynomials

Next topic

Wigner, Clebsch-Gordan, Racah, and Gaunt coefficients

This Page