return self.from_vector(coords)
- def one(self):
- """
- Return the multiplicative identity element of this algebra.
-
- The superclass method computes the identity element, which is
- beyond overkill in this case: the superalgebra identity
- restricted to this algebra is its identity. Note that we can't
- count on the first basis element being the identity -- it migth
- have been scaled if we orthonormalized the basis.
-
- SETUP::
-
- sage: from mjo.eja.eja_algebra import (RealCartesianProductEJA,
- ....: random_eja)
-
- EXAMPLES::
-
- sage: J = RealCartesianProductEJA(5)
- sage: J.one()
- e0 + e1 + e2 + e3 + e4
- sage: x = sum(J.gens())
- sage: A = x.subalgebra_generated_by()
- sage: A.one()
- f0
- sage: A.one().superalgebra_element()
- e0 + e1 + e2 + e3 + e4
-
- TESTS:
-
- The identity element acts like the identity over the rationals::
-
- sage: set_random_seed()
- sage: x = random_eja().random_element()
- sage: A = x.subalgebra_generated_by()
- sage: x = A.random_element()
- sage: A.one()*x == x and x*A.one() == x
- True
-
- The identity element acts like the identity over the algebraic
- reals with an orthonormal basis::
-
- sage: set_random_seed()
- sage: x = random_eja(AA).random_element()
- sage: A = x.subalgebra_generated_by(orthonormalize_basis=True)
- sage: x = A.random_element()
- sage: A.one()*x == x and x*A.one() == x
- True
-
- The matrix of the unit element's operator is the identity over
- the rationals::
-
- sage: set_random_seed()
- sage: x = random_eja().random_element()
- sage: A = x.subalgebra_generated_by()
- sage: actual = A.one().operator().matrix()
- sage: expected = matrix.identity(A.base_ring(), A.dimension())
- sage: actual == expected
- True
-
- The matrix of the unit element's operator is the identity over
- the algebraic reals with an orthonormal basis::
-
- sage: set_random_seed()
- sage: x = random_eja(AA).random_element()
- sage: A = x.subalgebra_generated_by(orthonormalize_basis=True)
- sage: actual = A.one().operator().matrix()
- sage: expected = matrix.identity(A.base_ring(), A.dimension())
- sage: actual == expected
- True
-
- """
- if self.dimension() == 0:
- return self.zero()
- else:
- sa_one = self.superalgebra().one().to_vector()
- sa_coords = self.vector_space().coordinate_vector(sa_one)
- return self.from_vector(sa_coords)
-
def natural_basis_space(self):
"""