vec_math
Class LevenbergMarquardt

java.lang.Object
  extended by vec_math.LevenbergMarquardt

public class LevenbergMarquardt
extends Object

Solves for a data model fit using Levenberg-Marquardt algorithm as in Num. Rec., 15.5, p683ff.


Nested Class Summary
(package private) static class LevenbergMarquardt.LMSineModel
          solve for phase, amplitude and frequency of a sinusoid
static class LevenbergMarquardt.LMSineTest
           
(package private) static class LevenbergMarquardt.SinusModel
           
static class LevenbergMarquardt.SinusTest
          We test with a simple sinus fit.
 
Field Summary
static double DEFEPSILON
          Default improvement in chi-2 to induce terminating loop.
static int DEFITER
          Default number of maximum iteration.
static double DEFLAMBDA
          Default starting value for the 'fudge factor' boosting hessian.
static int DEFTERMINATE
          Default number of maximum improvements, if epsilon is reached.
private  double epsilon
          Required improvement.
private  GradientModel fit
          The differentaible multidimensional data model fit, dimension as x.
private  double lambda0
          Starting value for lambda.
private  int maxiter
          Maximum number of iterations.
private  int maxterm
          Maximum number of improvements.
 
Constructor Summary
LevenbergMarquardt()
          Constructs a new LevenbergMarquardt with default iteration and improvement values.
LevenbergMarquardt(double lambda)
          Constructs a new LevenbergMarquardt with default iteration and improvement values.
LevenbergMarquardt(double lambda, double epsilon)
          Constructs a new LevenbergMarquardt with default iteration and improvement values.
LevenbergMarquardt(double lambda, double eps, int iter, int term)
          Constructs a new LevenbergMarquardt with default iteration and improvement values.
LevenbergMarquardt(double lambda, int iter)
          Constructs a new LevenbergMarquardt with default iteration and improvement values.
 
Method Summary
 VectorG improve(VectorG start)
          Iterates for a solution to the data model, starting from the given start vector.
 void setModel(GradientModel grad)
          Sets the model fit.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFITER

public static final int DEFITER
Default number of maximum iteration.

See Also:
Constant Field Values

DEFTERMINATE

public static final int DEFTERMINATE
Default number of maximum improvements, if epsilon is reached.

See Also:
Constant Field Values

DEFEPSILON

public static final double DEFEPSILON
Default improvement in chi-2 to induce terminating loop.

See Also:
Constant Field Values

DEFLAMBDA

public static final double DEFLAMBDA
Default starting value for the 'fudge factor' boosting hessian.

See Also:
Constant Field Values

maxiter

private int maxiter
Maximum number of iterations.


maxterm

private int maxterm
Maximum number of improvements.


epsilon

private double epsilon
Required improvement.


lambda0

private double lambda0
Starting value for lambda.


fit

private GradientModel fit
The differentaible multidimensional data model fit, dimension as x.

Constructor Detail

LevenbergMarquardt

public LevenbergMarquardt()
Constructs a new LevenbergMarquardt with default iteration and improvement values.


LevenbergMarquardt

public LevenbergMarquardt(double lambda)
Constructs a new LevenbergMarquardt with default iteration and improvement values.


LevenbergMarquardt

public LevenbergMarquardt(double lambda,
                          double epsilon)
Constructs a new LevenbergMarquardt with default iteration and improvement values.


LevenbergMarquardt

public LevenbergMarquardt(double lambda,
                          int iter)
Constructs a new LevenbergMarquardt with default iteration and improvement values.


LevenbergMarquardt

public LevenbergMarquardt(double lambda,
                          double eps,
                          int iter,
                          int term)
Constructs a new LevenbergMarquardt with default iteration and improvement values.

Method Detail

setModel

public void setModel(GradientModel grad)
Sets the model fit. The model must extend the abstract gradient model. If the gradient is not accessible, or a higher robustness is needed, try using a Simplex, like Amoeba.


improve

public VectorG improve(VectorG start)
Iterates for a solution to the data model, starting from the given start vector. The solution, if fed into the getPseudoHessian of the fit is the inverse of the covariance matrix.