package umontreal.iro.lecuyer.functions;
/**
* Represents a function computing
* f (x) - δ for a user-defined function
* f (x) and shift δ.
*
*/
public class ShiftedMathFunction implements MathFunction
,
MathFunctionWithFirstDerivative, MathFunctionWithDerivative,
MathFunctionWithIntegral {
MathFunction func;
double delta;
/**
* Constructs a new function shifting the function func by
* a shift delta.
*
* @param func the function.
*
* @param delta the shift.
*
*
*/
public ShiftedMathFunction (MathFunction func, double delta) {
if (func == null)
throw new NullPointerException ();
this.func = func;
this.delta = delta;
}
/**
* Returns the function f (x).
*
* @return the function.
*
*/
public MathFunction getFunction () {
return func;
}
/**
* Returns the shift δ = delta.
*
* @return the shift.
*
*/
public double getDelta () {
return delta;
}
public double evaluate (double x) {
return func.evaluate (x) - delta;
}
public double derivative (double x) {
return MathFunctionUtil.derivative (func, x);
}
public double derivative (double x, int n) {
return MathFunctionUtil.derivative (func, x, n);
}
public double integral (double a, double b) {
return MathFunctionUtil.integral (func, a, b) - (b - a)*getDelta();
}
}
Ads help maintain this website.