Index of Functions: A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X 
Index Page
chbigr_c

Table of contents
Procedure
Abstract
Required_Reading
Keywords
Brief_I/O
Detailed_Input
Detailed_Output
Parameters
Exceptions
Files
Particulars
Examples
Restrictions
Literature_References
Author_and_Institution
Version
Index_Entries

Procedure

   chbigr_c ( Chebyshev expansion integral ) 

   void chbigr_c ( SpiceInt            degp,
                   ConstSpiceDouble    cp     [],
                   ConstSpiceDouble    x2s    [2],
                   SpiceDouble         x,
                   SpiceDouble       * p,
                   SpiceDouble       * itgrlp     )

Abstract

   Evaluate an indefinite integral of a Chebyshev expansion at a
   specified point `x' and return the value of the input expansion at
   `x' as well. The constant of integration is selected to make the
   integral zero when `x' equals the abscissa value x2s[0].

Required_Reading

   None.

Keywords

   CHEBYSHEV
   EPHEMERIS
   INTEGRAL
   MATH


Brief_I/O

   VARIABLE  I/O  DESCRIPTION
   --------  ---  --------------------------------------------------
   degp       I   Degree of input Chebyshev expansion.
   cp         I   Chebyshev coefficients of input expansion.
   x2s        I   Transformation parameters.
   x          I   Abscissa value of evaluation.
   p          O   Input expansion evaluated at `x'.
   itgrlp     O   Integral evaluated at `x'.

Detailed_Input

   degp        is the degree of the input Chebyshev expansion.

   cp          is an array containing the coefficients of the input
               Chebyshev expansion. The coefficient of the i'th
               Chebyshev polynomial is contained in element cp[i],
               for i = 0 : degp.

   x2s         is an array containing the "transformation parameters"
               of the domain of the expansion. Element x2s[0]
               contains the midpoint of the interval on which the
               input expansion is defined; x2s[1] is one-half of the
               length of this interval; this value is called the
               interval's "radius."

               The input expansion defines a function f(x) on the
               interval

                  [ x2s[0]-x2s[1],  x2s[0]+x2s[1] ]

               as follows:

                  Define s = ( x - x2s[0] ) / x2s[1]


                                    degp
                                    __
                                    \
                     f(x) = g(s)  = /  cp[k]  T (s)
                                    --         k
                                    k=0


   x           is the abscissa value at which the function defined by
               the input expansion and its integral are to be
               evaluated. Normally `x' should lie in the closed
               interval

                  [ x2s[0]-x2s[1],  x2s[0]+x2s[1] ]

               See the -Restrictions section below.

Detailed_Output

   p,
   itgrlp      Define `s' and f(x) as above in the description of the
               input argument `x2s'. Then `p' is f(x), and `itgrlp' is
               an indefinite integral of f(x), evaluated at `x'.

               The indefinite integral satisfies

                  d(itgrlp)/dx     = f(x)

               and

                  itgrlp( x2s[0] ) = 0

Parameters

   None.

Exceptions

   1)  If the input degree is negative, the error SPICE(INVALDDEGREE) is
       signaled by a routine in the call tree of this routine.

   2)  If the input interval radius is non-positive, the error
       SPICE(INVALIDRADIUS) is signaled by a routine in the call tree of
       this routine.

Files

   None.

