X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=mjo%2Feja%2Feja_element.py;h=a229fa3f5290854bb3414280b6724f66d3918708;hb=15386c28753bcb533917719a91dc19ba80724cb1;hp=df14666d85df17d8005432ecad777b4a8d0f9076;hpb=02bb28968221a0f077b49205e2746abd8c5450d9;p=sage.d.git diff --git a/mjo/eja/eja_element.py b/mjo/eja/eja_element.py index df14666..a229fa3 100644 --- a/mjo/eja/eja_element.py +++ b/mjo/eja/eja_element.py @@ -3,11 +3,11 @@ from sage.misc.cachefunc import cached_method from sage.modules.free_module import VectorSpace from sage.modules.with_basis.indexed_element import IndexedFreeModuleElement -from mjo.eja.eja_operator import FiniteDimensionalEJAOperator +from mjo.eja.eja_operator import EJAOperator from mjo.eja.eja_utils import _scale -class FiniteDimensionalEJAElement(IndexedFreeModuleElement): +class EJAElement(IndexedFreeModuleElement): """ An element of a Euclidean Jordan algebra. """ @@ -332,7 +332,8 @@ class FiniteDimensionalEJAElement(IndexedFreeModuleElement): SETUP:: - sage: from mjo.eja.eja_algebra import (JordanSpinEJA, + sage: from mjo.eja.eja_algebra import (AlbertEJA, + ....: JordanSpinEJA, ....: TrivialEJA, ....: RealSymmetricEJA, ....: ComplexHermitianEJA, @@ -395,6 +396,22 @@ class FiniteDimensionalEJAElement(IndexedFreeModuleElement): sage: actual2 == expected True + There's a formula for the determinant of the Albert algebra + (Yokota, Section 2.1):: + + sage: def albert_det(x): + ....: X = x.to_matrix() + ....: res = X[0,0]*X[1,1]*X[2,2] + ....: res += 2*(X[1,2]*X[2,0]*X[0,1]).real() + ....: res -= X[0,0]*X[1,2]*X[2,1] + ....: res -= X[1,1]*X[2,0]*X[0,2] + ....: res -= X[2,2]*X[0,1]*X[1,0] + ....: return res.leading_coefficient() + sage: J = AlbertEJA(field=QQ, orthonormalize=False) + sage: xs = J.random_elements(10) + sage: all( albert_det(x) == x.det() for x in xs ) + True + """ P = self.parent() r = P.rank() @@ -1162,7 +1179,7 @@ class FiniteDimensionalEJAElement(IndexedFreeModuleElement): P = self.parent() left_mult_by_self = lambda y: self*y L = P.module_morphism(function=left_mult_by_self, codomain=P) - return FiniteDimensionalEJAOperator(P, P, L.matrix() ) + return EJAOperator(P, P, L.matrix() ) def quadratic_representation(self, other=None): @@ -1722,7 +1739,7 @@ class FiniteDimensionalEJAElement(IndexedFreeModuleElement): return self.trace_inner_product(self).sqrt() -class CartesianProductParentEJAElement(FiniteDimensionalEJAElement): +class CartesianProductParentEJAElement(EJAElement): r""" An intermediate class for elements that have a Cartesian product as their parent algebra.