Prev | Next |
f.subgraph_reverse(select_domain)
f.subgraph_reverse(q, ell, col, dw)
f.clear_subgraph()
f
.
Reverse mode computes the derivative of the Forward
mode
Taylor coefficients
with respect to the domain variable @(@
x
@)@.
BaseVector
must be a SimpleVector
class with
elements of type
Base
.
The routine CheckSimpleVector
will generate an error message
if this is not the case.
BoolVector
is a SimpleVector
class with
elements of type
bool
.
SizeVector
is a SimpleVector
class with
elements of type
size_t
.
select_domain
has prototype
const BoolVector& select_domain
It has size @(@
n
@)@ and specifies which independent variables
to include in future subgraph_reverse
calculations.
If
select_domain[j]
is false,
it is assumed that @(@
u^{(k)}_j = 0
@)@ for @(@
k > 0
@)@; i.e.,
the j
-th component of the Taylor coefficient for @(@
x
@)@,
with order greater that zero, are zero; see
u^(k)
.
q
has prototype
size_t q
and specifies the number of Taylor coefficient orders to be differentiated.
ell
has prototype
size_t ell
and specifies the dependent variable index that we are computing
the derivatives for; i.e. @(@
\ell
@)@.
This index can only be used once per, and after, a call that selects
the independent variables using
select_domain
.
col
has prototype
SizeVector col
The input size and value of its elements do not matter.
The
col.resize
member function is used to change its size
to the number the number of possible non-zero derivative components.
For each
c
,
select_domain[ col[c] ] == true
col[c+1] >= col[c]
and the derivative with respect to the j
-th independent
variable is possibly non-zero where
j = col[c]
.
dw
has prototype
Vector dw
Its input size and value does not matter.
Upon return,
it is a vector with size @(@
n \times q
@)@.
For @(@
c = 0 , \ldots , %col%.size()-1
@)@,
and @(@
k = 0, \ldots , q-1
@)@,
@[@
dw[ j * q + k ] = W^{(1)} ( x )_{j,k}
@]@
is the derivative of the specified Taylor coefficients w.r.t the j
-th
independent variable where
j = col[c]
.
Note that this corresponds to the reverse_any
convention when
w
has size
m * q
.
f
is deleted.)
You cannot free this memory between calls that select the domain
and corresponding calls that compute reverse mode derivatives.
Some of this information is also used by subgraph_sparsity
.