-
-
Notifications
You must be signed in to change notification settings - Fork 703
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_matrixand does not conjugatehermitian_inner_product- which ignoresinner_product_matrixbut conjugates the left factor (self)inner_product- which usesinner_product_matrixbut 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_productwas 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
hermitianandconjugate_conventionthat 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