org.spaceroots.mantissa.fitting
Class PolynomialFitter

java.lang.Object
  extended byorg.spaceroots.mantissa.fitting.AbstractCurveFitter
      extended byorg.spaceroots.mantissa.fitting.PolynomialFitter
All Implemented Interfaces:
EstimationProblem, Serializable

public class PolynomialFitter
extends AbstractCurveFitter

This class implements a curve fitting specialized for polynomials.

Polynomial fitting is a very simple case of curve fitting. The estimated coefficients are the polynom coefficients. They are searched by a least square estimator.

This class is by no means optimized, neither in space nor in time performance.

Version:
$Id: PolynomialFitter.java 1709 2006-12-03 21:16:50Z luc $
Author:
L. Maisonobe
See Also:
PolynomialCoefficient, Serialized Form

Nested Class Summary
 
Nested classes inherited from class org.spaceroots.mantissa.fitting.AbstractCurveFitter
AbstractCurveFitter.FitMeasurement
 
Field Summary
 
Fields inherited from class org.spaceroots.mantissa.fitting.AbstractCurveFitter
coefficients, measurements
 
Constructor Summary
PolynomialFitter(int degree, Estimator estimator)
          Simple constructor.
PolynomialFitter(int degree, int maxIterations, double convergence, double steadyStateThreshold, double epsilon)
          Deprecated. replaced by PolynomialFitter(int,Estimator) as of version 7.0
PolynomialFitter(PolynomialCoefficient[] coefficients, Estimator estimator)
          Simple constructor.
PolynomialFitter(PolynomialCoefficient[] coefficients, int maxIterations, double convergence, double steadyStateThreshold, double epsilon)
          Deprecated. replaced by PolynomialFitter(PolynomialCoefficient[], Estimator) as of version 7.0
 
Method Summary
 double partial(double x, EstimatedParameter p)
          Get the derivative of the function at x with respect to parameter p.
 double valueAt(double x)
          Get the value of the function at x according to the current parameters value.
 
Methods inherited from class org.spaceroots.mantissa.fitting.AbstractCurveFitter
addWeightedPair, fit, getAllParameters, getMeasurements, getUnboundParameters, sortMeasurements
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PolynomialFitter

public PolynomialFitter(int degree,
                        Estimator estimator)
Simple constructor.

The polynomial fitter built this way are complete polynoms, ie. a n-degree polynom has n+1 coefficients. In order to build fitter for sparse polynoms (for example a x^20 - b x^30, on should first build the coefficients array and provide it to PolynomialFitter(PolynomialCoefficient[], int, double, double, double).

Parameters:
degree - maximal degree of the polynom
estimator - estimator to use for the fitting

PolynomialFitter

public PolynomialFitter(PolynomialCoefficient[] coefficients,
                        Estimator estimator)
Simple constructor.

This constructor can be used either when a first estimate of the coefficients is already known (which is of little interest because the fit cost is the same whether a first guess is known or not) or when one needs to handle sparse polynoms like a x^20 - b x^30.

Parameters:
coefficients - first estimate of the coefficients. A reference to this array is hold by the newly created object. Its elements will be adjusted during the fitting process and they will be set to the adjusted coefficients at the end.
estimator - estimator to use for the fitting

PolynomialFitter

public PolynomialFitter(int degree,
                        int maxIterations,
                        double convergence,
                        double steadyStateThreshold,
                        double epsilon)
Deprecated. replaced by PolynomialFitter(int,Estimator) as of version 7.0

Simple constructor.

The polynomial fitter built this way are complete polynoms, ie. a n-degree polynom has n+1 coefficients. In order to build fitter for sparse polynoms (for example a x^20 - b x^30, on should first build the coefficients array and provide it to PolynomialFitter(PolynomialCoefficient[], int, double, double, double).

Parameters:
degree - maximal degree of the polynom
maxIterations - maximum number of iterations allowed
convergence - criterion threshold below which we do not need to improve the criterion anymore
steadyStateThreshold - steady state detection threshold, the problem has reached a steady state (read converged) if Math.abs (Jn - Jn-1) < Jn * convergence, where Jn and Jn-1 are the current and preceding criterion value (square sum of the weighted residuals of considered measurements).
epsilon - threshold under which the matrix of the linearized problem is considered singular (see SquareMatrix.solve).

PolynomialFitter

public PolynomialFitter(PolynomialCoefficient[] coefficients,
                        int maxIterations,
                        double convergence,
                        double steadyStateThreshold,
                        double epsilon)
Deprecated. replaced by PolynomialFitter(PolynomialCoefficient[], Estimator) as of version 7.0

Simple constructor.

This constructor can be used either when a first estimate of the coefficients is already known (which is of little interest because the fit cost is the same whether a first guess is known or not) or when one needs to handle sparse polynoms like a x^20 - b x^30.

Parameters:
coefficients - first estimate of the coefficients. A reference to this array is hold by the newly created object. Its elements will be adjusted during the fitting process and they will be set to the adjusted coefficients at the end.
maxIterations - maximum number of iterations allowed
convergence - criterion threshold below which we do not need to improve the criterion anymore
steadyStateThreshold - steady state detection threshold, the problem has reached a steady state (read converged) if Math.abs (Jn - Jn-1) < Jn * convergence, where Jn and Jn-1 are the current and preceding criterion value (square sum of the weighted residuals of considered measurements).
epsilon - threshold under which the matrix of the linearized problem is considered singular (see SquareMatrix.solve).
Method Detail

valueAt

public double valueAt(double x)
Get the value of the function at x according to the current parameters value.

Specified by:
valueAt in class AbstractCurveFitter
Parameters:
x - abscissa at which the theoretical value is requested
Returns:
theoretical value at x

partial

public double partial(double x,
                      EstimatedParameter p)
Get the derivative of the function at x with respect to parameter p.

Specified by:
partial in class AbstractCurveFitter
Parameters:
x - abscissa at which the partial derivative is requested
p - parameter with respect to which the derivative is requested
Returns:
partial derivative


Copyright © 2001-2007 Luc Maisonobe. All Rights Reserved.