Overview | Package | Class | Tree | Deprecated | Index | Help
| SSJ V. 2.1.1.
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## umontreal.iro.lecuyer.util
Interface MultivariateFunction

All Known Implementing Classes:
  RatioFunction

    public interface MultivariateFunction

Represents a function of multiple variables. This interface specifies a method `evaluate` that computes a g(x) function, where x = (x0,…, xd-1)∈Rd. It also specifies a method `evaluateGradient` for computing its gradient ∇g(x).

The dimension d can be fixed or variable. When d is fixed, the methods specified by this interface always take the same number of arguments. This is the case, for example, with a ratio of two variables. When d is variable, the implementation can compute the function for a vector x of any length. This can happen for a product or sum of variables.

The methods of this interface take a variable number of arguments to accomodate the common case of fixed dimension with more convenience; the programmer can call the method without creating an array. For the generic case, however, one can replace the arguments with an array.

Method Summary
`double` | `evaluate(double... x)` Computes the function g(x) for the vector `x`.
`double` | `evaluateGradient(int i, double... x)` Computes ∂g(x)/∂xi, the derivative of g(x) with respect to xi.
`int` | `getDimension()` Returns d, the dimension of the function computed by this implementation.

Method Detail

### getDimension

    int getDimension()

  Returns d, the dimension of the function computed by this implementation. If the dimension is not fixed, this method must return a negative value.

  Returns:
    the dimension.

### evaluate

    double evaluate(double... x)

  Computes the function g(x) for the vector `x`. The length of the given array must correspond to the dimension of this function. The method must compute and return the result of the function without modifying the elements in `x` since the array can be reused for further computation.

  Parameters:
    `x` - a vector x.
  Returns:
    the value of g(x).
  Throws:
    `NullPointerException` - if `x` is `null`.
    `IllegalArgumentException` - if `x.length` does not correspond to the dimension of this function.

### evaluateGradient

    double evaluateGradient(int i,
                            double... x)

  Computes ∂g(x)/∂xi, the derivative of g(x) with respect to xi. The length of the given array must correspond to the dimension of this function. The method must compute and return the result of the derivative without modifying the elements in `x` since the array can be reused for further computations, e.g., the gradient ∇g(x).

  Parameters:
    `i` - the variable to derive with respect to.
    `x` - a vector x.
  Returns:
    the value of the partial derivative.
  Throws:
    `NullPointerException` - if `x` is `null`.
    `IllegalArgumentException` - if `x.length` does not correspond to the dimension of this function.
    `IndexOutOfBoundsException` - if `i` is negative or greater than or equal to the dimension of this function.

Overview | Package | Class | Tree | Deprecated | Index | Help
| SSJ V. 2.1.1.
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

To submit a bug or ask questions, send an e-mail to Pierre L'Ecuyer.