+from itertools import izip
+
from sage.matrix.constructor import matrix
from sage.modules.free_module import VectorSpace
from sage.modules.with_basis.indexed_element import IndexedFreeModuleElement
sage: n_max = RealSymmetricEJA._max_test_case_size()
sage: n = ZZ.random_element(1, n_max)
sage: J1 = RealSymmetricEJA(n,QQ)
- sage: J2 = RealSymmetricEJA(n,QQ,False)
+ sage: J2 = RealSymmetricEJA(n,QQ,normalize_basis=False)
sage: X = random_matrix(QQ,n)
sage: X = X*X.transpose()
sage: x1 = J1(X)
"""
B = self.parent().natural_basis()
W = self.parent().natural_basis_space()
- return W.linear_combination(zip(B,self.to_vector()))
+ return W.linear_combination(izip(B,self.to_vector()))
def norm(self):
- def subalgebra_generated_by(self):
+ def subalgebra_generated_by(self, orthonormalize_basis=False):
"""
Return the associative subalgebra of the parent EJA generated
by this element.
0
"""
- return FiniteDimensionalEuclideanJordanElementSubalgebra(self)
+ return FiniteDimensionalEuclideanJordanElementSubalgebra(self, orthonormalize_basis)
def subalgebra_idempotent(self):
TESTS:
- The trace inner product is commutative, bilinear, and satisfies
- the Jordan axiom:
+ The trace inner product is commutative, bilinear, and associative::
sage: set_random_seed()
sage: J = random_eja()
....: a*x.trace_inner_product(z) )
sage: actual == expected
True
- sage: # jordan axiom
+ sage: # associative
sage: (x*y).trace_inner_product(z) == y.trace_inner_product(x*z)
True