Last updated: 2023-03-16.
tf_quant_finance.math.integration.gauss_kronrod#
Evaluates definite integral using adaptive Gauss-Kronrod quadrature.
tf_quant_finance.math.integration.gauss_kronrod(
func, lower, upper, tolerance, num_points=21, max_depth=20, dtype=None,
name=None
)
Integrates func using adaptive Gauss-Kronrod quadrature [1].
Applies change of variables to the function to obtain the [-1,1] integration
interval.
Takes the sum of values obtained from evaluating the new function at points
given by the roots of the Legendre polynomial of degree (num_points-1)//2
and the roots of the Stieltjes polynomial of degree (num_points+1)//2,
multiplied with corresponding precalculated coefficients.
Repeats procedure if not accurate enough by halving the intervals and dividing
these into the same number of subintervals.
References#
[1] https://en.wikipedia.org/wiki/Gauss–Kronrod_quadrature_formula
Example#
f = lambda x: x*x
a = tf.constant([0.0])
b = tf.constant([3.0])
tol = 1e-5
num_points = 21
max_depth = 10
gauss_kronrod(f, a, b, tol, num_points, max_depth) # [9.0]
Args:#
func: Represents a function to be integrated. It must be a callable of a singleTensorparameter and return aTensorof the same shape and dtype as its input. It will be called with aTensorof shapelower.shape + [n, num_points](wherenis defined by the algorithm and represents the number of subintervals) and of the samedtypeaslower.lower: Represents the lower limits of integration.funcwill be integrated between each pair of points defined bylowerandupper. Must be a 1-dimensional tensor of shape[batch_dim].upper: Same shape and dtype aslowerrepresenting the upper limits of intergation.tolerance: Represents the tolerance for the estimated error of the integral estimation, at which to stop further dividing the intervals.num_points: Number of points at which the functionfuncwill be evaluated. Implemented for 15,21,31. Default value: 21.max_depth: Maximum number of times to divide intervals into two parts and recalculate Gauss-Kronrod on them. Default value: 20.dtype: If supplied, the dtype for thelowerandupper. Result will have the same dtype. Default value: None which maps to dtype oflower.name: The name to give to the ops created by this function. Default value: None which maps to ‘gauss_kronrod’.
Returns:#
Tensor of shape [batch_dim], containing value of the definite integral.