- java.lang.Object
-
- net.finmath.montecarlo.RandomVariableFromDoubleArray
-
- All Implemented Interfaces:
Serializable
,RandomVariable
public class RandomVariableFromDoubleArray extends Object implements RandomVariable
The class RandomVariableFromDoubleArray represents a random variable being the evaluation of a stochastic process at a certain time within a Monte-Carlo simulation. It is thus essentially a vector of doubles - the realizations - together with a double - the time. The index of the vector represents path. The class may also be used for non-stochastic quantities which may potentially be stochastic (e.g. volatility). If only non-stochastic random variables are involved in an operation the class uses optimized code. Accesses performed exclusively through the interfaceRandomVariable
is thread safe (and does not mutate the class). The implementation requires Java 8 or better.- Version:
- 2.1
- Author:
- Christian Fries
- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description RandomVariableFromDoubleArray(double value)
Create a non stochastic random variable, i.e.RandomVariableFromDoubleArray(double time, double value)
Create a non stochastic random variable, i.e.RandomVariableFromDoubleArray(double time, double[] realisations)
Create a stochastic random variable.RandomVariableFromDoubleArray(double time, double[] realisations, int typePriority)
Create a stochastic random variable.RandomVariableFromDoubleArray(double time, double value, int typePriority)
Create a non stochastic random variable, i.e.RandomVariableFromDoubleArray(double time, int numberOfPath, double value)
Deprecated.RandomVariableFromDoubleArray(double time, IntToDoubleFunction realizations, int size)
Create a stochastic random variable.RandomVariableFromDoubleArray(double time, IntToDoubleFunction realizations, int size, int typePriority)
Create a stochastic random variable.RandomVariableFromDoubleArray(RandomVariable value)
Create a random variable from a given other implementation ofRandomVariable
.RandomVariableFromDoubleArray(RandomVariable value, DoubleUnaryOperator function)
Create a random variable by applying a function to a given other implementation ofRandomVariable
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description RandomVariable
abs()
Applies x → Math.abs(x), i.e.RandomVariable
accrue(RandomVariable rate, double periodLength)
Applies x → x * (1.0 + rate * periodLength) to this random variable.RandomVariable
add(double value)
Applies x → x + value to this random variable.RandomVariable
add(RandomVariable randomVariable)
Applies x → x+randomVariable to this random variable.RandomVariable
addProduct(RandomVariable factor1, double factor2)
Applies x → x + factor1 * factor2RandomVariable
addProduct(RandomVariable factor1, RandomVariable factor2)
Applies x → x + factor1 * factor2RandomVariable
addRatio(RandomVariable numerator, RandomVariable denominator)
Applies x → x + numerator / denominatorRandomVariable
addSumProduct(List<RandomVariable> factor1, List<RandomVariable> factor2)
Applies \( x \mapsto x + \sum_{i=0}^{n-1} factor1_{i} * factor2_{i}RandomVariable
apply(DoubleBinaryOperator operatorOuter, DoubleBinaryOperator operatorInner, RandomVariable argument1, RandomVariable argument2)
RandomVariable
apply(DoubleBinaryOperator operator, RandomVariable argument)
Applies x → operator(x,y) to this random variable, where x is this random variable and y is a given random variable.RandomVariable
apply(DoubleUnaryOperator operator)
Applies x → operator(x) to this random variable.RandomVariable
apply(DoubleTernaryOperator operator, RandomVariable argument1, RandomVariable argument2)
Applies x → operator(x,y,z) to this random variable, where x is this random variable and y and z are given random variable.RandomVariable
average()
Returns a random variable which is deterministic and corresponds the expectation of this random variable.RandomVariable
bus(double value)
Applies x → value - x to this random variable.RandomVariable
bus(RandomVariable randomVariable)
Applies x → randomVariable-x to this random variable.RandomVariable
cache()
Return a cacheable version of this object (often a self-reference).RandomVariable
cap(double cap)
Applies x → min(x,cap) to this random variable.RandomVariable
cap(RandomVariable randomVariable)
Applies x → min(x,cap) to this random variable.RandomVariable
choose(RandomVariable valueIfTriggerNonNegative, RandomVariable valueIfTriggerNegative)
Applies x → (x ≥ 0 ? valueIfTriggerNonNegative : valueIfTriggerNegative)RandomVariable
cos()
Applies x → cos(x) to this random variable.RandomVariable
discount(RandomVariable rate, double periodLength)
Applies x → x / (1.0 + rate * periodLength) to this random variable.RandomVariable
div(double value)
Applies x → x / value to this random variable.RandomVariable
div(RandomVariable randomVariable)
Applies x → x/randomVariable to this random variable.Double
doubleValue()
Returns the double value if isDeterministic() is true.boolean
equals(RandomVariable randomVariable)
Compare this random variable with a given oneRandomVariableFromDoubleArray
exp()
Applies x → exp(x) to this random variable.RandomVariableFromDoubleArray
expm1()
Applies x → expm1(x) (that is x → exp(x)-1.0) to this random variable.RandomVariable
floor(double floor)
Applies x → max(x,floor) to this random variable.RandomVariable
floor(RandomVariable randomVariable)
Applies x → max(x,floor) to this random variable.double
get(int pathOrState)
Evaluate at a given path or state.double
getAverage()
Returns the expectation of this random variable.double
getAverage(RandomVariable probabilities)
Returns the expectation of this random variable for a given probability measure (weight).RandomVariable
getConditionalExpectation(ConditionalExpectationEstimator conditionalExpectationOperator)
Returns the conditional expectation using a given conditional expectation estimator.double
getFiltrationTime()
Returns the filtration time.double[]
getHistogram(double[] intervalPoints)
Generates a Histogram based on the realizations stored in this random variable.double[][]
getHistogram(int numberOfPoints, double standardDeviations)
Generates a histogram based on the realizations stored in this random variable using interval points calculated from the arguments, see alsoRandomVariable.getHistogram(double[])
.double
getMax()
Returns the maximum value attained by this random variable.double
getMin()
Returns the minimum value attained by this random variable.IntToDoubleFunction
getOperator()
Returns the operator path → this.get(path) corresponding to this random variable.double
getQuantile(double quantile)
Returns the quantile value for this given random variable, i.e., the value x such that P(this < x) = quantile, where P denotes the probability measure.double
getQuantile(double quantile, RandomVariable probabilities)
Returns the quantile value for this given random variable, i.e., the value x such that P(this < x) = quantile, where P denotes the probability measure.double
getQuantileExpectation(double quantileStart, double quantileEnd)
Returns the expectation over a quantile for this given random variable.double[]
getRealizations()
Returns a vector representing the realization of this random variable.DoubleStream
getRealizationsStream()
Returns a stream of doubles corresponding to the realizations of this random variable.double
getSampleVariance()
Returns the sample variance of this random variable, i.e., V * size()/(size()-1) where V = getVariance().double
getStandardDeviation()
Returns the standard deviation of this random variable, i.e., sqrt(V) where V = ((X-m)^2).getAverage() and X = this and m = X.getAverage().double
getStandardDeviation(RandomVariable probabilities)
Returns the standard deviation of this random variable, i.e., sqrt(V) where V = ((X-m)^2).getAverage(probabilities) and X = this and m = X.getAverage(probabilities).double
getStandardError()
Returns the standard error (discretization error) of this random variable.double
getStandardError(RandomVariable probabilities)
Returns the standard error (discretization error) of this random variable.int
getTypePriority()
Returns the type priority.double
getVariance()
Returns the variance of this random variable, i.e., V where V = ((X-m)^2).getAverage() and X = this and m = X.getAverage().double
getVariance(RandomVariable probabilities)
Returns the variance of this random variable, i.e., V where V = ((X-m)^2).getAverage(probabilities) and X = this and m = X.getAverage(probabilities).RandomVariable
invert()
Applies x → 1/x to this random variable.boolean
isDeterministic()
Check if this random variable is deterministic in the sense that it is represented by a single double value.RandomVariable
isNaN()
Applies x → (Double.isNaN(x) ? 1.0 : 0.0)RandomVariableFromDoubleArray
log()
Applies x → log(x) to this random variable.RandomVariable
mult(double value)
Applies x → x * value to this random variable.RandomVariable
mult(RandomVariable randomVariable)
Applies x → x*randomVariable to this random variable.RandomVariable
pow(double exponent)
Applies x → pow(x,exponent) to this random variable.RandomVariable
sin()
Applies x → sin(x) to this random variable.int
size()
Returns the number of paths or states.RandomVariable
sqrt()
Applies x → sqrt(x) to this random variable.RandomVariable
squared()
Applies x → x * x to this random variable.RandomVariable
sub(double value)
Applies x → x - value to this random variable.RandomVariable
sub(RandomVariable randomVariable)
Applies x → x-randomVariable to this random variable.RandomVariable
subRatio(RandomVariable numerator, RandomVariable denominator)
Applies x → x - numerator / denominatorString
toString()
RandomVariable
vid(double value)
Applies x → value / x to this random variable.RandomVariable
vid(RandomVariable randomVariable)
Applies x → randomVariable/x to this random variable.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface net.finmath.stochastic.RandomVariable
addSumProduct, appy, covariance, expectation, getValues, variance
-
-
-
-
Constructor Detail
-
RandomVariableFromDoubleArray
public RandomVariableFromDoubleArray(RandomVariable value)
Create a random variable from a given other implementation ofRandomVariable
.- Parameters:
value
- Object implementingRandomVariable
.
-
RandomVariableFromDoubleArray
public RandomVariableFromDoubleArray(double value)
Create a non stochastic random variable, i.e. a constant.- Parameters:
value
- the value, a constant.
-
RandomVariableFromDoubleArray
public RandomVariableFromDoubleArray(RandomVariable value, DoubleUnaryOperator function)
Create a random variable by applying a function to a given other implementation ofRandomVariable
.- Parameters:
value
- Object implementingRandomVariable
.function
- A function mapping double to double.
-
RandomVariableFromDoubleArray
public RandomVariableFromDoubleArray(double time, double value, int typePriority)
Create a non stochastic random variable, i.e. a constant.- Parameters:
time
- the filtration time, set to 0.0 if not used.value
- the value, a constant.typePriority
- The priority of this type in construction of result types. See "operator type priority" for details.
-
RandomVariableFromDoubleArray
public RandomVariableFromDoubleArray(double time, double value)
Create a non stochastic random variable, i.e. a constant.- Parameters:
time
- the filtration time, set to 0.0 if not used.value
- the value, a constant.
-
RandomVariableFromDoubleArray
@Deprecated public RandomVariableFromDoubleArray(double time, int numberOfPath, double value)
Deprecated.Create a non stochastic random variable, i.e. a constant.- Parameters:
time
- the filtration time, set to 0.0 if not used.numberOfPath
- The number of paths.value
- the value, a constant.
-
RandomVariableFromDoubleArray
public RandomVariableFromDoubleArray(double time, double[] realisations, int typePriority)
Create a stochastic random variable. Important: The realizations array is not cloned (no defensive copy is made).- Parameters:
time
- the filtration time, set to 0.0 if not used.realisations
- the vector of realizations.typePriority
- The priority of this type in construction of result types. See "operator type priority" for details.- To dos:
- A future version should perform a defensive copy.
-
RandomVariableFromDoubleArray
public RandomVariableFromDoubleArray(double time, double[] realisations)
Create a stochastic random variable. Important: The realizations array is not cloned (not defensive copy is made).- Parameters:
time
- the filtration time, set to 0.0 if not used.realisations
- the vector of realizations.- To dos:
- A future version should perform a defensive copy.
-
RandomVariableFromDoubleArray
public RandomVariableFromDoubleArray(double time, IntToDoubleFunction realizations, int size, int typePriority)
Create a stochastic random variable.- Parameters:
time
- the filtration time, set to 0.0 if not used.realizations
- A map mapping integer (path or state) to double, representing this random variable.size
- The size, i.e., number of paths.typePriority
- The priority of this type in construction of result types. See "operator type priority" for details.
-
RandomVariableFromDoubleArray
public RandomVariableFromDoubleArray(double time, IntToDoubleFunction realizations, int size)
Create a stochastic random variable.- Parameters:
time
- the filtration time, set to 0.0 if not used.realizations
- A map mapping integer (path or state) to double, representing this random variable.size
- The size, i.e., number of paths.
-
-
Method Detail
-
equals
public boolean equals(RandomVariable randomVariable)
Description copied from interface:RandomVariable
Compare this random variable with a given one- Specified by:
equals
in interfaceRandomVariable
- Parameters:
randomVariable
- Random variable to compare with.- Returns:
- True if this random variable and the given one are equal, otherwise false
-
getFiltrationTime
public double getFiltrationTime()
Description copied from interface:RandomVariable
Returns the filtration time.- Specified by:
getFiltrationTime
in interfaceRandomVariable
- Returns:
- The filtration time.
-
getTypePriority
public int getTypePriority()
Description copied from interface:RandomVariable
Returns the type priority.- Specified by:
getTypePriority
in interfaceRandomVariable
- Returns:
- The type priority.
- See Also:
- ssrn abstract 3246127
-
get
public double get(int pathOrState)
Description copied from interface:RandomVariable
Evaluate at a given path or state.- Specified by:
get
in interfaceRandomVariable
- Parameters:
pathOrState
- Index of the path or state.- Returns:
- Value of this random variable at the given path or state.
-
size
public int size()
Description copied from interface:RandomVariable
Returns the number of paths or states.- Specified by:
size
in interfaceRandomVariable
- Returns:
- Number of paths or states.
-
getMin
public double getMin()
Description copied from interface:RandomVariable
Returns the minimum value attained by this random variable.- Specified by:
getMin
in interfaceRandomVariable
- Returns:
- The minimum value.
-
getMax
public double getMax()
Description copied from interface:RandomVariable
Returns the maximum value attained by this random variable.- Specified by:
getMax
in interfaceRandomVariable
- Returns:
- The maximum value.
-
getAverage
public double getAverage()
Description copied from interface:RandomVariable
Returns the expectation of this random variable. The result of this method has to agrees withaverage().doubleValue()
.- Specified by:
getAverage
in interfaceRandomVariable
- Returns:
- The average assuming equi-distribution.
-
getAverage
public double getAverage(RandomVariable probabilities)
Description copied from interface:RandomVariable
Returns the expectation of this random variable for a given probability measure (weight). The result of this method is (mathematically) equivalent to
this.mult(probabilities).getAverage() / probabilities.getAverage()
while the internal implementation may differ, e.g. being more efficient by performing multiplication and summation in the same loop.- Specified by:
getAverage
in interfaceRandomVariable
- Parameters:
probabilities
- The probability weights.- Returns:
- The average assuming the given probability weights.
-
getVariance
public double getVariance()
Description copied from interface:RandomVariable
Returns the variance of this random variable, i.e., V where V = ((X-m)^2).getAverage() and X = this and m = X.getAverage().- Specified by:
getVariance
in interfaceRandomVariable
- Returns:
- The average assuming equi-distribution.
-
getVariance
public double getVariance(RandomVariable probabilities)
Description copied from interface:RandomVariable
Returns the variance of this random variable, i.e., V where V = ((X-m)^2).getAverage(probabilities) and X = this and m = X.getAverage(probabilities).- Specified by:
getVariance
in interfaceRandomVariable
- Parameters:
probabilities
- The probability weights.- Returns:
- The average assuming the given probability weights.
-
getSampleVariance
public double getSampleVariance()
Description copied from interface:RandomVariable
Returns the sample variance of this random variable, i.e., V * size()/(size()-1) where V = getVariance().- Specified by:
getSampleVariance
in interfaceRandomVariable
- Returns:
- The sample variance.
-
getStandardDeviation
public double getStandardDeviation()
Description copied from interface:RandomVariable
Returns the standard deviation of this random variable, i.e., sqrt(V) where V = ((X-m)^2).getAverage() and X = this and m = X.getAverage().- Specified by:
getStandardDeviation
in interfaceRandomVariable
- Returns:
- The standard deviation assuming equi-distribution.
-
getStandardDeviation
public double getStandardDeviation(RandomVariable probabilities)
Description copied from interface:RandomVariable
Returns the standard deviation of this random variable, i.e., sqrt(V) where V = ((X-m)^2).getAverage(probabilities) and X = this and m = X.getAverage(probabilities).- Specified by:
getStandardDeviation
in interfaceRandomVariable
- Parameters:
probabilities
- The probability weights.- Returns:
- The standard error assuming the given probability weights.
-
getStandardError
public double getStandardError()
Description copied from interface:RandomVariable
Returns the standard error (discretization error) of this random variable. For a Monte-Carlo simulation this is 1/Math.sqrt(n) *RandomVariable.getStandardDeviation()
.- Specified by:
getStandardError
in interfaceRandomVariable
- Returns:
- The standard error assuming equi-distribution.
-
getStandardError
public double getStandardError(RandomVariable probabilities)
Description copied from interface:RandomVariable
Returns the standard error (discretization error) of this random variable. For a Monte-Carlo simulation this is 1/Math.sqrt(n) *RandomVariable.getStandardDeviation(RandomVariable)
.- Specified by:
getStandardError
in interfaceRandomVariable
- Parameters:
probabilities
- The probability weights.- Returns:
- The standard error assuming the given probability weights.
-
getQuantile
public double getQuantile(double quantile)
Description copied from interface:RandomVariable
Returns the quantile value for this given random variable, i.e., the value x such that P(this < x) = quantile, where P denotes the probability measure. The method will consider picewise constant values (with constant extrapolation) in the random variable. That is getQuantile(0) wiil return the smallest value and getQuantile(1) will return the largest value.- Specified by:
getQuantile
in interfaceRandomVariable
- Parameters:
quantile
- The quantile level.- Returns:
- The quantile value assuming equi-distribution.
-
getQuantile
public double getQuantile(double quantile, RandomVariable probabilities)
Description copied from interface:RandomVariable
Returns the quantile value for this given random variable, i.e., the value x such that P(this < x) = quantile, where P denotes the probability measure.- Specified by:
getQuantile
in interfaceRandomVariable
- Parameters:
quantile
- The quantile level.probabilities
- The probability weights.- Returns:
- The quantile value assuming the given probability weights.
-
getQuantileExpectation
public double getQuantileExpectation(double quantileStart, double quantileEnd)
Description copied from interface:RandomVariable
Returns the expectation over a quantile for this given random variable. The method will consider picewise constant values (with constant extrapolation) in the random variable. For a ≤ b the method returns (Σa ≤ i ≤ b x[i]) / (b-a+1), where- a = min(max((n+1) * quantileStart - 1, 0, 1);
- b = min(max((n+1) * quantileEnd - 1, 0, 1);
- n = this.size();
- Specified by:
getQuantileExpectation
in interfaceRandomVariable
- Parameters:
quantileStart
- Lower bound of the integral.quantileEnd
- Upper bound of the integral.- Returns:
- The (conditional) expectation of the values between two quantile levels assuming equi-distribution.
-
getHistogram
public double[] getHistogram(double[] intervalPoints)
Description copied from interface:RandomVariable
Generates a Histogram based on the realizations stored in this random variable. The returnedresult
array's length isintervalPoints.length+1
.- The value result[0] equals the relative frequency of values observed in the interval ( -infinity, intervalPoints[0] ].
- The value result[i] equals the relative frequency of values observed in the interval ( intervalPoints[i-1], intervalPoints[i] ].
- The value result[n] equals the relative frequency of values observed in the interval ( intervalPoints[n-1], infinity ).
possibleValues
, thenresult = getHistogram(possibleValues)
returns an array whereresult[i]
is the relative frequency of occurrence ofpossibleValues[i]
. The sum of result[i] over all i is equal to 1, except for uninitialized random variables where all values are 0.- Specified by:
getHistogram
in interfaceRandomVariable
- Parameters:
intervalPoints
- Array of ascending values defining the interval boundaries.- Returns:
- A histogram with respect to a provided interval.
-
getHistogram
public double[][] getHistogram(int numberOfPoints, double standardDeviations)
Description copied from interface:RandomVariable
Generates a histogram based on the realizations stored in this random variable using interval points calculated from the arguments, see alsoRandomVariable.getHistogram(double[])
. The interval points are set with equal distance over an the interval of the specified standard deviation. The interval points used arex[i] = mean + alpha[i] * standardDeviations * sigma
where- i = 0,..., numberOfPoints-1,
- alpha[i] = (i - (numberOfPoints-1)/2.0) / ((numberOfPoints-1)/2.0),
- mean =
RandomVariable.getAverage()
, - sigma =
RandomVariable.getStandardDeviation()
.
result
is an array of two vectors, where result[0] are the intervals center points ('anchor points') and result[1] contains the relative frequency for the interval. The 'anchor point' for the interval (-infinity, x[0]) is x[0] - 1/2 (x[1]-x[0]) and the 'anchor point' for the interval (x[n], infinity) is x[n] + 1/2 (x[n]-x[n-1]). Here n = numberOfPoints is the number of interval points.- Specified by:
getHistogram
in interfaceRandomVariable
- Parameters:
numberOfPoints
- The number of interval points.standardDeviations
- The number of standard deviations defining the discretization radius.- Returns:
- A histogram, given as double[2][], where result[0] are the center point of the intervals and result[1] is the value of
RandomVariable.getHistogram(double[])
for the given the interval points. The length of result[0] and result[1] is numberOfPoints+1.
-
isDeterministic
public boolean isDeterministic()
Description copied from interface:RandomVariable
Check if this random variable is deterministic in the sense that it is represented by a single double value. Note that the methods returns false, if the random variable is represented by a vector where each element has the same value.- Specified by:
isDeterministic
in interfaceRandomVariable
- Returns:
- True if this random variable is deterministic.
-
cache
public RandomVariable cache()
Description copied from interface:RandomVariable
Return a cacheable version of this object (often a self-reference). This method should be called when you store the object for later use, i.e., assign it, or when the object is consumed in a function, but later used also in another function.- Specified by:
cache
in interfaceRandomVariable
- Returns:
- A cacheable version of this object (often a self-reference).
-
getRealizationsStream
public DoubleStream getRealizationsStream()
Description copied from interface:RandomVariable
Returns a stream of doubles corresponding to the realizations of this random variable.- Specified by:
getRealizationsStream
in interfaceRandomVariable
- Returns:
- A stream of doubles corresponding to the realizations of this random variable.
-
getRealizations
public double[] getRealizations()
Description copied from interface:RandomVariable
Returns a vector representing the realization of this random variable. This method is merely useful for analysis. Its interpretation depends on the context (Monte-Carlo or lattice). The method does not expose an internal data model.- Specified by:
getRealizations
in interfaceRandomVariable
- Returns:
- Vector of realizations of this random variable.
-
doubleValue
public Double doubleValue()
Description copied from interface:RandomVariable
Returns the double value if isDeterministic() is true. otherwise throws anUnsupportedOperationException
.- Specified by:
doubleValue
in interfaceRandomVariable
- Returns:
- The double value if isDeterministic() is true, otherwise throws an an
UnsupportedOperationException
.
-
getOperator
public IntToDoubleFunction getOperator()
Description copied from interface:RandomVariable
Returns the operator path → this.get(path) corresponding to this random variable.- Specified by:
getOperator
in interfaceRandomVariable
- Returns:
- The operator path → this.get(path) corresponding to this random variable.
-
apply
public RandomVariable apply(DoubleUnaryOperator operator)
Description copied from interface:RandomVariable
Applies x → operator(x) to this random variable. It returns a new random variable with the result.- Specified by:
apply
in interfaceRandomVariable
- Parameters:
operator
- An unary operator/function, mapping double to double.- Returns:
- New random variable with the result of the function.
-
apply
public RandomVariable apply(DoubleBinaryOperator operator, RandomVariable argument)
Description copied from interface:RandomVariable
Applies x → operator(x,y) to this random variable, where x is this random variable and y is a given random variable. It returns a new random variable with the result.- Specified by:
apply
in interfaceRandomVariable
- Parameters:
operator
- A binary operator/function, mapping (double,double) to double.argument
- A random variable.- Returns:
- New random variable with the result of the function.
-
apply
public RandomVariable apply(DoubleTernaryOperator operator, RandomVariable argument1, RandomVariable argument2)
Description copied from interface:RandomVariable
Applies x → operator(x,y,z) to this random variable, where x is this random variable and y and z are given random variable. It returns a new random variable with the result.- Specified by:
apply
in interfaceRandomVariable
- Parameters:
operator
- A ternary operator/function, mapping (double,double,double) to double.argument1
- A random variable representing y.argument2
- A random variable representing z.- Returns:
- New random variable with the result of the function.
-
apply
public RandomVariable apply(DoubleBinaryOperator operatorOuter, DoubleBinaryOperator operatorInner, RandomVariable argument1, RandomVariable argument2)
-
cap
public RandomVariable cap(double cap)
Description copied from interface:RandomVariable
Applies x → min(x,cap) to this random variable. It returns a new random variable with the result.- Specified by:
cap
in interfaceRandomVariable
- Parameters:
cap
- The cap.- Returns:
- New random variable with the result of the function.
-
floor
public RandomVariable floor(double floor)
Description copied from interface:RandomVariable
Applies x → max(x,floor) to this random variable. It returns a new random variable with the result.- Specified by:
floor
in interfaceRandomVariable
- Parameters:
floor
- The floor.- Returns:
- New random variable with the result of the function.
-
add
public RandomVariable add(double value)
Description copied from interface:RandomVariable
Applies x → x + value to this random variable. It returns a new random variable with the result.- Specified by:
add
in interfaceRandomVariable
- Parameters:
value
- The value to add.- Returns:
- New random variable with the result of the function.
-
sub
public RandomVariable sub(double value)
Description copied from interface:RandomVariable
Applies x → x - value to this random variable.- Specified by:
sub
in interfaceRandomVariable
- Parameters:
value
- The value to subtract.- Returns:
- New random variable with the result of the function.
-
bus
public RandomVariable bus(double value)
Description copied from interface:RandomVariable
Applies x → value - x to this random variable.- Specified by:
bus
in interfaceRandomVariable
- Parameters:
value
- The value from which this is subtracted.- Returns:
- New random variable with the result of the function.
-
mult
public RandomVariable mult(double value)
Description copied from interface:RandomVariable
Applies x → x * value to this random variable.- Specified by:
mult
in interfaceRandomVariable
- Parameters:
value
- The value to multiply.- Returns:
- New random variable with the result of the function.
-
div
public RandomVariable div(double value)
Description copied from interface:RandomVariable
Applies x → x / value to this random variable.- Specified by:
div
in interfaceRandomVariable
- Parameters:
value
- The value to divide.- Returns:
- New random variable with the result of the function.
-
vid
public RandomVariable vid(double value)
Description copied from interface:RandomVariable
Applies x → value / x to this random variable.- Specified by:
vid
in interfaceRandomVariable
- Parameters:
value
- The numerator of the ratio where this is the denominator.- Returns:
- New random variable with the result of the function.
-
pow
public RandomVariable pow(double exponent)
Description copied from interface:RandomVariable
Applies x → pow(x,exponent) to this random variable.- Specified by:
pow
in interfaceRandomVariable
- Parameters:
exponent
- The exponent.- Returns:
- New random variable with the result of the function.
-
average
public RandomVariable average()
Description copied from interface:RandomVariable
Returns a random variable which is deterministic and corresponds the expectation of this random variable.- Specified by:
average
in interfaceRandomVariable
- Returns:
- New random variable being the expectation of this random variable.
-
getConditionalExpectation
public RandomVariable getConditionalExpectation(ConditionalExpectationEstimator conditionalExpectationOperator)
Description copied from interface:RandomVariable
Returns the conditional expectation using a given conditional expectation estimator.- Specified by:
getConditionalExpectation
in interfaceRandomVariable
- Parameters:
conditionalExpectationOperator
- A given conditional expectation estimator.- Returns:
- The conditional expectation of this random variable (as a random variable)
-
squared
public RandomVariable squared()
Description copied from interface:RandomVariable
Applies x → x * x to this random variable.- Specified by:
squared
in interfaceRandomVariable
- Returns:
- New random variable with the result of the function.
-
sqrt
public RandomVariable sqrt()
Description copied from interface:RandomVariable
Applies x → sqrt(x) to this random variable.- Specified by:
sqrt
in interfaceRandomVariable
- Returns:
- New random variable with the result of the function.
-
invert
public RandomVariable invert()
Description copied from interface:RandomVariable
Applies x → 1/x to this random variable.- Specified by:
invert
in interfaceRandomVariable
- Returns:
- New random variable with the result of the function.
-
abs
public RandomVariable abs()
Description copied from interface:RandomVariable
Applies x → Math.abs(x), i.e. x → |x| to this random variable.- Specified by:
abs
in interfaceRandomVariable
- Returns:
- New random variable with the result of the function.
-
exp
public RandomVariableFromDoubleArray exp()
Description copied from interface:RandomVariable
Applies x → exp(x) to this random variable.- Specified by:
exp
in interfaceRandomVariable
- Returns:
- New random variable with the result of the function.
-
expm1
public RandomVariableFromDoubleArray expm1()
Description copied from interface:RandomVariable
Applies x → expm1(x) (that is x → exp(x)-1.0) to this random variable.- Specified by:
expm1
in interfaceRandomVariable
- Returns:
- New random variable with the result of the function.
-
log
public RandomVariableFromDoubleArray log()
Description copied from interface:RandomVariable
Applies x → log(x) to this random variable.- Specified by:
log
in interfaceRandomVariable
- Returns:
- New random variable with the result of the function.
-
sin
public RandomVariable sin()
Description copied from interface:RandomVariable
Applies x → sin(x) to this random variable.- Specified by:
sin
in interfaceRandomVariable
- Returns:
- New random variable with the result of the function.
-
cos
public RandomVariable cos()
Description copied from interface:RandomVariable
Applies x → cos(x) to this random variable.- Specified by:
cos
in interfaceRandomVariable
- Returns:
- New random variable with the result of the function.
-
add
public RandomVariable add(RandomVariable randomVariable)
Description copied from interface:RandomVariable
Applies x → x+randomVariable to this random variable.- Specified by:
add
in interfaceRandomVariable
- Parameters:
randomVariable
- A random variable (compatible with this random variable).- Returns:
- New random variable with the result of the function.
-
sub
public RandomVariable sub(RandomVariable randomVariable)
Description copied from interface:RandomVariable
Applies x → x-randomVariable to this random variable.- Specified by:
sub
in interfaceRandomVariable
- Parameters:
randomVariable
- A random variable (compatible with this random variable).- Returns:
- New random variable with the result of the function.
-
bus
public RandomVariable bus(RandomVariable randomVariable)
Description copied from interface:RandomVariable
Applies x → randomVariable-x to this random variable.- Specified by:
bus
in interfaceRandomVariable
- Parameters:
randomVariable
- A random variable (compatible with this random variable).- Returns:
- New random variable with the result of the function.
-
mult
public RandomVariable mult(RandomVariable randomVariable)
Description copied from interface:RandomVariable
Applies x → x*randomVariable to this random variable.- Specified by:
mult
in interfaceRandomVariable
- Parameters:
randomVariable
- A random variable (compatible with this random variable).- Returns:
- New random variable with the result of the function.
-
div
public RandomVariable div(RandomVariable randomVariable)
Description copied from interface:RandomVariable
Applies x → x/randomVariable to this random variable.- Specified by:
div
in interfaceRandomVariable
- Parameters:
randomVariable
- A random variable (compatible with this random variable).- Returns:
- New random variable with the result of the function.
-
vid
public RandomVariable vid(RandomVariable randomVariable)
Description copied from interface:RandomVariable
Applies x → randomVariable/x to this random variable.- Specified by:
vid
in interfaceRandomVariable
- Parameters:
randomVariable
- A random variable (compatible with this random variable).- Returns:
- New random variable with the result of the function.
-
cap
public RandomVariable cap(RandomVariable randomVariable)
Description copied from interface:RandomVariable
Applies x → min(x,cap) to this random variable.- Specified by:
cap
in interfaceRandomVariable
- Parameters:
randomVariable
- The cap. A random variable (compatible with this random variable).- Returns:
- New random variable with the result of the function.
-
floor
public RandomVariable floor(RandomVariable randomVariable)
Description copied from interface:RandomVariable
Applies x → max(x,floor) to this random variable.- Specified by:
floor
in interfaceRandomVariable
- Parameters:
randomVariable
- The floor. A random variable (compatible with this random variable).- Returns:
- New random variable with the result of the function.
-
accrue
public RandomVariable accrue(RandomVariable rate, double periodLength)
Description copied from interface:RandomVariable
Applies x → x * (1.0 + rate * periodLength) to this random variable.- Specified by:
accrue
in interfaceRandomVariable
- Parameters:
rate
- The accruing rate. A random variable (compatible with this random variable).periodLength
- The period length- Returns:
- New random variable with the result of the function.
-
discount
public RandomVariable discount(RandomVariable rate, double periodLength)
Description copied from interface:RandomVariable
Applies x → x / (1.0 + rate * periodLength) to this random variable.- Specified by:
discount
in interfaceRandomVariable
- Parameters:
rate
- The discounting rate. A random variable (compatible with this random variable).periodLength
- The period length- Returns:
- New random variable with the result of the function.
-
choose
public RandomVariable choose(RandomVariable valueIfTriggerNonNegative, RandomVariable valueIfTriggerNegative)
Description copied from interface:RandomVariable
Applies x → (x ≥ 0 ? valueIfTriggerNonNegative : valueIfTriggerNegative)- Specified by:
choose
in interfaceRandomVariable
- Parameters:
valueIfTriggerNonNegative
- The value used if this is greater or equal 0valueIfTriggerNegative
- The value used if the this is less than 0- Returns:
- New random variable with the result of the function.
-
addProduct
public RandomVariable addProduct(RandomVariable factor1, double factor2)
Description copied from interface:RandomVariable
Applies x → x + factor1 * factor2- Specified by:
addProduct
in interfaceRandomVariable
- Parameters:
factor1
- The factor 1. A random variable (compatible with this random variable).factor2
- The factor 2.- Returns:
- New random variable with the result of the function.
-
addProduct
public RandomVariable addProduct(RandomVariable factor1, RandomVariable factor2)
Description copied from interface:RandomVariable
Applies x → x + factor1 * factor2- Specified by:
addProduct
in interfaceRandomVariable
- Parameters:
factor1
- The factor 1. A random variable (compatible with this random variable).factor2
- The factor 2. A random variable (compatible with this random variable).- Returns:
- New random variable with the result of the function.
-
addSumProduct
public RandomVariable addSumProduct(List<RandomVariable> factor1, List<RandomVariable> factor2)
Description copied from interface:RandomVariable
Applies \( x \mapsto x + \sum_{i=0}^{n-1} factor1_{i} * factor2_{i}- Specified by:
addSumProduct
in interfaceRandomVariable
- Parameters:
factor1
- The factor 1. A list of random variables (compatible with this random variable).factor2
- The factor 2. A list of random variables (compatible with this random variable).- Returns:
- New random variable with the result of the function.
-
addRatio
public RandomVariable addRatio(RandomVariable numerator, RandomVariable denominator)
Description copied from interface:RandomVariable
Applies x → x + numerator / denominator- Specified by:
addRatio
in interfaceRandomVariable
- Parameters:
numerator
- The numerator of the ratio to add. A random variable (compatible with this random variable).denominator
- The denominator of the ratio to add. A random variable (compatible with this random variable).- Returns:
- New random variable with the result of the function.
-
subRatio
public RandomVariable subRatio(RandomVariable numerator, RandomVariable denominator)
Description copied from interface:RandomVariable
Applies x → x - numerator / denominator- Specified by:
subRatio
in interfaceRandomVariable
- Parameters:
numerator
- The numerator of the ratio to sub. A random variable (compatible with this random variable).denominator
- The denominator of the ratio to sub. A random variable (compatible with this random variable).- Returns:
- New random variable with the result of the function.
-
isNaN
public RandomVariable isNaN()
Description copied from interface:RandomVariable
Applies x → (Double.isNaN(x) ? 1.0 : 0.0)- Specified by:
isNaN
in interfaceRandomVariable
- Returns:
- A random variable which is 1.0 for all states that are NaN, otherwise 0.0.
-
-