An implementation of the Levenberg-Marquardt algorithm for least-square minimization.
Refer to this page for more details on the algorithm and its usage.
NUMTYPE | The numeric type for all the operations (float, double, or long double) |
USERPARAM | The type of the "y" input to the user supplied evaluation functor. Default type is a vector of NUMTYPE. |
Definition at line 50 of file CLevenbergMarquardt.h.
#include <mrpt/math/CLevenbergMarquardt.h>
Classes | |
struct | TResultInfo |
Public Types | |
typedef VECTORTYPE::value_type | NUMTYPE |
typedef void(* | TFunctor )(const VECTORTYPE &x, const USERPARAM &y, VECTORTYPE &out) |
The type of the function passed to execute. | |
Static Public Member Functions | |
static void | execute (VECTORTYPE &out_optimal_x, const VECTORTYPE &x0, TFunctor functor, const VECTORTYPE &increments, const USERPARAM &userParam, TResultInfo &out_info, bool verbose=false, const size_t &maxIter=200, const NUMTYPE tau=1e-3, const NUMTYPE e1=1e-8, const NUMTYPE e2=1e-8, bool returnPath=true) |
Executes the LM-method, with derivatives estimated from "functor" Is a user-provided function which takes as input two vectors, in this order:
|
typedef VECTORTYPE::value_type mrpt::math::CLevenbergMarquardtTempl< VECTORTYPE, USERPARAM >::NUMTYPE |
Definition at line 53 of file CLevenbergMarquardt.h.
typedef void(* mrpt::math::CLevenbergMarquardtTempl< VECTORTYPE, USERPARAM >::TFunctor)(const VECTORTYPE &x, const USERPARAM &y, VECTORTYPE &out) |
The type of the function passed to execute.
The user must supply a function which evaluates the error of a given point in the solution space.
x | The state point under examination. |
y | The same object passed to "execute" as the parameter "userParam". |
out | The vector of (non-squared) errors, of the average square root error, for the given "x". The functor code must set the size of this vector. |
Definition at line 61 of file CLevenbergMarquardt.h.
static void mrpt::math::CLevenbergMarquardtTempl< VECTORTYPE, USERPARAM >::execute | ( | VECTORTYPE & | out_optimal_x, |
const VECTORTYPE & | x0, | ||
TFunctor | functor, | ||
const VECTORTYPE & | increments, | ||
const USERPARAM & | userParam, | ||
TResultInfo & | out_info, | ||
bool | verbose = false , |
||
const size_t & | maxIter = 200 , |
||
const NUMTYPE | tau = 1e-3 , |
||
const NUMTYPE | e1 = 1e-8 , |
||
const NUMTYPE | e2 = 1e-8 , |
||
bool | returnPath = true |
||
) | [inline, static] |
Executes the LM-method, with derivatives estimated from "functor" Is a user-provided function which takes as input two vectors, in this order:
Definition at line 86 of file CLevenbergMarquardt.h.
References ASSERT_, mrpt::math::estimateJacobian(), mrpt::math::CLevenbergMarquardtTempl< VECTORTYPE, USERPARAM >::TResultInfo::final_sqr_err, mrpt::format(), mrpt::math::CLevenbergMarquardtTempl< VECTORTYPE, USERPARAM >::TResultInfo::iterations_executed, mrpt::math::CLevenbergMarquardtTempl< VECTORTYPE, USERPARAM >::TResultInfo::last_err_vector, MRPT_END, MRPT_START, mrpt::math::norm(), mrpt::math::norm_inf(), mrpt::math::CLevenbergMarquardtTempl< VECTORTYPE, USERPARAM >::TResultInfo::path, pow(), mrpt::utils::CDebugOutputCapable::printf_debug(), and mrpt::utils::sprintf_vector().
Page generated by Doxygen 1.7.3 for MRPT 0.9.4 SVN: at Sat Mar 26 06:16:28 UTC 2011 |