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
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) ]
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)