Particulars

   Let

      T ,  n = 0, ...
       n

   represent the nth Chebyshev polynomial of the first kind:

      T (x) = cos( n*arccos(x) )
       n

   The input coefficients represent the Chebyshev expansion

                     degp
                     __
                     \
      f(x) = g(s)  = /  cp[k]  T (s)
                     --         k
                     k=0

   where

      s = ( x - x2s[0] ) / x2s[1]

   This routine evaluates and returns the value at `x' of an
   indefinite integral F(x), where

      dF(x)/dx    = f(x)  for all `x' in
                          [x2s[0]-x2s[0], x2s[0]+x2s[1]]

      F( x2s[0] ) = 0

   The value at `x' of the input expansion

      f(x)

   is returned as well.

   Note that numerical problems may result from applying this
   routine to abscissa values outside of the interval defined
   by the input parameters x2s[*]. See the -Restrictions section.

   To evaluate Chebyshev expansions and their derivatives, use the
   CSPICE routines chbint_c or chbder_c.

   This routine supports the SPICELIB SPK type 20 and PCK type 20
   evaluators SPKE20 and PCKE20.

Examples

   The numerical results shown for this example may differ across
   platforms. The results depend on the SPICE kernels used as
   input, the compiler and supporting libraries, and the machine
   specific arithmetic implementation.

   1) Let the domain of a polynomial to be evaluated be the
      closed interval

         [20, 30]

      Let the input expansion represent the polynomial

                           6
         f(x)  = g(s) = 5*s

      where

         s     = (x - 20)/10

      Let F(x) be an indefinite integral of f(x) such that

         F(20) = 0

      Evaluate

         f(30) and F(30)


      Example code begins here.


      /.
         Program chbigr_ex1
      ./
      #include <stdio.h>
      #include "SpiceUsr.h"

      int main( )
      {

         /.
         Local variables
         ./
         SpiceDouble          cp     [6];
         SpiceDouble          x;
         SpiceDouble          x2s    [2];
         SpiceDouble          p;
         SpiceDouble          itgrlp;

         SpiceInt             degp;

         /.
         Let our domain be the interval [10, 30].
         ./
         x2s[0] = 20.0;
         x2s[1] = 10.0;

         /.
         Assign the expansion coefficients.
         ./
         degp  = 5;

         cp[0] = 0.0;
         cp[1] = 3.75;
         cp[2] = 0.0;
         cp[3] = 1.875;
         cp[4] = 0.0;
         cp[5] = 0.375;

         /.
         Evaluate the function and its integral at x = 30.
         ./
         x = 30.0;

         chbigr_c ( degp, cp, x2s, x, &p, &itgrlp );

         /.
         We make the change of variables

            s(x) = (1/10) * ( x - 20 )

         The expansion represents the polynomial

                             5
            f(x) = g(s) = 6*s

         An indefinite integral of the expansion is

                                        6
            F(x) = G(s) * dx/ds = 10 * s

         where `G' is defined on the interval [-1, 1]. The result
         should be (due to the change of variables)

              (G(1)  - G(0) ) * dx/ds

            = (F(30) - F(20)) * 10

            = 10

         The value of the expansion at `x' should be

            f(30) = g(1) = 6
         ./
         printf( "ITGRLP = %f\n", itgrlp );
         printf( "P      = %f\n", p );

         return ( 0 );
      }


      When this program was executed on a Mac/Intel/cc/64-bit
      platform, the output was:


      ITGRLP = 10.000000
      P      = 6.000000

Restrictions

   1)  The value (x-x2s[0]) / x2s[1] normally should lie within the
       interval -1:1 inclusive, that is, the closed interval
       [-1, 1]. Chebyshev polynomials increase rapidly in magnitude
       as a function of distance of abscissa values from this
       interval.

       In typical SPICE applications, where the input expansion
       represents position, velocity, or orientation, abscissa
       values that map to points outside of [-1, 1] due to round-off
       error will not cause numeric exceptions.

   2)  No checks for floating point overflow are performed.

   3)  Significant accumulated round-off error can occur for input
       expansions of excessively high degree. This routine imposes
       no limits on the degree of the input expansion; users must
       verify that the requested computation provides appropriate
       accuracy.

Literature_References

   [1]  W. Press, B. Flannery, S. Teukolsky and W. Vetterling,
        "Numerical Recipes -- The Art of Scientific Computing,"
        chapter 5.4, "Recurrence Relations and Clenshaw's Recurrence
        Formula," p 161, Cambridge University Press, 1986.

   [2]  "Chebyshev polynomials," Wikipedia, The Free Encyclopedia.
        Retrieved 01:23, November 23, 2013, from
        http://en.wikipedia.org/w/index.php?title=
        Chebyshev_polynomials&oldid=574881046

Author_and_Institution

   J. Diaz del Rio     (ODC Space)

Version

   -CSPICE Version 1.0.0, 19-JUL-2021 (JDR)

Index_Entries

   integral of chebyshev_polynomial_expansion
   integrate chebyshev_polynomial_expansion
Fri Dec 31 18:41:02 2021