49 MnPrint print(
"FumiliErrorUpdator");
50 print.
Debug(
"Compute covariance matrix using Fumili method");
54 assert(fgc !=
nullptr);
64 double eps = 8 * std::numeric_limits<double>::min();
65 for (
int j = 0; j < nvar; j++) {
66 h(j, j) *= (1. + lambda);
68 if (std::fabs(
h(j, j)) < eps) {
71 h(j, j) = lambda * eps;
80 print.
Warn(
"inversion fails; return diagonal matrix");
82 for (
unsigned int i = 0; i < cov.
Nrow(); i++) {
83 cov(i, i) = 1. / cov(i, i);
virtual MinimumError Update(const MinimumState &fMinimumState, const MinimumParameters &fMinimumParameters, const GradientCalculator &fGradientCalculator, double lambda) const
Member function that calculates the Error matrix (or the Hessian matrix containing the (approximate) ...
Fumili gradient calculator using external gradient provided by FCN Note that the computed Hessian and...
const MnAlgebraicSymMatrix & GetHessian() const
interface class for gradient calculators
unsigned int Nrow() const
unsigned int size() const
MinimumError keeps the inv.
const MnAlgebraicVector & Vec() const
MinimumState keeps the information (position, Gradient, 2nd deriv, etc) after one minimization step (...
void Debug(const Ts &... args)
void Warn(const Ts &... args)
int Invert(LASymMatrix &)
double sum_of_elements(const LASymMatrix &)
LASymMatrix MnAlgebraicSymMatrix