\(\newcommand{\W}[1]{ \; #1 \; }\) \(\newcommand{\R}[1]{ {\rm #1} }\) \(\newcommand{\B}[1]{ {\bf #1} }\) \(\newcommand{\D}[2]{ \frac{\partial #1}{\partial #2} }\) \(\newcommand{\DD}[3]{ \frac{\partial^2 #1}{\partial #2 \partial #3} }\) \(\newcommand{\Dpow}[2]{ \frac{\partial^{#1}}{\partial {#2}^{#1}} }\) \(\newcommand{\dpow}[2]{ \frac{ {\rm d}^{#1}}{{\rm d}\, {#2}^{#1}} }\)
link_sparse_hessian¶
View page sourceLink to Speed Test Sparse Hessian¶
Syntax¶
link_sparse_hessian
(Prototype¶
extern bool link_sparse_hessian(
size_t size ,
size_t repeat ,
const CppAD::vector<size_t>& row ,
const CppAD::vector<size_t>& col ,
CppAD::vector<double>& x ,
CppAD::vector<double>& hessian ,
size_t& n_color
);
Namespace¶
The function link_sparse_hessian
is in the global namespace,
not the CppAD
namespace.
Method¶
Given a row index vector \(row\) and a second column vector \(col\), the corresponding function \(f : \B{R}^n \rightarrow \B{R}\) is defined by sparse_hes_fun . The non-zero entries in the Hessian of this function have one of the following forms:
for some \(k\) between zero and \(K-1\). All the other terms of the Hessian are zero.
Sparsity Pattern¶
The combination of row and col determine the sparsity pattern for the Hessian that is computed. The calculation of this sparsity pattern, if necessary to compute the Hessian, is intended to be part of the timing for this test.
size¶
The argument size , referred to as \(n\) below, is the dimension of the domain space for \(f(x)\).
repeat¶
The argument repeat is the number of times to repeat the test (with a different value for x corresponding to each repetition).
x¶
The size of x is \(n\); i.e., x . size
() == size .
The input value of the elements of x does not matter.
On output, it has been set to the
argument value for which the function,
or its derivative, is being evaluated.
The value of this vector need not change with each repetition.
row¶
The size of the vector row defines the value \(K\). The input value of its elements does not matter. On output, all the elements of row are between zero and \(n-1\).
col¶
The argument col is a vector with size \(K\). The input value of its elements does not matter. On output, all the elements of col are between zero and \(n-1\).
Row Major¶
The indices row and col are in row major order; i.e.,
for each k < row . size
() -2
row [ k ] <= row [ k +1]
and if row [ k ] == row [ k +1] then
col [ k ] < col [ k +1]
Lower Triangular¶
Only the lower triangle of the Hessian is included.
col [ k ] <= row [ k ]
.
hessian¶
The size of hessian is K . The input value of its elements does not matter. The output value of its elements is the Hessian of the function \(f(x)\). To be more specific, for \(k = 0 , \ldots , K-1\),
n_color¶
The input value of n_color does not matter. On output,
it is the value n_sweep corresponding
to the evaluation of hessian .
This is also the number of colors corresponding to the
coloring method ,
which can be set to colpack ,
and is otherwise cppad
.
double¶
In the case where package is double
,
only the first element of hessian is used and it is actually
the value of \(f(x)\) (derivatives are not computed).