Learn about our RFC process, Open RFC meetings & more.Join in the discussion! »

ml-levenberg-marquardt

2.1.1 • Public • Published

levenberg-marquardt

NPM version build status Test coverage npm download

Curve fitting method in javascript.

Installation

$ npm i 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
import LM from 'ml-levenberg-marquardt';
// const LM = require('ml-levenberg-marquardt').default;
 
// function that receives the parameters and returns
// a function with the independent variable as a parameter
function sinFunction([a, b]) {
  return (t) => a * 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, ... */
];
 
// Optionally, restrict parameters to minimum & maximum values
let minValues = [
  /* a_min, b_min, c_min, ... */
];
let maxValues = [
  /* a_max, b_max, c_max, ... */
];
 
const options = {
  damping: 1.5,
  initialValues: initialValues,
  minValues: minValues,
  maxValues: maxValues,
  gradientDifference: 10e-2,
  maxIterations: 100,
  errorTolerance: 10e-3
};
 
let fittedParams = LM(data, sinFunction, options);

Or test it in Runkit

License

MIT

Install

npm i ml-levenberg-marquardt

DownloadsWeekly Downloads

629

Version

2.1.1

License

MIT

Unpacked Size

32.2 kB

Total Files

11

Last publish

Collaborators

  • avatar
  • avatar
  • avatar
  • avatar
  • avatar
  • avatar
  • avatar
  • avatar