finMath lib documentation
net.finmath.time

## Class TimeDiscretizationFromArray

• All Implemented Interfaces:
Serializable, Iterable<Double>, TimeDiscretization
Direct Known Subclasses:
TenorFromArray

public class TimeDiscretizationFromArray
extends Object
implements Serializable, TimeDiscretization
This class represents a set of discrete points in time.
It handles the mapping from time indices to time points and back. It uses a time tick size ("quantum"). This is to make comparison of times safe. The default tick size is 1.0 / (365.0 * 24.0) (which corresponds to one hour if 1.0 is a non-leap-year): Times are rounded to the nearest multiple of 1.0 / (365.0 * 24.0). This property can be configured via a System.setProperty("net.finmath.functions.TimeDiscretization.timeTickSize"). Objects of this class are immutable.
Version:
1.6
Author:
Christian Fries
Serialized Form
• ### Nested Class Summary

Nested Classes
Modifier and Type Class and Description
static class  TimeDiscretizationFromArray.ShortPeriodLocation
• ### Constructor Summary

Constructors
Constructor and Description
TimeDiscretizationFromArray(double... times)
Constructs a time discretization from a given set of doubles.
TimeDiscretizationFromArray(Double[] times)
Constructs a time discretization from a given set of Doubles.
TimeDiscretizationFromArray(Double[] times, double tickSize)
Constructs a time discretization using the given tick size.
TimeDiscretizationFromArray(double initial, double last, double deltaT, TimeDiscretizationFromArray.ShortPeriodLocation shortPeriodLocation)
Constructs an equi-distant time discretization with stub periods at start or end.
TimeDiscretizationFromArray(double initial, int numberOfTimeSteps, double deltaT)
Constructs an equi-distant time discretization with points timeDiscretizationFromArray[i] being for(i=0; i ≤ timeSteps; i++) timeDiscretizationFromArray[i] = initial + i * deltaT;
TimeDiscretizationFromArray(DoubleStream times)
Constructs a time discretization from a (non closed and not necessarily sorted) stream of doubles.
TimeDiscretizationFromArray(DoubleStream times, boolean allowDuplicates)
Constructs a time discretization from a (non closed and not necessarily sorted) stream of doubles.
TimeDiscretizationFromArray(DoubleStream times, double tickSize)
Constructs a time discretization using the given tick size.
TimeDiscretizationFromArray(DoubleStream times, double tickSize, boolean allowDuplicates)
Constructs a time discretization using the given tick size.
TimeDiscretizationFromArray(Iterable<Double> times)
Constructs a time discretization from an iterable of doubles.
TimeDiscretizationFromArray(Iterable<Double> times, boolean allowDuplicates)
Constructs a time discretization from an iterable of doubles.
TimeDiscretizationFromArray(Iterable<Double> times, double tickSize)
Constructs a time discretization using the given tick size.
TimeDiscretizationFromArray(Iterable<Double> times, double tickSize, boolean allowDuplicates)
Constructs a time discretization using the given tick size.
TimeDiscretizationFromArray(Stream<Double> times)
Constructs a time discretization from a (non closed and not necessarily sorted) stream of boxed doubles.
TimeDiscretizationFromArray(Stream<Double> times, double tickSize)
Constructs a time discretization using the given tick size.
TimeDiscretizationFromArray(Stream<Double> times, double tickSize, boolean allowDuplicates)
Constructs a time discretization using the given tick size.
• ### Method Summary

