org.apache.commons.math3.analysis

## Interface UnivariateFunction

- All Known Subinterfaces:
    DifferentiableUnivariateFunction, UnivariateDifferentiableFunction
  All Known Implementing Classes:
    Abs, Acos, Acosh, Asin, Asinh, Atan, Atanh, Cbrt, Ceil, Constant, Cos, Cosh, Exp, Expm1, Floor, Gaussian, HarmonicOscillator, Identity, Inverse, Log, Log10, Log1p, Logistic, Logit, Minus, NonLinearConjugateGradientOptimizer.LineSearchFunction, NonLinearConjugateGradientOptimizer.LineSearchFunction, PolynomialFunction, PolynomialFunctionLagrangeForm, PolynomialFunctionNewtonForm, PolynomialSplineFunction, Power, Rint, Sigmoid, Signum, Sin, Sinc, Sinh, Sqrt, StepFunction, Tan, Tanh, Ulp

      public interface UnivariateFunction

  An interface representing a univariate real function.
  When a user-defined function encounters an error during evaluation, the `value` method should throw a user-defined unchecked exception.
  The following code excerpt shows the recommended way to do that using a root solver as an example, but the same construct is applicable to ODE integrators or optimizers.

       private static class LocalException extends RuntimeException {
           // The x value that caused the problem.
           private final double x;

           public LocalException(double x) {
               this.x = x;
           }

           public double getX() {
               return x;
           }
       }

       private static class MyFunction implements UnivariateFunction {
           public double value(double x) {
               double y = hugeFormula(x);
               if (somethingBadHappens) {
                 throw new LocalException(x);
               }
               return y;
           }
       }

       public void compute() {
           try {
               solver.solve(maxEval, new MyFunction(a, b, c), min, max);
           } catch (LocalException le) {
               // Retrieve the x value.
           }
       }

  As shown, the exception is local to the user's code and it is guaranteed that Apache Commons Math will not catch it.
  Version:
    $Id: UnivariateFunction.java 1364387 2012-07-22 18:14:11Z tn $

- - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `double` | `value(double x)` Compute the value of the function.

- - ### Method Detail

    - #### value

          double value(double x)

      Compute the value of the function.
      Parameters:
        `x` - Point at which the function value should be computed.
      Returns:
        the value of the function.
      Throws:
        `java.lang.IllegalArgumentException` - when the activated method itself can ascertain that a precondition, specified in the API expressed at the level of the activated method, has been violated. When Commons Math throws an `IllegalArgumentException`, it is usually the consequence of checking the actual parameters passed to the method.

Copyright (c) 2003-2013 Apache Software Foundation