java.lang.Object
net.finmath.montecarlo.IndependentIncrementsFromICDF
- All Implemented Interfaces:
Serializable
,IndependentIncrements
public class IndependentIncrementsFromICDF
extends Object
implements IndependentIncrements, Serializable
Implementation of a time-discrete n-dimensional sequence of independent increments
W = (W1,...,Wn) form a given set of inverse
cumulative distribution functions.
Independent increments is a sequence of independent random variables index
by the time index associated with the time discretization. At each time step
the increment is a d-dimensional random variable \( Z(t_{i}) \), where d is
numberOfFactors
.
where each component of \( Z_{j}(t_{i}) \) is given by
\[
Z_{j}(t_{i}) = ICDF_{i,j}(U_{i,j})
\]
for a sequence of independent uniform distributes random variables U_{i,j}.
The inverse cumulative distribution functions \( ICDF_{i,j} \) are given by
inverseCumulativeDistributionFunctions
as the
map \( i \mapsto ( j \mapsto ICDF_{i,j} ) \) (here i is the time index and j is the factor (component).
Each \( U_{i,j} \) is samples using numberOfPaths
.
The class is immutable and thread safe. It uses lazy initialization.- Version:
- 1.6
- Author:
- Christian Fries
- See Also:
- Serialized Form
-
Constructor Summary
ConstructorsConstructorDescriptionIndependentIncrementsFromICDF(TimeDiscretization timeDiscretization, int numberOfFactors, int numberOfPaths, int seed, IntFunction<IntFunction<DoubleUnaryOperator>> inverseCumulativeDistributionFunctions)
Construct the simulation of independet increments.IndependentIncrementsFromICDF(TimeDiscretization timeDiscretization, int numberOfFactors, int numberOfPaths, int seed, IntFunction<IntFunction<DoubleUnaryOperator>> inverseCumulativeDistributionFunctions, RandomVariableFactory randomVariableFactory)
Construct the simulation of independent increments. -
Method Summary
Modifier and TypeMethodDescriptionboolean
getCloneWithModifiedSeed(int seed)
Return a new object implementing BrownianMotion having the same specifications as this object but a different seed for the random number generator.getCloneWithModifiedTimeDiscretization(TimeDiscretization newTimeDiscretization)
Return a new object implementing BrownianMotion having the same specifications as this object but a different time discretization.getIncrement(int timeIndex, int factor)
Return the increment for a given timeIndex and given factor.int
Returns the number of factors.int
Returns the number of paths.getRandomVariableForConstant(double value)
Returns a random variable which is initialized to a constant, but has exactly the same number of paths or discretization points as the ones used by this BrownianMotion.int
getSeed()
Returns the time discretization used for this set of time-discrete Brownian increments.int
hashCode()
toString()
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface net.finmath.montecarlo.IndependentIncrements
getIncrement
-
Constructor Details
-
IndependentIncrementsFromICDF
public IndependentIncrementsFromICDF(TimeDiscretization timeDiscretization, int numberOfFactors, int numberOfPaths, int seed, IntFunction<IntFunction<DoubleUnaryOperator>> inverseCumulativeDistributionFunctions, RandomVariableFactory randomVariableFactory)Construct the simulation of independent increments. Independent increments is a sequence of independent random variables index by the time index associated with the time discretization. At each time step the increment is a d-dimensional random variable \( Z(t_{i}) \), where d isnumberOfFactors
. where each component of \( Z_{j}(t_{i}) \) is given by \[ Z_{j}(t_{i}) = ICDF_{i,j}(U_{i,j}) \] for a sequence of independent uniform distributes random variables U_{i,j}. The inverse cumulative distribution functions \( ICDF_{i,j} \) are given byinverseCumulativeDistributionFunctions
as the map \( i \mapsto ( j \mapsto ICDF_{i,j} ) \) (here i is the time index and j is the factor (component). Each \( U_{i,j} \) is samples usingnumberOfPaths
. The constructor allows to set the factory to be used for the construction of random variables. This allows to generate increments represented by different implementations of the RandomVariable (e.g. the RandomVariableFromFloatArray internally using float representations).- Parameters:
timeDiscretization
- The time discretization used for the increments.numberOfFactors
- Number of factors.numberOfPaths
- Number of paths to simulate.seed
- The seed of the random number generator.inverseCumulativeDistributionFunctions
- A map from the timeIndices to a map from the from the factors to the corresponding inverse cumulative distribution function.randomVariableFactory
- Factory to be used to create random variable.
-
IndependentIncrementsFromICDF
public IndependentIncrementsFromICDF(TimeDiscretization timeDiscretization, int numberOfFactors, int numberOfPaths, int seed, IntFunction<IntFunction<DoubleUnaryOperator>> inverseCumulativeDistributionFunctions)Construct the simulation of independet increments. The independent increments is a sequence of independent random variables index by the time index associated with the time discretization. At each time step the increment is a d-dimensional random variable \( Z(t_{i}) \), where d isnumberOfFactors
. where each component of \( Z_{j}(t_{i}) \) is given by \[ Z_{j}(t_{i}) = ICDF_{i,j}(U_{i,j}) \] for a sequence of independent uniform distributes random variables U_{i,j}. The inverse cumulative distribution functions \( ICDF_{i,j} \) are given byinverseCumulativeDistributionFunctions
as the map \( i \mapsto ( j \mapsto ICDF_{i,j} ) \) (here i is the time index and j is the factor (component). Each \( U_{i,j} \) is samples usingnumberOfPaths
.- Parameters:
timeDiscretization
- The time discretization used for the increments.numberOfFactors
- Number of factors.numberOfPaths
- Number of paths to simulate.seed
- The seed of the random number generator.inverseCumulativeDistributionFunctions
- A map from the timeIndices to a map from the from the factors to the corresponding inverse cumulative distribution function.
-
-
Method Details
-
getCloneWithModifiedSeed
Description copied from interface:IndependentIncrements
Return a new object implementing BrownianMotion having the same specifications as this object but a different seed for the random number generator. This method is useful if you like to make Monte-Carlo samplings by changing the seed.- Specified by:
getCloneWithModifiedSeed
in interfaceIndependentIncrements
- Parameters:
seed
- New value for the seed.- Returns:
- New object implementing BrownianMotion.
-
getCloneWithModifiedTimeDiscretization
public IndependentIncrements getCloneWithModifiedTimeDiscretization(TimeDiscretization newTimeDiscretization)Description copied from interface:IndependentIncrements
Return a new object implementing BrownianMotion having the same specifications as this object but a different time discretization.- Specified by:
getCloneWithModifiedTimeDiscretization
in interfaceIndependentIncrements
- Parameters:
newTimeDiscretization
- New time discretization- Returns:
- New object implementing BrownianMotion.
-
getIncrement
Description copied from interface:IndependentIncrements
Return the increment for a given timeIndex and given factor. The method returns the random variable Δ Xj(ti) := Xj(ti+1)-X(ti) for the given time index i and a given factor (index) j- Specified by:
getIncrement
in interfaceIndependentIncrements
- Parameters:
timeIndex
- The time index (corresponding to the this class's time discretization)factor
- The index of the factor (independent scalar increment)- Returns:
- The factor (component) of the increments (a random variable)
-
getTimeDiscretization
Description copied from interface:IndependentIncrements
Returns the time discretization used for this set of time-discrete Brownian increments.- Specified by:
getTimeDiscretization
in interfaceIndependentIncrements
- Returns:
- The time discretization used for this set of time-discrete Brownian increments.
-
getNumberOfFactors
public int getNumberOfFactors()Description copied from interface:IndependentIncrements
Returns the number of factors.- Specified by:
getNumberOfFactors
in interfaceIndependentIncrements
- Returns:
- The number of factors.
-
getNumberOfPaths
public int getNumberOfPaths()Description copied from interface:IndependentIncrements
Returns the number of paths.- Specified by:
getNumberOfPaths
in interfaceIndependentIncrements
- Returns:
- The number of paths.
-
getRandomVariableForConstant
Description copied from interface:IndependentIncrements
Returns a random variable which is initialized to a constant, but has exactly the same number of paths or discretization points as the ones used by this BrownianMotion.- Specified by:
getRandomVariableForConstant
in interfaceIndependentIncrements
- Parameters:
value
- The constant value to be used for initialized the random variable.- Returns:
- A new random variable.
-
getSeed
public int getSeed()- Returns:
- Returns the seed.
-
toString
-
equals
-
hashCode
public int hashCode()
-