finMath lib documentation
net.finmath.montecarlo.automaticdifferentiation

Interface RandomVariableDifferentiableInterface

• All Superinterfaces:
RandomVariableInterface, Serializable
All Known Implementing Classes:

public interface RandomVariableDifferentiableInterface
extends RandomVariableInterface
Interface providing additional methods for random variable implementing RandomVariableInterface allowing automatic differentiation. The interface will introduce three additional methods: Long getID() and Map<Long, RandomVariableInterface> getGradient() and Map<Long, RandomVariableInterface> getTangents(). The method getGradient will return a map providing the first order differentiation of the given random variable (this) with respect to all its input RandomVariableDifferentiableInterfaces. The method getTangents will return a map providing the first order differentiation of all dependent random variables with respect to the given random variable (this). To get the differentiation dY/dX of Y with respect to a specific object X using backward mode (getGradient) use Map gradient = Y.getGradient(); RandomVariableInterface derivative = Y.get(X.getID()); To get the differentiation dY/dX of Y with respect to a specific object X using forward mode (getTanget) use Map tangent = X.getTangent(); RandomVariableInterface derivative = X.get(Y.getID()); Note: Some implementations may allow limit the result of the gradient to leave nodes or the result of the tangent to terminal nodes.
Version:
1.0
Author:
Christian Fries
• Method Detail

• getID

Long getID()
A unique id for this random variable. Will be used in getGradient.
Returns:
The id for this random variable.

Returns the gradient of this random variable with respect to all its leaf nodes. The method calculates the map $$v \mapsto \frac{d u}{d v}$$ where $$u$$ denotes this.
Returns:

Returns the gradient of this random variable with respect to the given IDs. The method calculates the map $$v \mapsto \frac{d u}{d v}$$ where $$u$$ denotes this.
Parameters:
independentIDs - Set of IDs of random variables $$v$$ with respect to which the gradients $$\frac{d u}{d v}$$ will be calculated. If null, derivatives w.r.t. all known independents are returned.
Returns:
• getTangents

default Map<Long,RandomVariableInterface> getTangents()
Returns the tangents of this random variable with respect to all its dependent nodes. The method calculated the map $$u \mapsto \frac{d u}{d v}$$ where $$v$$ denotes this.
Returns:
The map of all tangents .
• getTangents

Map<Long,RandomVariableInterface> getTangents(Set<Long> dependentIDs)
Returns the tangents of this random variable with respect to the given dependent node IDs (if dependent). The method calculated the map $$u \mapsto \frac{d u}{d v}$$ where $$v$$ denotes this.
Parameters:
dependentIDs - Set of IDs of random variables $$u$$ with respect to which the differentials $$\frac{d u}{d v}$$ will be calculated. If null, derivatives w.r.t. all known dependents are returned.
Returns:
The map of differentials.
• getCloneIndependent

default RandomVariableDifferentiableInterface getCloneIndependent()
Returns a clone of this differentiable random variable with a new ID. This implies that the random variable is a leaf node and independent from all previous calculations.
Returns:
A clone of this differentiable random variable with a new ID.