Next: , Previous: Utility Functions, Up: Arithmetic


17.6 Special Functions

— Loadable Function: [a, ierr] = airy (k, z, opt)

Compute Airy functions of the first and second kind, and their derivatives.

           K   Function   Scale factor (if 'opt' is supplied)
          ---  --------   ---------------------------------------
           0   Ai (Z)     exp ((2/3) * Z * sqrt (Z))
           1   dAi(Z)/dZ  exp ((2/3) * Z * sqrt (Z))
           2   Bi (Z)     exp (-abs (real ((2/3) * Z *sqrt (Z))))
           3   dBi(Z)/dZ  exp (-abs (real ((2/3) * Z *sqrt (Z))))

The function call airy (z) is equivalent to airy (0, z).

The result is the same size as z.

If requested, ierr contains the following status information and is the same size as the result.

  1. Normal return.
  2. Input error, return NaN.
  3. Overflow, return Inf.
  4. Loss of significance by argument reduction results in less than half of machine accuracy.
  5. Complete loss of significance by argument reduction, return NaN.
  6. Error—no computation, algorithm termination condition not met, return NaN.

— Loadable Function: [j, ierr] = besselj (alpha, x, opt)
— Loadable Function: [y, ierr] = bessely (alpha, x, opt)
— Loadable Function: [i, ierr] = besseli (alpha, x, opt)
— Loadable Function: [k, ierr] = besselk (alpha, x, opt)
— Loadable Function: [h, ierr] = besselh (alpha, k, x, opt)

Compute Bessel or Hankel functions of various kinds:

besselj
Bessel functions of the first kind. If the argument opt is supplied, the result is multiplied by exp(-abs(imag(x))).
bessely
Bessel functions of the second kind. If the argument opt is supplied, the result is multiplied by exp(-abs(imag(x))).
besseli
Modified Bessel functions of the first kind. If the argument opt is supplied, the result is multiplied by exp(-abs(real(x))).
besselk
Modified Bessel functions of the second kind. If the argument opt is supplied, the result is multiplied by exp(x).
besselh
Compute Hankel functions of the first (k = 1) or second (k = 2) kind. If the argument opt is supplied, the result is multiplied by exp (-I*x) for k = 1 or exp (I*x) for k = 2.

If alpha is a scalar, the result is the same size as x. If x is a scalar, the result is the same size as alpha. If alpha is a row vector and x is a column vector, the result is a matrix with length (x) rows and length (alpha) columns. Otherwise, alpha and x must conform and the result will be the same size.

The value of alpha must be real. The value of x may be complex.

If requested, ierr contains the following status information and is the same size as the result.

  1. Normal return.
  2. Input error, return NaN.
  3. Overflow, return Inf.
  4. Loss of significance by argument reduction results in less than half of machine accuracy.
  5. Complete loss of significance by argument reduction, return NaN.
  6. Error—no computation, algorithm termination condition not met, return NaN.

— Mapping Function: beta (a, b)

For real inputs, return the Beta function,

          beta (a, b) = gamma (a) * gamma (b) / gamma (a + b).

— Mapping Function: betainc (x, a, b)

Return the regularized incomplete Beta function,

          
                                               x
                                    1         /
          betainc (x, a, b) = -----------    | t^(a-1) (1-t)^(b-1) dt.
                               beta (a, b)    /
                                           t=0

If x has more than one component, both a and b must be scalars. If x is a scalar, a and b must be of compatible dimensions.

— Mapping Function: betaln (a, b)

Return the natural logarithm of the Beta function,

          betaln (a, b) = log (beta (a, b))

calculated in a way to reduce the occurrence of underflow.

See also: beta, betainc, gammaln.

— Mapping Function: bincoeff (n, k)

Return the binomial coefficient of n and k, defined as

           /   \
           | n |    n (n-1) (n-2) ... (n-k+1)
           |   |  = -------------------------
           | k |               k!
           \   /

For example:

          bincoeff (5, 2)
               ⇒ 10

In most cases, the nchoosek function is faster for small scalar integer arguments. It also warns about loss of precision for big arguments.

See also: nchoosek.

— Function File: commutation_matrix (m, n)

