\(\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}} }\)
atomic_two_for_sparse_hes¶
View page sourceAtomic Forward Hessian Sparsity Patterns¶
Syntax¶
for_sparse_hes
( vx , r , s , h , x )Deprecated 2016-06-27¶
ok = afun . for_sparse_hes
( vx , r , s , h )
Purpose¶
This function is used by ForSparseHes to compute Hessian sparsity patterns. If you are using ForSparseHes , one of the versions of this virtual function must be defined by the atomic_user class.
Given a Sparsity Pattern for a diagonal matrix \(R \in \B{R}^{n \times n}\), and a row vector \(S \in \B{R}^{1 \times m}\), this routine computes the sparsity pattern for
Implementation¶
If you are using and ForSparseHes , this virtual function must be defined by the atomic_user class.
vx¶
The argument vx has prototype
const CppAD:vector<bool>&
vx
vx . size
() == n , and
for \(j = 0 , \ldots , n-1\),
vx [ j ] is true if and only if
ax [ j ] is a Variable
or dynamic parameter
in the corresponding call to
afun ( ax , ay )
r¶
This argument has prototype
const CppAD:vector<bool>&
r
and is a atomic_sparsity pattern for the diagonal of \(R \in \B{R}^{n \times n}\).
s¶
The argument s has prototype
const CppAD:vector<bool>&
s
and its size is m . It is a sparsity pattern for \(S \in \B{R}^{1 \times m}\).
h¶
This argument has prototype
atomic_sparsity & h
The input value of its elements are not specified (must not matter). Upon return, h is a atomic_sparsity pattern for \(H(x) \in \B{R}^{n \times n}\) which is defined above.
x¶
The argument has prototype
const CppAD::vector<
Base >& x
and size is equal to the n . This is the Value corresponding to the parameters in the vector ax (when the atomic function was called). To be specific, if
if
( Parameter
( ax [ i ]) == true
)Value
( ax [ i ] );else
CppAD::numeric_limits<
Base >:: quiet_NaN
();The version of this function with out the x argument is deprecated; i.e., you should include the argument even if you do not use it.