Creates a tape of the Jacobian of a function taped by CppAD
.
When the function returns a real value (as is the case for densities and the score matching objective) the Jacobian is equivalent to the gradient.
The x
vector is used as the value to conduct the taping.
tape_Jacobian(pfun)
An Rcpp_ADFun
object.
An Rcpp_ADFun
object.
When the returned tape is evaluated (via say $eval()
, the resultant vector contains the Jacobian in long format (see https://cppad.readthedocs.io/latest/Jacobian.html).
Suppose the function represented by pfun
maps from \(n\)-dimensional space to \(m\)-dimensional space, then
the first \(n\) elements of vector is the gradient of the first component of function output.
The next \(n\) elements of the vector is the gradient of the second component of the function output.
The Jacobian as a matrix, could then be obtained by as.matrix()
with byrow = TRUE
and ncol = n
.
For creating this tape, the values of pfun$xtape
and pfun$dyntape
are used.
Other tape builders:
tape_Hessian()
,
tape_gradoffset()
,
tape_logJacdet()
,
tape_smd()
,
tape_swap()
,
tape_uld()