Reference documentation for deal.II version GIT f0f8c7fe18 2023-03-21 21:25:02+00:00
FunctionTools Namespace Reference

## Functions

template<int dim>
void taylor_estimate_function_bounds (const Function< dim > &function, const BoundingBox< dim > &box, std::pair< double, double > &value_bounds, std::array< std::pair< double, double >, dim > &gradient_bounds, const unsigned int component=0)

## ◆ taylor_estimate_function_bounds()

template<int dim>
 void FunctionTools::taylor_estimate_function_bounds ( const Function< dim > & function, const BoundingBox< dim > & box, std::pair< double, double > & value_bounds, std::array< std::pair< double, double >, dim > & gradient_bounds, const unsigned int component = 0 )

Estimate bounds on the value and bounds on each gradient component of a Function, $$f$$, over a BoundingBox, by approximating it by a 2nd order Taylor polynomial starting from the box center.

Each lower and upper bound is returned as a std::pair<double, double>, such that the first entry is the lower bound, $$L$$, and the second is the upper bound, $$U$$, i.e. $$f(x) \in [L, U]$$.

The function value, gradient, and Hessian are computed at the box center. The bounds on the value of the function are then estimated as

$$f(x) \in [f(x_c) - F, f(x_c) + F]$$, where $$F = \sum_i |\partial_i f(x_c)| h_i + 1/2 \sum_i \sum_j |\partial_i \partial_j f(x_c)| h_i h_j$$.

Here, $$h_i$$ is half the side length of the box in the $$i$$th coordinate direction, which is the distance we extrapolate. The bounds on the gradient components are estimated similarly as

$$\partial_i f \in [\partial_i f(x_c) - G_i, \partial_i f(x_c) + G_i]$$, where $$G_i = \sum_j |\partial_i \partial_j f(x_c)| h_j$$.

If the function has more than 1 component the component parameter can be used to specify which function component the bounds should be computed for.

Definition at line 26 of file function_tools.cc.