Return the commutation matrix K(m,n) which is the unique m*n by m*n matrix such that K(m,n) * vec(A) = vec(A') for all m by n matrices A.

If only one argument m is given, K(m,m) is returned.

See Magnus and Neudecker (1988), Matrix Differential Calculus with Applications in Statistics and Econometrics.

— Function File: duplication_matrix (n)

Return the duplication matrix Dn which is the unique n^2 by n*(n+1)/2 matrix such that Dn vech (A) = vec (A) for all symmetric n by n matrices A.

See Magnus and Neudecker (1988), Matrix differential calculus with applications in statistics and econometrics.

— Mapping Function: erf (z)

Compute the error function,

          
                                    z
                                   /
          erf (z) = (2/sqrt (pi)) | e^(-t^2) dt
                                   /
                                t=0

See also: erfc, erfcx, erfinv.

— Mapping Function: erfc (z)

Compute the complementary error function, 1 - erf (z).

See also: erfcx, erf, erfinv.

— Mapping Function: erfcx (z)

Compute the scaled complementary error function,

          exp (z^2) * erfc (x)

See also: erfc, erf, erfinv.

— Mapping Function: erfinv (x)

Compute the inverse error function, i.e., y such that

            erf (y) == x

See also: erf, erfc, erfcx.

— Mapping Function: gamma (z)

Compute the Gamma function,

          
                        infinity
                       /
          gamma (z) = | t^(z-1) exp (-t) dt.
                       /
                    t=0

See also: gammainc, lgamma.

— Mapping Function: gammainc (x, a)
— Mapping Function: gammainc (x, a, "lower")
— Mapping Function: gammainc (x, a, "upper")

Compute the normalized incomplete gamma function,

                                           x
                                 1        /
          gammainc (x, a) = ---------    | exp (-t) t^(a-1) dt
                             gamma (a)    /
                                       t=0

with the limiting value of 1 as x approaches infinity. The standard notation is P(a,x), e.g., Abramowitz and Stegun (6.5.1).

If a is scalar, then gammainc (x, a) is returned for each element of x and vice versa.

If neither x nor a is scalar, the sizes of x and a must agree, and gammainc is applied element-by-element.

By default the incomplete gamma function integrated from 0 to x is computed. If "upper" is given then the complementary function integrated from x to infinity is calculated. It should be noted that

          gammainc (x, a) == 1 - gammainc (x, a, "upper")

See also: gamma, lgamma.

— Function File: l = legendre (n, x)
— Function File: l = legendre (n, x, normalization)

Compute the Legendre function of degree n and order m = 0 ... N. The optional argument, normalization, may be one of "unnorm", "sch", or "norm". The default is "unnorm". The value of n must be a non-negative scalar integer.

If the optional argument normalization is missing or is "unnorm", compute the Legendre function of degree n and order m and return all values for m = 0 ... n. The return value has one dimension more than x.

The Legendre Function of degree n and order m:

           m        m       2  m/2   d^m
          P(x) = (-1) * (1-x  )    * ----  P (x)
           n                         dx^m   n

with Legendre polynomial of degree n:

                    1     d^n   2    n
          P (x) = ------ [----(x - 1)  ]
           n      2^n n!  dx^n

legendre (3, [-1.0, -0.9, -0.8]) returns the matrix:

           x  |   -1.0   |   -0.9   |  -0.8
          ------------------------------------
          m=0 | -1.00000 | -0.47250 | -0.08000
          m=1 |  0.00000 | -1.99420 | -1.98000
          m=2 |  0.00000 | -2.56500 | -4.32000
          m=3 |  0.00000 | -1.24229 | -3.24000

If the optional argument normalization is "sch", compute the Schmidt semi-normalized associated Legendre function. The Schmidt semi-normalized associated Legendre function is related to the unnormalized Legendre functions by the following:

For Legendre functions of degree n and order 0:

            0       0
          SP (x) = P (x)
            n       n

For Legendre functions of degree n and order m:

            m       m          m    2(n-m)! 0.5
          SP (x) = P (x) * (-1)  * [-------]
            n       n               (n+m)!

If the optional argument normalization is "norm", compute the fully normalized associated Legendre function. The fully normalized associated Legendre function is related to the unnormalized Legendre functions by the following:

For Legendre functions of degree n and order m

            m       m          m    (n+0.5)(n-m)! 0.5
          NP (x) = P (x) * (-1)  * [-------------]
            n       n                   (n+m)!

— Mapping Function: lgamma (x)
— Mapping Function: gammaln (x)

Return the natural logarithm of the gamma function of x.

See also: gamma, gammainc.