X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;ds=sidebyside;f=mjo%2Feja%2Feuclidean_jordan_algebra.py;h=2c496cd3ed893b3fd34f82f6e3ce730c757e0926;hb=ab8ae4abd5b5414d57059b985259337b58528793;hp=421c70bfa42d1e0ae8f837086437c491a9ab98f9;hpb=0e576704d235f1818b4ecd9f6ac0bdd5823fd745;p=sage.d.git diff --git a/mjo/eja/euclidean_jordan_algebra.py b/mjo/eja/euclidean_jordan_algebra.py index 421c70b..2c496cd 100644 --- a/mjo/eja/euclidean_jordan_algebra.py +++ b/mjo/eja/euclidean_jordan_algebra.py @@ -110,31 +110,12 @@ class FiniteDimensionalEuclideanJordanAlgebra(FiniteDimensionalAlgebra): r = self.rank() n = self.dimension() - # First, compute the basis B... - x0 = self.zero() - c = 1 - for g in self.gens(): - x0 += c*g - c +=1 - if not x0.is_regular(): - raise ValueError("don't know a regular element") - - V = x0.vector().parent().ambient_vector_space() - V1 = V.span_of_basis( (x0**k).vector() for k in range(self.rank()) ) - B = (V1.basis() + V1.complement().basis()) - # Now switch to the polynomial rings. - names = ['X' + str(i) for i in range(1,n+1)] R = PolynomialRing(self.base_ring(), names) J = FiniteDimensionalEuclideanJordanAlgebra(R, self._multiplication_table, rank=r) - B = [ b.change_ring(R.fraction_field()) for b in B ] - # Get the vector space (as opposed to module) so that - # span_of_basis() works. - V = J.zero().vector().parent().ambient_vector_space() - W = V.span_of_basis(B) def e(k): # The coordinates of e_k with respect to the basis B. @@ -143,10 +124,10 @@ class FiniteDimensionalEuclideanJordanAlgebra(FiniteDimensionalAlgebra): # A matrix implementation 1 x = J(vector(R, R.gens())) - l1 = [column_matrix(W.coordinates((x**k).vector())) for k in range(r)] + l1 = [column_matrix((x**k).vector()) for k in range(r)] l2 = [e(k) for k in range(r+1, n+1)] A_of_x = block_matrix(1, n, (l1 + l2)) - xr = W.coordinates((x**r).vector()) + xr = (x**r).vector() a = [] denominator = A_of_x.det() # This is constant for i in range(n):