From: Michael Orlitzky Date: Fri, 27 Nov 2020 14:17:35 +0000 (-0500) Subject: eja: use custom gram-schmidt in the new constructor. X-Git-Url: https://gitweb.michael.orlitzky.com/?a=commitdiff_plain;h=77bb00e5766e736a4c60f8dfa5832bda0b9e4eda;p=sage.d.git eja: use custom gram-schmidt in the new constructor. --- diff --git a/mjo/eja/eja_algebra.py b/mjo/eja/eja_algebra.py index 44d8314..05b9a5a 100644 --- a/mjo/eja/eja_algebra.py +++ b/mjo/eja/eja_algebra.py @@ -1040,7 +1040,7 @@ class RationalBasisEuclideanJordanAlgebraNg(FiniteDimensionalEuclideanJordanAlge n = len(basis) vector_basis = basis - from sage.matrix.matrix import is_Matrix + from sage.structure.element import is_Matrix basis_is_matrices = False degree = 0 @@ -1054,18 +1054,22 @@ class RationalBasisEuclideanJordanAlgebraNg(FiniteDimensionalEuclideanJordanAlge V = VectorSpace(field, degree) - self._deorthonormalization_matrix = matrix.identity(field,n) + # Compute this from "Q" (obtained from Gram-Schmidt) below as + # R = Q.solve_right(A), where the rows of "Q" are the + # orthonormalized vector_basis and and the rows of "A" are the + # original vector_basis. + self._deorthonormalization_matrix = None + if orthonormalize: - A = matrix(field, vector_basis) - # uh oh, this is only the "usual" inner product - Q,R = A.gram_schmidt(orthonormal=True) - self._deorthonormalization_matrix = R.inverse().transpose() - vector_basis = Q.rows() + from mjo.eja.eja_utils import gram_schmidt + vector_basis = gram_schmidt(vector_basis, inner_product) W = V.span_of_basis( vector_basis ) if basis_is_matrices: from mjo.eja.eja_utils import _vec2mat basis = tuple( map(_vec2mat,vector_basis) ) + W = V.span_of_basis( vector_basis ) + mult_table = [ [0 for i in range(n)] for j in range(n) ] ip_table = [ [0 for i in range(n)] for j in range(n) ] @@ -1086,12 +1090,14 @@ class RationalBasisEuclideanJordanAlgebraNg(FiniteDimensionalEuclideanJordanAlge if basis_is_matrices: for m in basis: m.set_immutable() + else: + basis = tuple( x.column() for x in basis ) super().__init__(field, mult_table, prefix, category, - basis, + basis, # matrix basis check_field, check_axioms)