All Methods
Modifier and Type Method and Description
boolean equals(Object obj)
ArrayList<Double> getAsArrayList()
Return a clone of this time discretization as ArrayList<Double>.
double[] getAsDoubleArray()
Return a clone of this time discretization as double[].
int getNumberOfTimes()
int getNumberOfTimeSteps()
double getTickSize()
Returns the smallest time span distinguishable in this time discretization.
double getTime(int timeIndex)
Returns the time for the given time index.
int getTimeIndex(double time)
Returns the time index for the given time.
int getTimeIndexNearestGreaterOrEqual(double time)
Returns the time index for the time in the time discretization which is the nearest to the given time, being greater or equal (i.e. min(i : timeDiscretizationFromArray[i] ≥ time where timeDiscretizationFromArray[i] ≤ timeDiscretizationFromArray[j]).
int getTimeIndexNearestLessOrEqual(double time)
Returns the time index for the time in the time discretization which is the nearest to the given time, being less or equal (i.e. max(i : timeDiscretizationFromArray[i] ≤ time where timeDiscretizationFromArray[i] ≤ timeDiscretizationFromArray[j]).
TimeDiscretization getTimeShiftedTimeDiscretization(double timeShift)
Return a new time discretization where all time points have been shifted by a given time shift.
double getTimeStep(int timeIndex)
Returns the time step from the given time index to the next one.
int hashCode()
TimeDiscretization intersect(TimeDiscretization that)
Returns the intersection of this time discretization with another one.
Iterator<Double> iterator()
String toString()
TimeDiscretization union(TimeDiscretization that)
Returns the union of this time discretization with another one.
• ### Methods inherited from class java.lang.Object

clone, finalize, getClass, notify, notifyAll, wait, wait, wait
• ### Methods inherited from interface java.lang.Iterable

forEach, spliterator
• ### Constructor Detail

• #### TimeDiscretizationFromArray

public TimeDiscretizationFromArray(DoubleStream times,
double tickSize,
boolean allowDuplicates)
Constructs a time discretization using the given tick size. The time discretization will be sorted. Duplicate entries are allowed if allowDuplicates is true, otherwise duplicate entries are removed.
Parameters:
times - A non closed and not necessarily sorted stream containing the time points.
tickSize - A non-negative double representing the smallest time span distinguishable.
allowDuplicates - If true, the time discretization allows duplicate entries.
• #### TimeDiscretizationFromArray

public TimeDiscretizationFromArray(DoubleStream times,
double tickSize)
Constructs a time discretization using the given tick size.
Parameters:
times - A non closed and not necessarily sorted stream containing the time points.
tickSize - A non-negative double representing the smallest time span distinguishable.
• #### TimeDiscretizationFromArray

public TimeDiscretizationFromArray(DoubleStream times,
boolean allowDuplicates)
Constructs a time discretization from a (non closed and not necessarily sorted) stream of doubles. The time discretization will be sorted. Duplicate entries are allowed if allowDuplicates is true, otherwise duplicate entries are removed.
Parameters:
times - A double stream of time points for the time discretization.
allowDuplicates - If true, the time discretization allows duplicate entries.
• #### TimeDiscretizationFromArray

public TimeDiscretizationFromArray(DoubleStream times)
Constructs a time discretization from a (non closed and not necessarily sorted) stream of doubles.
Parameters:
times - A double stream of time points for the time discretization.
• #### TimeDiscretizationFromArray

public TimeDiscretizationFromArray(Stream<Double> times,
double tickSize,
boolean allowDuplicates)
Constructs a time discretization using the given tick size.
Parameters:
times - A non closed and not necessarily sorted stream containing the time points.
tickSize - A non-negative double representing the smallest time span distinguishable.
allowDuplicates - If true, the time discretization allows duplicate entries.
• #### TimeDiscretizationFromArray

public TimeDiscretizationFromArray(Stream<Double> times,
double tickSize)
Constructs a time discretization using the given tick size. The time discretization will be sorted. Duplicate entries are allowed if allowDuplicates is true, otherwise duplicate entries are removed.
Parameters:
times - A non closed and not necessarily sorted stream containing the time points.
tickSize - A non-negative double representing the smallest time span distinguishable.
• #### TimeDiscretizationFromArray

public TimeDiscretizationFromArray(Stream<Double> times)
Constructs a time discretization from a (non closed and not necessarily sorted) stream of boxed doubles.
Parameters:
times - A double stream of time points for the time discretization.
• #### TimeDiscretizationFromArray

public TimeDiscretizationFromArray(Iterable<Double> times,
double tickSize,
boolean allowDuplicates)
Constructs a time discretization using the given tick size. The iteration of the iterable does not have to happen in order.
Parameters:
times - The time to constitute the time discretization.
tickSize - A non-negative double representing the smallest time span distinguishable.
allowDuplicates - If true, the time discretization allows duplicate entries.
• #### TimeDiscretizationFromArray

public TimeDiscretizationFromArray(Iterable<Double> times,
double tickSize)
Constructs a time discretization using the given tick size. The iteration of the iterable does not have to happen in order.
Parameters:
times - The time to constitute the time discretization.
tickSize - A non-negative double representing the smallest time span distinguishable.
• #### TimeDiscretizationFromArray

public TimeDiscretizationFromArray(Iterable<Double> times,
boolean allowDuplicates)
Constructs a time discretization from an iterable of doubles. The iteration does not have to happen in order.
Parameters:
times - The time to constitute the time discretization.
allowDuplicates - If true, the time discretization allows duplicate entries.
• #### TimeDiscretizationFromArray

public TimeDiscretizationFromArray(Iterable<Double> times)
Constructs a time discretization from an iterable of doubles. The iteration does not have to happen in order.
Parameters:
times - The time to constitute the time discretization.
• #### TimeDiscretizationFromArray

public TimeDiscretizationFromArray(double... times)
Constructs a time discretization from a given set of doubles. The given array does not need to be sorted.
Parameters:
times - Given array or arguments list of discretization points.
• #### TimeDiscretizationFromArray

public TimeDiscretizationFromArray(Double[] times)
Constructs a time discretization from a given set of Doubles. The given array does not need to be sorted.
Parameters:
times - Given boxed array of discretization points.
• #### TimeDiscretizationFromArray

public TimeDiscretizationFromArray(Double[] times,
double tickSize)
Constructs a time discretization using the given tick size. The given array does not need to be sorted.
Parameters:
times - Given boxed array of discretization points.
tickSize - A non-negative double representing the smallest time span distinguishable.
• #### TimeDiscretizationFromArray

public TimeDiscretizationFromArray(double initial,
int numberOfTimeSteps,
double deltaT)
Constructs an equi-distant time discretization with points timeDiscretizationFromArray[i] being for(i=0; i ≤ timeSteps; i++) timeDiscretizationFromArray[i] = initial + i * deltaT;
Parameters:
initial - First discretization point.
numberOfTimeSteps - Number of time steps.
deltaT - Time step size.
• #### TimeDiscretizationFromArray

public TimeDiscretizationFromArray(double initial,
double last,
double deltaT,
TimeDiscretizationFromArray.ShortPeriodLocation shortPeriodLocation)
Constructs an equi-distant time discretization with stub periods at start or end.
Parameters:
initial - First discretization point.
last - Last time steps.
deltaT - Time step size.
shortPeriodLocation - Placement of the stub period.
• ### Method Detail

• #### getNumberOfTimes

public int getNumberOfTimes()
Specified by:
getNumberOfTimes in interface TimeDiscretization
Returns:
Returns the number of time discretization points.
• #### getNumberOfTimeSteps

public int getNumberOfTimeSteps()
Specified by:
getNumberOfTimeSteps in interface TimeDiscretization
Returns:
Returns the number of time steps (= number of discretization points-1).
• #### getTime

public double getTime(int timeIndex)
Description copied from interface: TimeDiscretization
Returns the time for the given time index.
Specified by:
getTime in interface TimeDiscretization
Parameters:
timeIndex - Time index
Returns:
Returns the time for a given time index.
• #### getTimeStep

public double getTimeStep(int timeIndex)
Description copied from interface: TimeDiscretization
Returns the time step from the given time index to the next one.
Specified by:
getTimeStep in interface TimeDiscretization
Parameters:
timeIndex - Time index
Returns:
Returns the time step
• #### getTimeIndex

public int getTimeIndex(double time)
Description copied from interface: TimeDiscretization
Returns the time index for the given time. If the given time is not in the time discretization the method returns a negative number being (-insertionPoint-1).
Specified by:
getTimeIndex in interface TimeDiscretization
Parameters:
time - The time.
Returns:
Returns the time index for a given time.
• #### getTimeIndexNearestLessOrEqual

public int getTimeIndexNearestLessOrEqual(double time)
Description copied from interface: TimeDiscretization
Returns the time index for the time in the time discretization which is the nearest to the given time, being less or equal (i.e. max(i : timeDiscretizationFromArray[i] ≤ time where timeDiscretizationFromArray[i] ≤ timeDiscretizationFromArray[j]).
Specified by:
getTimeIndexNearestLessOrEqual in interface TimeDiscretization
Parameters:
time - Given time.
Returns:
Returns a time index
• #### getTimeIndexNearestGreaterOrEqual

public int getTimeIndexNearestGreaterOrEqual(double time)
Description copied from interface: TimeDiscretization
Returns the time index for the time in the time discretization which is the nearest to the given time, being greater or equal (i.e. min(i : timeDiscretizationFromArray[i] ≥ time where timeDiscretizationFromArray[i] ≤ timeDiscretizationFromArray[j]).
Specified by:
getTimeIndexNearestGreaterOrEqual in interface TimeDiscretization
Parameters:
time - Given time.
Returns:
Returns a time index
• #### getAsDoubleArray

public double[] getAsDoubleArray()
Description copied from interface: TimeDiscretization
Return a clone of this time discretization as double[].
Specified by:
getAsDoubleArray in interface TimeDiscretization
Returns:
The time discretization as double[]
• #### getAsArrayList

public ArrayList<Double> getAsArrayList()
Description copied from interface: TimeDiscretization
Return a clone of this time discretization as ArrayList<Double>. Note that this method is costly in terms of performance.
Specified by:
getAsArrayList in interface TimeDiscretization
Returns:
The time discretization as ArrayList<Double>
• #### getTimeShiftedTimeDiscretization

public TimeDiscretization getTimeShiftedTimeDiscretization(double timeShift)
Description copied from interface: TimeDiscretization
Return a new time discretization where all time points have been shifted by a given time shift.
Specified by:
getTimeShiftedTimeDiscretization in interface TimeDiscretization
Parameters:
timeShift - A time shift applied to all discretization points.
Returns:
A new time discretization where all time points have been shifted by the given time shift.
• #### union

public TimeDiscretization union(TimeDiscretization that)
Description copied from interface: TimeDiscretization
Returns the union of this time discretization with another one. This means that the times of the other time discretization will be added. In case the tick sizes differ the union will have the smaller tick size, i. e. the finer precision. Note that when the differing tick sizes are not integer multiples of each other time points might get shifted due to rounding; for example a.intersect(a.union(b)) might not be equal to a.
Specified by:
union in interface TimeDiscretization
Parameters:
that - Another time discretization containing points to add to the time discretization.
Returns:
A new time discretization containing both the time points of this and the other discretization.
• #### intersect

public TimeDiscretization intersect(TimeDiscretization that)
Description copied from interface: TimeDiscretization
Returns the intersection of this time discretization with another one. This means that all times not contained in the other time discretization will be removed. In case the tick sizes differ the intersection will have the greater tick size, i. e. the coarser precision. Note that when the differing tick sizes are not integer multiples of each other time points might get shifted due to rounding; for example a.intersect(a.union(b)) might not be equal to a.
Specified by:
intersect in interface TimeDiscretization
Parameters:
that - Another time discretization containing points to add to the time discretization.
Returns:
A new time discretization containing both the time points of this and the other discretization.
• #### getTickSize

public double getTickSize()
Description copied from interface: TimeDiscretization
Returns the smallest time span distinguishable in this time discretization.
Specified by:
getTickSize in interface TimeDiscretization
Returns:
A non-negative double containing the tick size.
• #### iterator

public Iterator<Double> iterator()
Specified by:
iterator in interface Iterable<Double>
• #### toString

public String toString()
Overrides:
toString in class Object
• #### hashCode

public int hashCode()
Overrides:
hashCode in class Object
• #### equals

public boolean equals(Object obj)
Overrides:
equals in class Object