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

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

   SpiceDouble       dvnorm_c ( ConstSpiceDouble state[6] )

Abstract

   Function to calculate the derivative of the norm of a 3-vector.

Required_Reading

   None.

Keywords

   DERIVATIVES
   MATH
   VECTOR


Brief_I/O

   VARIABLE  I/O  DESCRIPTION
   --------  ---  --------------------------------------------------
   state      I   A 6-vector composed of three coordinates and their
                  derivatives.

Detailed_Input

   state   A double precision 6-vector, the second three
           components being the derivatives of the first three
           with respect to some scalar.

              state =  ( x, dx )
                            --
                            ds

           A common form for 'state' would contain position and
           velocity.

Detailed_Output

   dvnorm_c   The value of d||x|| corresponding to 'state'.
                           ------
                             ds

                                 1/2         2    2    2  1/2
            where ||x|| = < x, x >    =  ( x1 + x2 + x3 )


                      v = ( dx1, dx2, dx3 )
                            ---  ---  ---
                            ds   ds   ds

                 d||x||   < x, v >
                 ------ =  ------     =  < xhat, v >
                   ds            1/2
                          < x, x >

Parameters

   None.

Exceptions

   None.

Files

   None.

Particulars

   A common use for this routine is to calculate the time derivative
   of the radius corresponding to a state vector.

Examples

   Any numerical results shown for this example may differ between
   platforms as the results depend on the SPICE kernels used as input
   and the machine specific arithmetic implementation.

      #include "SpiceUsr.h"
      #include <stdio.h>
      #include <math.h>

      int main()
         {

         SpiceDouble     mag  [3] =
                          { -4., 4., 12. };

         SpiceDouble     x1   [3] =
                          { 1., sqrt(2.), sqrt(3.) };

         SpiceDouble     y   [6];

         /.
         Parallel...
         ./
         y[0] = x1[0] * pow(10., mag[0] );
         y[1] = x1[1] * pow(10., mag[0] );
         y[2] = x1[2] * pow(10., mag[0] );
         y[3] = x1[0];
         y[4] = x1[1];
         y[5] = x1[2];

         printf( "Parallel x, dx/ds         : %f\n", dvnorm_c( y ) );

         /.
         ...anti-parallel...
         ./
         y[0] = x1[0] * pow(10., mag[1] );
         y[1] = x1[1] * pow(10., mag[1] );
         y[2] = x1[2] * pow(10., mag[1] );
         y[3] = -x1[0];
         y[4] = -x1[1];
         y[5] = -x1[2];

         printf( "Anti-parallel x, dx/ds    : %f\n", dvnorm_c( y ) );


         /.
         ...'x' zero vector.
         ./
         y[0] = 0.;
         y[1] = 0.;
         y[2] = 0.;
         y[3] = x1[0] * pow(10., mag[2] );
         y[4] = x1[1] * pow(10., mag[2] );
         y[5] = x1[2] * pow(10., mag[2] );

         printf( "Zero vector x, large dx/ds: %f\n", dvnorm_c( y ) );

         return 0;
         }

   The program outputs:

      Parallel x, dx/ds         :  2.449490
      Anti-parallel x, dx/ds    : -2.449490
      Zero vector x, large dx/ds:  0.000000

Restrictions

   Error free.

   1) If the first three components of 'state' ("x") describes the
      origin (zero vector) the routine returns zero as the
      derivative of the vector norm.

Literature_References

   None.

Author_and_Institution

   Ed Wright     (JPL)

Version

   -CSPICE Version 1.0.0, 04-MAY-2010 (EDW)

Index_Entries

   derivative of 3-vector norm
Wed Apr  5 17:54:33 2017