Reference documentation for deal.II version 9.5.1
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
Loading...
Searching...
No Matches
Functions
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)
 

Function Documentation

◆ 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.