Reference documentation for deal.II version GIT relicensing-14-gd371fb467a 2024-02-26 20:50:01+00:00
\(\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 25 of file function_tools.cc.