org.apache.commons.math.analysis.polynomials
Class PolynomialFunction

java.lang.Object
  extended by org.apache.commons.math.analysis.polynomials.PolynomialFunction
All Implemented Interfaces:
Serializable, DifferentiableUnivariateRealFunction, UnivariateRealFunction

public class PolynomialFunction
extends Object
implements DifferentiableUnivariateRealFunction, Serializable

Immutable representation of a real polynomial function with real coefficients.

Horner's Method is used to evaluate the function.

Version:
$Revision: 1042376 $ $Date: 2010-12-05 16:54:55 +0100 (dim. 05 déc. 2010) $
See Also:
Serialized Form

Constructor Summary
PolynomialFunction(double[] c)
          Construct a polynomial with the given coefficients.
 
Method Summary
 PolynomialFunction add(PolynomialFunction p)
          Add a polynomial to the instance.
 int degree()
          Returns the degree of the polynomial
 UnivariateRealFunction derivative()
          Returns the derivative as a UnivariateRealFunction
protected static double[] differentiate(double[] coefficients)
          Returns the coefficients of the derivative of the polynomial with the given coefficients.
 boolean equals(Object obj)
          
protected static double evaluate(double[] coefficients, double argument)
          Uses Horner's Method to evaluate the polynomial with the given coefficients at the argument.
 double[] getCoefficients()
          Returns a copy of the coefficients array.
 int hashCode()
          
 PolynomialFunction multiply(PolynomialFunction p)
          Multiply the instance by a polynomial.
 PolynomialFunction negate()
          Negate the instance.
 PolynomialFunction polynomialDerivative()
          Returns the derivative as a PolynomialRealFunction
 PolynomialFunction subtract(PolynomialFunction p)
          Subtract a polynomial from the instance.
 String toString()
          Returns a string representation of the polynomial.
 double value(double x)
          Compute the value of the function for the given argument.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

PolynomialFunction

public PolynomialFunction(double[] c)
Construct a polynomial with the given coefficients. The first element of the coefficients array is the constant term. Higher degree coefficients follow in sequence. The degree of the resulting polynomial is the index of the last non-null element of the array, or 0 if all elements are null.

The constructor makes a copy of the input array and assigns the copy to the coefficients property.

Parameters:
c - polynomial coefficients
Throws:
NullPointerException - if c is null
NoDataException - if c is empty
Method Detail

value

public double value(double x)
Compute the value of the function for the given argument.

The value returned is
coefficients[n] * x^n + ... + coefficients[1] * x + coefficients[0]

Specified by:
value in interface UnivariateRealFunction
Parameters:
x - the argument for which the function value should be computed
Returns:
the value of the polynomial at the given point
See Also:
UnivariateRealFunction.value(double)

degree

public int degree()
Returns the degree of the polynomial

Returns:
the degree of the polynomial

getCoefficients

public double[] getCoefficients()
Returns a copy of the coefficients array.

Changes made to the returned copy will not affect the coefficients of the polynomial.

Returns:
a fresh copy of the coefficients array

evaluate

protected static double evaluate(double[] coefficients,
                                 double argument)
Uses Horner's Method to evaluate the polynomial with the given coefficients at the argument.

Parameters:
coefficients - the coefficients of the polynomial to evaluate
argument - the input value
Returns:
the value of the polynomial
Throws:
NoDataException - if coefficients is empty
NullPointerException - if coefficients is null

add

public PolynomialFunction add(PolynomialFunction p)
Add a polynomial to the instance.

Parameters:
p - polynomial to add
Returns:
a new polynomial which is the sum of the instance and p

subtract

public PolynomialFunction subtract(PolynomialFunction p)
Subtract a polynomial from the instance.

Parameters:
p - polynomial to subtract
Returns:
a new polynomial which is the difference the instance minus p

negate

public PolynomialFunction negate()
Negate the instance.

Returns:
a new polynomial

multiply

public PolynomialFunction multiply(PolynomialFunction p)
Multiply the instance by a polynomial.

Parameters:
p - polynomial to multiply by
Returns:
a new polynomial

differentiate

protected static double[] differentiate(double[] coefficients)
Returns the coefficients of the derivative of the polynomial with the given coefficients.

Parameters:
coefficients - the coefficients of the polynomial to differentiate
Returns:
the coefficients of the derivative or null if coefficients has length 1.
Throws:
NoDataException - if coefficients is empty
NullPointerException - if coefficients is null

polynomialDerivative

public PolynomialFunction polynomialDerivative()
Returns the derivative as a PolynomialRealFunction

Returns:
the derivative polynomial

derivative

public UnivariateRealFunction derivative()
Returns the derivative as a UnivariateRealFunction

Specified by:
derivative in interface DifferentiableUnivariateRealFunction
Returns:
the derivative function

toString

public String toString()
Returns a string representation of the polynomial.

The representation is user oriented. Terms are displayed lowest degrees first. The multiplications signs, coefficients equals to one and null terms are not displayed (except if the polynomial is 0, in which case the 0 constant term is displayed). Addition of terms with negative coefficients are replaced by subtraction of terms with positive coefficients except for the first displayed term (i.e. we display -3 for a constant negative polynomial, but 1 - 3 x + x^2 if the negative coefficient is not the first one displayed).

Overrides:
toString in class Object
Returns:
a string representation of the polynomial

hashCode

public int hashCode()

Overrides:
hashCode in class Object

equals

public boolean equals(Object obj)

Overrides:
equals in class Object


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