CppAD: A C++ Algorithmic Differentiation Package
20171217
|
int CppAD::opt_val_hes | ( | const BaseVector & | x, |
const BaseVector & | y, | ||
Fun | fun, | ||
BaseVector & | jac, | ||
BaseVector & | hes | ||
) |
Computing Jabobians and Hessians of Optimal Values.
We are given a function and we define and by
We wish to compute the Jacobian and possibly also the Hessian, of .
BaseVector | The type BaseVector must be a SimpleVector class. We use Base to refer to the type of the elements of BaseVector ; i.e., BaseVector::value_type . |
x | is a vector with size n . It specifies the point at which we evaluating the Jacobian (and possibly the Hessian ). |
y | is a vector with size m . It must be equal to ; i.e., it must solve the implicit equation
|
fun | The argument fun is an object of type Fun wich must support the member functions listed below. CppAD will may be recording operations of the type AD<Base> when these member functions are called. These member functions must not stop such a recording; e.g., they must not call AD<Base>::abort_recording . |
Fun::ad_vector
must be a SimpleVector class with elements of type AD<Base>
; i.e. Fun::ad_vector::value_type
is equal to AD<Base>
.Fun
must support the syntax ell = fun.ell()where
ell
is a size_t
value that is set to ; i.e., the number of terms in the summation.Fun
must support the syntax s_k = fun.s(k, x, y)The argument
k
has prototype size_t k
. The argument x
has prototype const Fun::ad_vector& x
and its size must be equal to n
. The argument y
has prototype const Fun::ad_vector& y
and its size must be equal to m
. The return value s_k
has prototype AD<Base>
s_k and its value must be given by .Fun
must support the syntax sy_k = fun.sy(k, x, y)The argument
k
has prototype size_t k
. The argument x
has prototype const Fun::ad_vector& x
and its size must be equal to n
. The argument y
has prototype const Fun::ad_vector& y
and its size must be equal to m
. The return value sy_k
has prototype Fun::ad_vector& sy_k
, its size is m
and its value must be given by .jac | is a vector with size n or zero. The input values of its elements do not matter. If it has size zero, it is not affected. Otherwise, on output it contains the Jacobian of ; i.e., for , $$ where x is the first argument to opt_val_hes . |
hes | is a vector with size n * n or zero. The input values of its elements do not matter. If it has size zero, it is not affected. Otherwise, on output it contains the Hessian of ; i.e., for , and ,
|
hes.size() == 0
, the return value is not defined. Otherwise, the return value is the sign of the determinant for $. If it is zero, then the matrix is singular and hes
is not set to its specified value. Definition at line 364 of file opt_val_hes.hpp.