Norms
Let \(f\) be a bounded function on domain \(\Omega\).
1. L2 norms
For \(f \in L^2(\Omega)\) use normL2()
:
\|\| f \|\|_{L^2(\Omega)} = \sqrt{\int_\Omega |f|^2}
1.1. Interface
normL2( _range, _expr, _quad, _geomap );
Or the squared norm:
normL2Squared( _range, _expr, _quad, _geomap );
Required parameters:
-
_range
= domain of integration -
_expr
= measurable function
Optional parameters:
-
_quad
= quadrature to use (default: runtime-chosen order) -
_geomap
= geometric mapping (default:GEOMAP_OPT
)
2. H1 norms
H1 norm or semi-norm (for \(f \in H^1(\Omega)\)) can be computed with normH1()
and normSemiH1()
.
\begin{aligned} \|\| f \|\|_{H^1(\Omega)} &= \sqrt{\int_\Omega |f|^2 + |\nabla f|^2} \\ |f|_{H^1(\Omega)} &= \sqrt{\int_\Omega |\nabla f|^2} \end{aligned}
2.1. Interface
normH1( _range, _expr, _grad_expr, _quad, _geomap );
Or semi-norm:
normSemiH1( _range, _grad_expr, _quad, _geomap );
Required parameters:
-
_range
= domain of integration -
_expr
= measurable function -
_grad_expr
= gradient expression (row vector)
2.2. Example
auto g = sin(2*pi*Px())*cos(2*pi*Py());
auto gradg = 2*pi*cos(2*pi*Px())*cos(2*pi*Py())*oneX()
- 2*pi*sin(2*pi*Px())*sin(2*pi*Py())*oneY();
// gradg is a column vector; use trans() to provide a row gradient
double normH1_g = normH1( _range = elements(mesh), _expr = g, _grad_expr = trans(gradg) );
3. L-infinity norm
Use normLinf()
to approximate the infinity norm by sampling (returns value and coordinates):
\|\| f \|\|_\infty = \sup_{x \in \Omega} |f(x)|
3.1. Interface
normLinf( _range, _expr, _pset, _geomap );
Required parameters:
-
_range
= domain of integration -
_expr
= measurable function -
_pset
= set of sampling points (e.g. quadrature points)
Optional parameters:
-
_geomap
= geometric mapping (defaultGEOMAP_OPT
)
The returned object provides:
-
value()
— maximum value -
operator()()
— synonym tovalue()
-
arg()
— coordinates where the maximum occurs