Class LevenbergMarquardt

java.lang.Object
org.episteme.core.mathematics.optimization.LevenbergMarquardt

public class LevenbergMarquardt extends Object
Levenberg-Marquardt algorithm for nonlinear least squares.

Combines Gauss-Newton and gradient descent for robust curve fitting.

*

Reference:
Levenberg, K. (1944). A method for the solution of certain non-linear problems in least squares. Quarterly of Applied Mathematics, 2, 164-168.

Since:
1.0
Author:
Silvere Martin-Michiellot, Gemini AI (Google DeepMind)
  • Constructor Details

    • LevenbergMarquardt

      public LevenbergMarquardt(double tolerance, int maxIterations)
    • LevenbergMarquardt

      public LevenbergMarquardt()
  • Method Details

    • fit

      public double[] fit(BiFunction<double[],Double,Double> model, double[] xData, double[] yData, double[] params0)
      Fit a model to data using Levenberg-Marquardt.
      Parameters:
      model - Function (params, x) -> predicted y
      xData - Independent variable data points
      yData - Observed values
      params0 - Initial parameter guess
      Returns:
      Optimized parameters
    • fitExponential

      public double[] fitExponential(double[] xData, double[] yData)
      Fit exponential: y = a * exp(b * x)
    • fitGaussian

      public double[] fitGaussian(double[] xData, double[] yData)
      Fit Gaussian: y = a * exp(-((x-b)^2) / (2*c^2))
    • fitPowerLaw

      public double[] fitPowerLaw(double[] xData, double[] yData)
      Fit power law: y = a * x^b