Prev | Next |
h = f.ForSparseHes(r, s)
f
.
we define
@[@
\begin{array}{rcl}
H(x)
& = & \partial_x \left[ \partial_u S \cdot F[ x + R \cdot u ] \right]_{u=0}
\\
& = & R^\R{T} \cdot (S \cdot F)^{(2)} ( x ) \cdot R
\end{array}
@]@
Where @(@
R \in \B{R}^{n \times n}
@)@ is a diagonal matrix
and @(@
S \in \B{R}^{1 \times m}
@)@ is a row vector.
Given a
sparsity pattern
for the diagonal of @(@
R
@)@ and the vector @(@
S
@)@,
ForSparseHes
returns a sparsity pattern for the @(@
H(x)
@)@.
f
has prototype
const ADFun<Base> f
f
is
independent
of
the independent variables in @(@
x \in \B{R}^n
@)@,
the sparsity pattern is valid for all values of
(even if it has CondExp
or VecAD
operations).
r
has prototype
const SetVector& r
(see SetVector
below)
If it has elements of type bool
,
its size is @(@
n
@)@.
If it has elements of type std::set<size_t>
,
its size is one and all the elements of
s[0]
are between zero and @(@
n - 1
@)@.
It specifies a
sparsity pattern
for the diagonal of @(@
R
@)@.
The fewer non-zero elements in this sparsity pattern,
the faster the calculation should be and the more sparse
@(@
H(x)
@)@ should be.
s
has prototype
const SetVector& s
(see SetVector
below)
If it has elements of type bool
,
its size is @(@
m
@)@.
If it has elements of type std::set<size_t>
,
its size is one and all the elements of
s[0]
are between zero and @(@
m - 1
@)@.
It specifies a
sparsity pattern
for the vector
S
.
The fewer non-zero elements in this sparsity pattern,
the faster the calculation should be and the more sparse
@(@
H(x)
@)@ should be.
h
has prototype
SetVector& h
(see SetVector
below).
If
h
has elements of type bool
,
its size is @(@
n * n
@)@.
If it has elements of type std::set<size_t>
,
its size is @(@
n
@)@ and all the set elements are between
zero and
n-1
inclusive.
It specifies a
sparsity pattern
for the matrix @(@
H(x)
@)@.
SetVector
must be a SimpleVector
class with
elements of type
bool
or std::set<size_t>
;
see sparsity pattern
for a discussion
of the difference.
The type of the elements of
SetVector
must be the
same as the type of the elements of
r
.
s
provides the information so that
'dead ends' are not included in the sparsity pattern.