#include <bfgs.hpp>
delta[k] = x[k+1] - x[k]
gamma[k] = grad f(x[k+1]) - grad f(x[k])
H[0] = I
BFGS : zeta[k] = delta[k] - H[k] gamma[k]
DFP : zeta[k] = H[k] gamma[k]
tau[k] = gamma[k]^T zeta[k]
rho[k] = 1 / gamma[k]^T delta[k]
BFGS : H[k+1] = H[k] + rho[k](zeta[k] delta[k]^T + delta[k] zeta[k]^T)
Public Types | |
typedef value_type | magnitude_type |
typedef vector_type::value_type | T |
typedef vector_type::value_type | value_type |
typedef VECTOR | vector_type |
Public Member Functions | |
BFGSInvHessian (BFGSType v=BFGS) | |
template<typename VEC1 , typename VEC2 > | |
void | hmult (const VEC1 &X, VEC2 &Y) |
void | restart (void) |
template<typename VECT1 , typename VECT2 > | |
void | update (const VECT1 &deltak, const VECT2 &gammak) |
Public Attributes | |
std::vector< vector_type > | delta |
std::vector< vector_type > | gamma |
std::vector< T > | rho |
std::vector< T > | tau |
int | version |
std::vector< vector_type > | zeta |