Algorith sandbox
Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
algo::nm::LevenbergMarquardt Class Reference

This class solves following equation. $$ | f(x) |^{2} = 0 $$. More...

#include <LevenbergMarquardt.h>

Inheritance diagram for algo::nm::LevenbergMarquardt:
util::MixIn< INewtonMethod, LevenbergMarquardt >

Public Member Functions

 LevenbergMarquardt (const typename INewtonMethod::function_type &f, const typename INewtonMethod::derivative_type &derivative, const std::size_t maxIteration, const double tolerance, const std::shared_ptr< IDumpingFactorCalculator > &dumpingFactorCalculator)
 

Private Member Functions

virtual boost::numeric::ublas::vector< double > doSolve (const boost::numeric::ublas::vector< double > &initialValue) const override
 
boost::numeric::ublas::vector< double > calculateUpdateVector (const boost::numeric::ublas::vector< double > &x, boost::numeric::ublas::matrix< double > &inverseMatrix) const
 
void calculateInverseMatrix (const boost::numeric::ublas::vector< double > &residual, const boost::numeric::ublas::matrix< double > &jacobianMatrix, boost::numeric::ublas::matrix< double > &inverseMatrix) const
 

Private Attributes

INewtonMethod::function_type _f
 
INewtonMethod::derivative_type _derivative
 
const std::size_t _maxIteration
 
const double _tolerance
 
std::shared_ptr< IDumpingFactorCalculator_dumpingFactorCalculator
 

Friends

class nm_test::LevenbergMarquardtTest
 

Detailed Description

This class solves following equation. $$ | f(x) |^{2} = 0 $$.

Levenberg Marquardt method updates $x$ by the following equation each iteration. $$ x = x - (J_{f}^{T}(x)J_{f}(x) + {diag}(J_{f}^{T}(x)J_{f}(x)))^{-1}J_{f}^{T}(x) f(x) $$

Constructor & Destructor Documentation

algo::nm::LevenbergMarquardt::LevenbergMarquardt ( const typename INewtonMethod::function_type f,
const typename INewtonMethod::derivative_type derivative,
const std::size_t  maxIteration,
const double  tolerance,
const std::shared_ptr< IDumpingFactorCalculator > &  dumpingFactorCalculator 
)
Parameters
f$f,

Member Function Documentation

void algo::nm::LevenbergMarquardt::calculateInverseMatrix ( const boost::numeric::ublas::vector< double > &  residual,
const boost::numeric::ublas::matrix< double > &  jacobianMatrix,
boost::numeric::ublas::matrix< double > &  inverseMatrix 
) const
private
Parameters
residual
jacobianMatrix
inverseMatrix
ublas::vector< double > algo::nm::LevenbergMarquardt::calculateUpdateVector ( const boost::numeric::ublas::vector< double > &  x,
boost::numeric::ublas::matrix< double > &  inverseMatrix 
) const
private
Parameters
inverseMatrixcache to save memory allocaiton cost.
Returns
ublas::vector< double > algo::nm::LevenbergMarquardt::doSolve ( const boost::numeric::ublas::vector< double > &  initialValue) const
overrideprivatevirtual
Parameters
initialValueinitial guess of this algorithm
Returns
$x$ such that $| f(x) | = 0$

The documentation for this class was generated from the following files: