org.apache.commons.math3.analysis.function
Class Sinc

java.lang.Object
  extended by org.apache.commons.math3.analysis.function.Sinc
All Implemented Interfaces:
DifferentiableUnivariateFunction, UnivariateDifferentiableFunction, UnivariateFunction

public class Sinc
extends Object
implements UnivariateDifferentiableFunction, DifferentiableUnivariateFunction

Sinc function, defined by


   sinc(x) = 1            if x = 0,
             sin(x) / x   otherwise.
 

Since:
3.0
Version:
$Id: Sinc.java 1455194 2013-03-11 15:45:54Z luc $

Field Summary
private  boolean normalized
          For normalized sinc function.
private static double SHORTCUT
          Value below which the computations are done using Taylor series.
 
Constructor Summary
Sinc()
          The sinc function, sin(x) / x.
Sinc(boolean normalized)
          Instantiates the sinc function.
 
Method Summary
 UnivariateFunction derivative()
          Deprecated. as of 3.1, replaced by value(DerivativeStructure)
 DerivativeStructure value(DerivativeStructure t)
          Simple mathematical function.
 double value(double x)
          Compute the value of the function.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

SHORTCUT

private static final double SHORTCUT
Value below which the computations are done using Taylor series.

The Taylor series for sinc even order derivatives are:

 d^(2n)sinc/dx^(2n)     = Sum_(k>=0) (-1)^(n+k) / ((2k)!(2n+2k+1)) x^(2k)
                        = (-1)^n     [ 1/(2n+1) - x^2/(4n+6) + x^4/(48n+120) - x^6/(1440n+5040) + O(x^8) ]
 

The Taylor series for sinc odd order derivatives are:

 d^(2n+1)sinc/dx^(2n+1) = Sum_(k>=0) (-1)^(n+k+1) / ((2k+1)!(2n+2k+3)) x^(2k+1)
                        = (-1)^(n+1) [ x/(2n+3) - x^3/(12n+30) + x^5/(240n+840) - x^7/(10080n+45360) + O(x^9) ]
 

So the ratio of the fourth term with respect to the first term is always smaller than x^6/720, for all derivative orders. This implies that neglecting this term and using only the first three terms induces a relative error bounded by x^6/720. The SHORTCUT value is chosen such that this relative error is below double precision accuracy when |x| <= SHORTCUT.

See Also:
Constant Field Values

normalized

private final boolean normalized
For normalized sinc function.

Constructor Detail

Sinc

public Sinc()
The sinc function, sin(x) / x.


Sinc

public Sinc(boolean normalized)
Instantiates the sinc function.

Parameters:
normalized - If true, the function is sin(πx) / πx, otherwise sin(x) / x.
Method Detail

value

public double value(double x)
Compute the value of the function.

Specified by:
value in interface UnivariateFunction
Parameters:
x - Point at which the function value should be computed.
Returns:
the value of the function.

derivative

@Deprecated
public UnivariateFunction derivative()
Deprecated. as of 3.1, replaced by value(DerivativeStructure)

Returns the derivative of the function

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

value

public DerivativeStructure value(DerivativeStructure t)
                          throws DimensionMismatchException
Simple mathematical function.

UnivariateDifferentiableFunction classes compute both the value and the first derivative of the function.

Specified by:
value in interface UnivariateDifferentiableFunction
Parameters:
t - function input value
Returns:
function result
Throws:
DimensionMismatchException - if t is inconsistent with the function's free parameters or order
Since:
3.1


Copyright (c) 2003-2013 Apache Software Foundation