Class ParametricGaussianFunction

java.lang.Object
org.apache.commons.math.optimization.fitting.ParametricGaussianFunction
All Implemented Interfaces:
Serializable, ParametricRealFunction

public class ParametricGaussianFunction extends Object implements ParametricRealFunction, Serializable
A Gaussian function. Specifically:

f(x) = a + b*exp(-((x - c)^2 / (2*d^2)))

The parameters have the following meaning:

  • a is a constant offset that shifts f(x) up or down
  • b is the height of the peak
  • c is the position of the center of the peak
  • d is related to the FWHM by FWHM = 2*sqrt(2*ln(2))*d
Notation key:
  • x^n: x raised to the power of n
  • exp(x): e^x
  • sqrt(x): the square root of x
  • ln(x): the natural logarithm of x
References:
Since:
2.2
See Also:
  • Constructor Summary

    Constructors
    Constructor
    Description
    Constructs an instance.
  • Method Summary

    Modifier and Type
    Method
    Description
    double[]
    gradient(double x, double[] parameters)
    Computes the gradient vector for a four variable version of the function where the parameters, a, b, c, and d, are considered the variables, not x.
    double
    value(double x, double[] parameters)
    Computes value of function f(x) for the specified x and parameters a, b, c, and d.

    Methods inherited from class java.lang.Object

    equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • ParametricGaussianFunction

      public ParametricGaussianFunction()
      Constructs an instance.
  • Method Details

    • value

      public double value(double x, double[] parameters) throws ZeroException
      Computes value of function f(x) for the specified x and parameters a, b, c, and d.
      Specified by:
      value in interface ParametricRealFunction
      Parameters:
      x - x value
      parameters - values of a, b, c, and d
      Returns:
      value of f(x) evaluated at x with the specified parameters
      Throws:
      IllegalArgumentException - if parameters is invalid as determined by validateParameters(double[])
      ZeroException - if parameters values are invalid as determined by validateParameters(double[])
    • gradient

      public double[] gradient(double x, double[] parameters) throws ZeroException
      Computes the gradient vector for a four variable version of the function where the parameters, a, b, c, and d, are considered the variables, not x. That is, instead of computing the gradient vector for the function f(x) (which would just be the derivative of f(x) with respect to x since it's a one-dimensional function), computes the gradient vector for the function f(a, b, c, d) = a + b*exp(-((x - c)^2 / (2*d^2))) treating the specified x as a constant.

      The components of the computed gradient vector are the partial derivatives of f(a, b, c, d) with respect to each variable. That is, the partial derivative of f(a, b, c, d) with respect to a, the partial derivative of f(a, b, c, d) with respect to b, the partial derivative of f(a, b, c, d) with respect to c, and the partial derivative of f(a, b, c, d) with respect to d.

      Specified by:
      gradient in interface ParametricRealFunction
      Parameters:
      x - x value to be used as constant in f(a, b, c, d)
      parameters - values of a, b, c, and d for computation of gradient vector of f(a, b, c, d)
      Returns:
      gradient vector of f(a, b, c, d)
      Throws:
      IllegalArgumentException - if parameters is invalid as determined by validateParameters(double[])
      ZeroException - if parameters values are invalid as determined by validateParameters(double[])