cpp_jac_sparsity#

View page source

Jacobian Sparsity Patterns#

Syntax#

f.for_jac_sparsity ( pattern_in , pattern_out )
f.rev_jac_sparsity ( pattern_in , pattern_out )

Purpose#

We use \(F : \B{R}^n \rightarrow \B{R}^m\) to denote the function corresponding to the operation sequence stored in f .

for_jac_sparsity#

Fix \(R \in \B{R}^{n \times \ell}\) and define the function

\[J(x) = F^{(1)} ( x ) * R\]

Given a sparsity pattern for \(R\), for_jac_sparsity computes a sparsity pattern for \(J(x)\).

rev_jac_sparsity#

Fix \(R \in \B{R}^{\ell \times m}\) and define the function

\[J(x) = R * F^{(1)} ( x )\]

Given a sparsity pattern for \(R\), rev_jac_sparsity computes a sparsity pattern for \(J(x)\).

x#

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

f#

The object f has prototype

      d_fun f

The object f is not const when using for_jac_sparsity . After a call to for_jac_sparsity , a sparsity pattern for each of the variables in the operation sequence is held in f for possible later use during reverse Hessian sparsity calculations.

pattern_in#

The argument pattern_in has prototype

      const sparse_rc& pattern_in

see cpp_sparse_rc. This is a sparsity pattern for \(R\).

pattern_out#

This argument has prototype

      sparse_rc<SizeVector>& pattern_out

This input value of pattern_out does not matter. Upon return pattern_out is a sparsity pattern for \(J(x)\).

Sparsity for Entire Jacobian#

Suppose that \(R\) is the identity matrix. In this case, pattern_out is a sparsity pattern for \(F^{(1)} ( x )\).

Example#

c++