From 84081fcf2ce850b8d2f4dc6bbef5981b094b0560 Mon Sep 17 00:00:00 2001 From: Michael Orlitzky Date: Sun, 21 Feb 2021 08:47:04 -0500 Subject: [PATCH] eja: add cartesian_jordan_product() method to CartesianProductEJA. --- mjo/eja/eja_algebra.py | 43 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/mjo/eja/eja_algebra.py b/mjo/eja/eja_algebra.py index 99d89c4..e82e741 100644 --- a/mjo/eja/eja_algebra.py +++ b/mjo/eja/eja_algebra.py @@ -2894,16 +2894,55 @@ class CartesianProductEJA(CombinatorialFreeModule_CartesianProduct, return FiniteDimensionalEJAOperator(Ji,self,Ei.matrix()) + def cartesian_jordan_product(self, x, y): + r""" + The componentwise Jordan product. + + We project ``x`` and ``y`` onto our factors, and add up the + Jordan products from the subalgebras. This may still be useful + after (if) the default Jordan product in the Cartesian product + algebra is overridden. + + SETUP:: + + sage: from mjo.eja.eja_algebra import (HadamardEJA, + ....: JordanSpinEJA) + + EXAMPLE:: + + sage: J1 = HadamardEJA(3) + sage: J2 = JordanSpinEJA(3) + sage: J = cartesian_product([J1,J2]) + sage: x1 = J1.from_vector(vector(QQ,(1,2,1))) + sage: y1 = J1.from_vector(vector(QQ,(1,0,2))) + sage: x2 = J2.from_vector(vector(QQ,(1,2,3))) + sage: y2 = J2.from_vector(vector(QQ,(1,1,1))) + sage: z1 = J.from_vector(vector(QQ,(1,2,1,1,2,3))) + sage: z2 = J.from_vector(vector(QQ,(1,0,2,1,1,1))) + sage: (x1*y1).to_vector() + (1, 0, 2) + sage: (x2*y2).to_vector() + (6, 3, 4) + sage: J.cartesian_jordan_product(z1,z2).to_vector() + (1, 0, 2, 6, 3, 4) + + """ + m = len(self.cartesian_factors()) + projections = ( self.cartesian_projection(i) for i in range(m) ) + products = ( P(x)*P(y) for P in projections ) + return self._cartesian_product_of_elements(tuple(products)) + def cartesian_inner_product(self, x, y): r""" The standard componentwise Cartesian inner-product. We project ``x`` and ``y`` onto our factors, and add up the - inner-products from the subalgebras. + inner-products from the subalgebras. This may still be useful + after (if) the default inner product in the Cartesian product + algebra is overridden. SETUP:: - sage: from mjo.eja.eja_algebra import (HadamardEJA, ....: QuaternionHermitianEJA) -- 2.43.2