org.apache.commons.math3.fitting
Class CurveFitter<T extends ParametricUnivariateFunction>

java.lang.Object
  extended by org.apache.commons.math3.fitting.CurveFitter<T>
Type Parameters:
T - Function to use for the fit.
Direct Known Subclasses:
GaussianFitter, HarmonicFitter, PolynomialFitter

public class CurveFitter<T extends ParametricUnivariateFunction>
extends Object

Fitter for parametric univariate real functions y = f(x).
When a univariate real function y = f(x) does depend on some unknown parameters p0, p1 ... pn-1, this class can be used to find these parameters. It does this by fitting the curve so it remains very close to a set of observed points (x0, y0), (x1, y1) ... (xk-1, yk-1). This fitting is done by finding the parameters values that minimizes the objective function ∑(yi-f(xi))2. This is really a least squares problem.

Since:
2.0
Version:
$Id: CurveFitter.java 1416643 2012-12-03 19:37:14Z tn $

Constructor Summary
CurveFitter(MultivariateVectorOptimizer optimizer)
          Simple constructor.
 
Method Summary
 void addObservedPoint(double x, double y)
          Add an observed (x,y) point to the sample with unit weight.
 void addObservedPoint(double weight, double x, double y)
          Add an observed weighted (x,y) point to the sample.
 void addObservedPoint(WeightedObservedPoint observed)
          Add an observed weighted (x,y) point to the sample.
 void clearObservations()
          Remove all observations.
 double[] fit(int maxEval, T f, double[] initialGuess)
          Fit a curve.
 double[] fit(T f, double[] initialGuess)
          Fit a curve.
 WeightedObservedPoint[] getObservations()
          Get the observed points.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CurveFitter

public CurveFitter(MultivariateVectorOptimizer optimizer)
Simple constructor.

Parameters:
optimizer - Optimizer to use for the fitting.
Since:
3.1
Method Detail

addObservedPoint

public void addObservedPoint(double x,
                             double y)
Add an observed (x,y) point to the sample with unit weight.

Calling this method is equivalent to call addObservedPoint(1.0, x, y).

Parameters:
x - abscissa of the point
y - observed value of the point at x, after fitting we should have f(x) as close as possible to this value
See Also:
addObservedPoint(double, double, double), addObservedPoint(WeightedObservedPoint), getObservations()

addObservedPoint

public void addObservedPoint(double weight,
                             double x,
                             double y)
Add an observed weighted (x,y) point to the sample.

Parameters:
weight - weight of the observed point in the fit
x - abscissa of the point
y - observed value of the point at x, after fitting we should have f(x) as close as possible to this value
See Also:
addObservedPoint(double, double), addObservedPoint(WeightedObservedPoint), getObservations()

addObservedPoint

public void addObservedPoint(WeightedObservedPoint observed)
Add an observed weighted (x,y) point to the sample.

Parameters:
observed - observed point to add
See Also:
addObservedPoint(double, double), addObservedPoint(double, double, double), getObservations()

getObservations

public WeightedObservedPoint[] getObservations()
Get the observed points.

Returns:
observed points
See Also:
addObservedPoint(double, double), addObservedPoint(double, double, double), addObservedPoint(WeightedObservedPoint)

clearObservations

public void clearObservations()
Remove all observations.


fit

public double[] fit(T f,
                    double[] initialGuess)
Fit a curve. This method compute the coefficients of the curve that best fit the sample of observed points previously given through calls to the addObservedPoint method.

Parameters:
f - parametric function to fit.
initialGuess - first guess of the function parameters.
Returns:
the fitted parameters.
Throws:
DimensionMismatchException - if the start point dimension is wrong.

fit

public double[] fit(int maxEval,
                    T f,
                    double[] initialGuess)
Fit a curve. This method compute the coefficients of the curve that best fit the sample of observed points previously given through calls to the addObservedPoint method.

Parameters:
f - parametric function to fit.
initialGuess - first guess of the function parameters.
maxEval - Maximum number of function evaluations.
Returns:
the fitted parameters.
Throws:
TooManyEvaluationsException - if the number of allowed evaluations is exceeded.
DimensionMismatchException - if the start point dimension is wrong.
Since:
3.0


Copyright © 2003-2012 The Apache Software Foundation. All Rights Reserved.