org.apache.commons.math3.analysis.function

## Class Sinc

- java.lang.Object
- - 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 1383441 2012-09-11 14:56:39Z luc $

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private boolean` | `normalized` For normalized sinc function.
    `private static double` | `SHORTCUT` Value below which the computations are done using Taylor series.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Sinc()` The sinc function, `sin(x) / x`.
    `Sinc(boolean normalized)` Instantiates the sinc function.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `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)

      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
      Since:
        3.1

Copyright (c) 2003-2013 Apache Software Foundation