Class 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.
  • Constructor Details

    • AbstractCurveFitter

      public AbstractCurveFitter()
      Empty constructor.

      This constructor is not strictly necessary, but it prevents spurious javadoc warnings with JDK 18 and later.

  • 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.
      points - Observations.
      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.

      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.
      points - Sample points.
      the least squares problem to use for fitting the curve to the given points.