Class LevenbergMarquardt
java.lang.Object
org.episteme.core.mathematics.optimization.LevenbergMarquardt
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 Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiondouble[]fit(BiFunction<double[], Double, Double> model, double[] xData, double[] yData, double[] params0) Fit a model to data using Levenberg-Marquardt.double[]fitExponential(double[] xData, double[] yData) Fit exponential: y = a * exp(b * x)double[]fitGaussian(double[] xData, double[] yData) Fit Gaussian: y = a * exp(-((x-b)^2) / (2*c^2))double[]fitPowerLaw(double[] xData, double[] yData) Fit power law: y = a * x^b
-
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 yxData- Independent variable data pointsyData- Observed valuesparams0- 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
-