Space Structures

The current vector space architecture is undergoing a significant redesign to support a more flexible and extensible framework.

At the core of this framework are vector space structures, represented by the base class :class:VectorSpace. Currently, vectors are assumed to be instances of numpy.ndarray. While complex-valued vectors are supported, they are interpreted as vector spaces over the real numbers.

The inner product, as defined in the :class:HilbertSpace structure, is given by:

\[\Re\left(\overline{x}^T G_{\underline{\mathbb{X}}} y\right)\]

This defines a real-valued inner product, making Hilbert spaces the first level of structure applied to vector spaces in this framework.

Functionals

In addition, regpy introduces the notion of convex real functionals via the class :class:Functional. These include, for example, norms or regularization terms. Functionals provide a second layer of structure by mapping vectors to real values, typically in the context of optimization.

Abstract Spaces

Regpy provides abstract base classes for Hilbert spaces and functionals. These abstract definitions can then be instantiated with concrete vector spaces to produce problem-specific implementations.

from regpy.hilbert import H1
h1_on_my_space = H1(my_domain)

from regpy.functionals import TV
tv_on_my_space = TV(my_domain)

These components enable the composition of rich mathematical structures on top of simple numerical vector spaces, paving the way for general and reusable algorithms in inverse problems and variational methods.