#include <search.h>
Inheritance diagram for fl::LevenbergMarquardt< T >:

Public Methods | |
| LevenbergMarquardt (T toleranceF=-1, T toleranceX=-1, int maxIterations=200) | |
| toleranceF/X == -1 means use sqrt (machine precision) | |
| virtual void | search (Searchable< T > &searchable, Vector< T > &point) |
| void | qrfac (Matrix< T > &a, Vector< int > &ipvt, Vector< T > &rdiag, Vector< T > &acnorm) |
| void | qrsolv (Matrix< T > &r, const Vector< int > &ipvt, const Vector< T > &diag, const Vector< T > &qtb, Vector< T > &x, Vector< T > &sdiag) |
| void | lmpar (Matrix< T > &r, const Vector< int > &ipvt, const Vector< T > &diag, const Vector< T > &qtb, T delta, T &par, Vector< T > &x) |
Public Attributes | |
| T | toleranceF |
| T | toleranceX |
| int | maxIterations |
Static Public Attributes | |
| const T | epsilon = DBL_EPSILON |
| FLT_EPSILON or DBL_EPSILON. | |
| const T | minimum = DBL_MIN |
| FLT_MIN or DBL_MIN. | |
|
||||||||||||||||||||
|
toleranceF/X == -1 means use sqrt (machine precision)
|
|
||||||||||||||||||||||||||||||||||||
|
lmpar algorithm: A constrained lls problem: solve (~JJ + pDD)x = ~Jf such that |Dx| is pretty close to delta Start with p = 0 and determine x Solve for x in ~JJx = ~Jf Early out if |Dx| is close to delta Determine min and max values for p J = QR (so ~JJ = ~RR) solve for b in ~Rb = DDx / |Dx| min = (|Dx| - delta) / (delta * |b|^2) max = |!D~Jf| / delta Initialize p make sure it is in bounds if p is zero, p = |!D~Jf| / |Dx| Iterate solve for x in (~JJ + pDD)x = ~Jf end if |Dx| is close to delta or too many iterations or |Dx| is becoming smaller than delta when min == 0 (~JJ + pDD) = QR solve for b in ~Rb = DDx / |Dx| p += (|Dx| - delta) / (delta * |b|^2) |
|
||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||
|
A loose paraphrase the MINPACK function lmdif. Implements fl::Search< T >. |
|
|||||
|
FLT_EPSILON or DBL_EPSILON.
|
|
|||||
|
|
|
|||||
|
FLT_MIN or DBL_MIN.
|
|
|||||
|
|
|
|||||
|
|
1.2.18