Prev Next

@(@\newcommand{\B}[1]{ {\bf #1} } \newcommand{\R}[1]{ {\rm #1} }@)@
Hessian Sparsity Patterns

Syntax
f.for_hes_sparsity(select_domainselect_rangepattern_out)
f.rev_hes_sparsity(select_domainselect_rangepattern_out)

Purpose
We use @(@ F : \B{R}^n \rightarrow \B{R}^m @)@ to denote the function corresponding to the operation sequence stored in f . Fix a diagonal matrix @(@ D \in \B{R}^{n \times n} @)@, fix a vector @(@ r \in \B{R}^m @)@, and define @[@ H(x) = D (r^\R{T} F)^{(2)} ( x ) D @]@ Given a sparsity pattern for @(@ D @)@ and @(@ r @)@, these routines compute a sparsity pattern for @(@ H(x) @)@.

x
Note that a sparsity pattern for @(@ H(x) @)@ corresponds to the operation sequence stored in f and does not depend on the argument x .

f
This object must have been returned by a previous call to the python d_fun constructor.

select_domain
The argument is a numpy vector with bool elements. It has size n and is a sparsity pattern for the diagonal of @(@ D @)@; i.e., select_domain[j] is true if and only if @(@ D_{j,j} @)@ is possibly non-zero.

select_range
The argument is a numpy vector with bool elements. It has size m and is a sparsity pattern for the vector @(@ r @)@; i.e., select_range[i] is true if and only if @(@ r_i @)@ is possibly non-zero.

pattern_out
This argument must have be a pattern returned by the sparse_rc constructor. This input value of pattern_out does not matter. Upon return pattern_out is a sparsity pattern for @(@ H(x) @)@.

Sparsity for Component Wise Hessian
Suppose that @(@ D @)@ is the identity matrix, and only the i-th component of r is possibly non-zero. In this case, pattern_out is a sparsity pattern for @(@ F_i^{(2)} ( x ) @)@.

Example
Python
Input File: lib/python/hes_sparsity.py