CSPICE_DVNORM returns the derivative of the vector norm of a 3vector.
Given:
state 6vector(s), the second three components of the vector(s)
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.
[6,n] = size(state); double = class(state)
the call:
dvnorm = cspice_dvnorm(state)
returns:
dvnorm the value(s) of dx 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
dx < x, v >
 =  = < xhat, v >
ds 1/2
< x, x >
'dvnorm' returns with the same vectorization measure (N)
as 'state'.
[1,n] = size(dvnorm); double = class(dvnorm)
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.
%
% Create several 6vectors (6x1 arrays) with the structure
%
% y =  x 
%  
%  dx 
%   
%  ds 
%
% where 'x' is a 3vector (3x1 array).
%
%
% Create 'y' with 'x' of varying magnitudes. Use 'x'
% and 'x' to define the derivative as parallel and
% antiparallel.
%
mag = [ 4, 4, 12 ];
x = [ 1, sqrt(2), sqrt(3 ) ]';
y = [ [x * 10^mag(1); x], ...
[x * 10^mag(2); x], ...
[ zeros(3,1); x * 10^mag(3) ] ];
%
% Calculate the derivative of the vector norms with respect
% to 's'.
%
dvnorm = cspice_dvnorm( y );
fprintf( 'Parallel x, dx/ds : %f\n', dvnorm(1) )
fprintf( 'Antiparallel x, dx/ds : %f\n', dvnorm(2) )
fprintf( 'Zero vector x, large dx/ds: %f\n', dvnorm(3) )
Matlab outputs:
Parallel x, dx/ds : 2.449490
Antiparallel x, dx/ds : 2.449490
Zero vector x, large dx/ds: 0.000000
None.
For important details concerning this module's function, please refer to
the CSPICE routine dvnorm_c.
MICE.REQ
Mice Version 1.0.1, 09NOV2012 (EDW)
Edited I/O section to conform to NAIF standard for Mice documentation.
Mice Version 1.0.0, 10MAY2010 (EDW)
derivative of 3vector norm
