node package manager
It’s your turn. Help us improve JavaScript. Take the 2017 JavaScript Ecosystem Survey »

ml-levenberg-marquardt

levenberg-marquardt

NPM version build status Test coverage David deps npm download

Curve fitting method in javascript

Installation

$ npm install ml-levenberg-marquardt

API Documentation

This algorithm is based on the article Brown, Kenneth M., and J. E. Dennis. "Derivative free analogues of the Levenberg-Marquardt and Gauss algorithms for nonlinear least squares approximation." Numerische Mathematik 18.4 (1971): 289-297.

In order to get a general idea of the problem you could also check the Wikipedia article.

Example

// import library 
const LM = require('ml-levenberg-marquardt');
 
// function that receives the parameters and returns 
// a function with the independent variable as a parameter 
function sinFunction ([a, b]) {
  return (t) => (* Math.sin(* t));
}
 
// array of points to fit 
let data = {
    x: [ /* x1, x2, ... */ ],
    y: [ /* y1, y2, ... */ ]
};
 
// array of initial parameter values 
let initialValues = [ /* a, b, c, ... */ ];
 
const options = {
  damping: 1.5,
  initialValues: initialValues,
  gradientDifference: 10e-2,
  maxIterations: 100,
  errorTolerance: 10e-3
};
 
let fittedParams = LM(data, sinFunction, options);

Or test it in Runkit

License

MIT