CSPICE_DVNORM returns the derivative of the vector norm of a 3-vector.
state 6-vector(s), the second three components of the vector(s)
being the derivatives of the first three with respect to
state = ( x, dx )
A common form for 'state' would contain position and
[6,n] = size(state); double = class(state)
dvnorm = cspice_dvnorm(state)
dvnorm the value(s) of d||x|| corresponding to 'state'.
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 >
< x, x >
'dvnorm' returns with the same vectorization measure (N)
[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 6-vectors (6x1 arrays) with the structure
% y = | x |
% | |
% | dx |
% | -- |
% | ds |
% where 'x' is a 3-vector (3x1 array).
% Create 'y' with 'x' of varying magnitudes. Use 'x'
% and '-x' to define the derivative as parallel and
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( 'Anti-parallel x, dx/ds : %f\n', dvnorm(2) )
fprintf( 'Zero vector x, large dx/ds: %f\n', dvnorm(3) )
Parallel x, dx/ds : 2.449490
Anti-parallel x, dx/ds : -2.449490
Zero vector x, large dx/ds: 0.000000
For important details concerning this module's function, please refer to
the CSPICE routine dvnorm_c.
-Mice Version 1.0.1, 09-NOV-2012 (EDW)
Edited I/O section to conform to NAIF standard for Mice documentation.
-Mice Version 1.0.0, 10-MAY-2010 (EDW)
derivative of 3-vector norm