IndicatorSimplex

class odl.functionals.default_functionals.IndicatorSimplex(*args, **kwargs)[source]

Bases: Functional

Indicator functional of simplex.

Notes

The functional F is given by:

F(x)
=
\begin{cases}
     0   & \text{if } x_i \geq 0 \forall i \text{ and } \sum_i x_i = r
 \\ +\infty & \text{else.}
\end{cases}

where r is the diameter.

__init__(space, diameter=1, sum_rtol=None)[source]

Initialize a new instance.

Parameters

spaceDiscretizedSpace or TensorSpace

Domain of the functional.

diameterpositive float, optional

Diameter of the simplex.

sum_rtolfloat, optional

Relative tolerance for sum comparison. Default:

  • space.dtype == 'float64': 1e-10 * space.size

  • Otherwise: 1e-6 * space.size

Examples

Example where a point lies outside the unit simplex …

>>> space = odl.rn(3)
>>> ind_simplex = IndicatorSimplex(space)
>>> x = space.one()
>>> ind_simplex(x)
inf

… and one where it lies inside the unit simplex.

>>> x /= odl.sum(x)
>>> ind_simplex(x)
0