![]() |
Prev | Next |
work = cppad_py.sparse_jac_work()
n_sweep = f.sparse_jac_for(subset, x, pattern, work)
n_sweep = f.sparse_jac_rev(subset, x, pattern, work)
f
.
The syntax above takes advantage of sparsity when computing the Jacobian
@[@
J(x) = F^{(1)} (x)
@]@
In the sparse case, this should be faster and take less memory than
py_fun_jacobian
.
We use the notation @(@
J_{i,j} (x)
@)@ to denote the partial of
@(@
F_i (x)
@)@ with respect to @(@
x_j
@)@.
f
are affected
by this operation; see
uses forward
below.
sparse_rcv
constructor.
Its row size is
subset.nr() == m
,
and its column size is
subset.nc() == n
.
It specifies which elements of the Jacobian are computed.
The input value of its value vector
subset.val()
does not matter.
Upon return it contains the value of the corresponding elements
of the Jacobian.
All of the row, column pairs in
subset
must also appear in
pattern
; i.e., they must be possibly non-zero.
float
elements
and size
n
.
It specifies the point at which to evaluate the Jacobian @(@
J(x)
@)@.
sparse_rc
constructor.
Its row size is
pattern.nr() == m
,
and its column size is
pattern.nc() == n
.
It is a sparsity pattern for the Jacobian @(@
J(x)
@)@.
This argument is not used (and need not satisfy any conditions),
when work
is non-empty.
work = cppad_py.sparse_jac_work()
We refer to its initial value,
and its value after
work.clear()
, as empty.
If it is empty, information is stored in
work
.
This can be used to reduce computation when
a future call is for the same object
f
,
the same member function sparse_jac_for
or sparse_jac_rev
,
and the same subset of the Jacobian.
If any of these values change, use
work.clear()
to
empty this structure.
int
.
If sparse_jac_for
(sparse_jac_rev
) is used,
n_sweep
is the number of first order forward (reverse) sweeps
used to compute the requested Jacobian values.
This is proportional to the total computational work,
not counting the zero order forward sweep,
or combining multiple columns (rows) into a single sweep.
f
contains the corresponding Taylor coefficients
for all the variables in the operation sequence..
After a call to sparse_jac_forward
or sparse_jac_rev
,
the zero order coefficients correspond to
f.forward(0, x)
All the other forward mode coefficients are unspecified.