-
-
Notifications
You must be signed in to change notification settings - Fork 657
Open
Description
(follow-up from #30092)
We define a category InnerProductSpaces
with
- parent method
dual
(which returnsself
), - element method
inner_product
.
A complication for complex vector spaces: FreeModule
defines:
dot_product
- which ignoresinner_product_matrix
and does not conjugatehermitian_inner_product
- which ignoresinner_product_matrix
but conjugates the left factor (self
)inner_product
- which usesinner_product_matrix
but does not conjugate.
Perhaps we need to add an extra parameter inner_product_hermitian
to FreeModule
. For a complex base ring, the module would only be added to the category of InnerProductSpaces
if this is True
.
MatrixSpace
elements currently do not have inner_product
.
References:
- Hermitian inner product #10683 ... where
hermitian_inner_product
was introduced - numpy.inner and numpy.dot, numpy.tensordot, numpy.einsum do not conjugate.
- numpy.vdot conjugates the left factor; and also handles the inner product of matrices in the same way.
- SymPy's Matrix.dot has parameters
hermitian
andconjugate_convention
that control if and how factors are conjugated.
See also: https://en.wikipedia.org/wiki/Pseudo-Euclidean_space
CC: @tscrim @orlitzky @egourgoulhon @mjungmath @kcrisman
Component: linear algebra
Issue created by migration from https://trac.sagemath.org/ticket/30218