Jacobian Sparsity Pattern: Reverse Mode
Keywords: jacobian sparsity pattern: reverse mode Revsparsejac sparse syntax purpose f x q transpose dependency r false true s vectorset entire pattern example

| Prev | Next |  |  |  |  |  |  |

Jacobian Sparsity Pattern: Reverse Mode
Syntax
`s = f.RevSparseJac(q, r)
` `s = f.RevSparseJac(q, r, transpose, dependency)`
Purpose
We use F : B n → B m to denote the AD function corresponding to `f` . For a fixed matrix R ∈ B q × m , the Jacobian of R * F ( x ) with respect to x is S ( x ) = R * F ( 1 ) ( x ) Given a sparsity pattern for R , `RevSparseJac` returns a sparsity pattern for the S ( x ) .
f
The object `f` has prototype `
ADFun<Base> f
`
x
the sparsity pattern is valid for all values of the independent variables in x ∈ B n (even if it has CondExp or VecAD operations).
q
The argument `q` has prototype `
size_t q
` It specifies the number of rows in R ∈ B q × m and the Jacobian S ( x ) ∈ B q × n .
transpose
The argument `transpose` has prototype `
bool transpose
` The default value `false` is used when `transpose` is not present.
dependency
The argument `dependency` has prototype `
bool dependency
` If `dependency` is true, the dependency pattern (instead of sparsity pattern) is computed.
r
The argument `s` has prototype `
const VectorSet& r
` see VectorSet below.
transpose false
If `r` has elements of type `bool`, its size is q * m . If it has elements of type `std::set<size_t>`, its size is `q` and all its set elements are between zero and m - 1 . It specifies a sparsity pattern for the matrix R ∈ B q × m .
transpose true
If `r` has elements of type `bool`, its size is m * q . If it has elements of type `std::set<size_t>`, its size is `m` and all its set elements are between zero and q - 1 . It specifies a sparsity pattern for the matrix R T ∈ B m × q .
s
The return value `s` has prototype `
VectorSet s
` see VectorSet below.
transpose false
If it has elements of type `bool`, its size is q * n . If it has elements of type `std::set<size_t>`, its size is `q` and all its set elements are between zero and n - 1 . It specifies a sparsity pattern for the matrix S ( x ) ∈ q × n .
transpose true
If it has elements of type `bool`, its size is n * q . If it has elements of type `std::set<size_t>`, its size is `n` and all its set elements are between zero and q - 1 . It specifies a sparsity pattern for the matrix S ( x ) T ∈ n × q .
VectorSet
The type `VectorSet` must be a SimpleVector class with elements of type `bool` or `std::set<size_t>`; see sparsity pattern for a discussion of the difference.
Entire Sparsity Pattern
Suppose that q = m and R is the m × m identity matrix. In this case, the corresponding value for `s` is a sparsity pattern for the Jacobian S ( x ) = F ( 1 ) ( x ) .
Example
The file rev_sparse_jac.cpp contains an example and test of this operation. It returns true if it succeeds and false otherwise.

Input File: cppad/local/rev_sparse_jac.hpp