Package org.apache.commons.math3.fitting

# Class AbstractCurveFitter

java.lang.Object
org.apache.commons.math3.fitting.AbstractCurveFitter

Direct Known Subclasses:
  `GaussianCurveFitter`, `HarmonicCurveFitter`, `PolynomialCurveFitter`, `SimpleCurveFitter`

public abstract class AbstractCurveFitter extends Object
Base class that contains common code for fitting parametric univariate real functions `y = f(pi;x)`, where `x` is the independent variable and the `pi` are the parameters.
A fitter will find the optimal values of the parameters by fitting the curve so it remains very close to a set of `N` observed points `(xk, yk)`, `0 <= k < N`.
An algorithm usually performs the fit by finding the parameter values that minimizes the objective function

      ∑yk - f(xk)2,

which is actually a least-squares problem. This class contains boilerplate code for calling the `fit(Collection)` method for obtaining the parameters. The problem setup, such as the choice of optimization algorithm for fitting a specific function is delegated to subclasses.

Since:
  3.3

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`protected static class`
`AbstractCurveFitter.TheoreticalValuesFunction`
Vector function for computing function theoretical values.

## Constructor Summary

Constructors
Constructor
Description
`AbstractCurveFitter()`

## Method Summary

Modifier and Type
Method
Description
`double[]`
`fit(Collection<WeightedObservedPoint> points)`
Fits a curve.
`protected LeastSquaresOptimizer`
`getOptimizer()`
Creates an optimizer set up to fit the appropriate curve.
`protected abstract LeastSquaresProblem`
`getProblem(Collection<WeightedObservedPoint> points)`
Creates a least squares problem corresponding to the appropriate curve.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### AbstractCurveFitter

public AbstractCurveFitter()

## Method Details

### fit

public double[] fit(Collection<WeightedObservedPoint> points)
Fits a curve. This method computes the coefficients of the curve that best fit the sample of observed points.

Parameters:
  `points` - Observations.
Returns:
  the fitted parameters.

### getOptimizer

protected LeastSquaresOptimizer getOptimizer()
Creates an optimizer set up to fit the appropriate curve.

The default implementation uses a `Levenberg-Marquardt` optimizer.

Returns:
  the optimizer to use for fitting the curve to the given `points`.

### getProblem

protected abstract LeastSquaresProblem getProblem(Collection<WeightedObservedPoint> points)
Creates a least squares problem corresponding to the appropriate curve.

Parameters:
  `points` - Sample points.
Returns:
  the least squares problem to use for fitting the curve to the given `points`.