X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=mjo%2Feja%2Feja_operator.py;h=667e3d5acba051e08bf461e12aafd9ae2437cc74;hb=432ca4fcc5ff6fef69ebbfc166cec124c83c5fd1;hp=6e22d367c6faa55a4f1461925ce62b04aaedfef1;hpb=b0db25caf8a88f53e2845a4705cb96d6b836e401;p=sage.d.git diff --git a/mjo/eja/eja_operator.py b/mjo/eja/eja_operator.py index 6e22d36..667e3d5 100644 --- a/mjo/eja/eja_operator.py +++ b/mjo/eja/eja_operator.py @@ -117,17 +117,17 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map): sage: from mjo.eja.eja_operator import FiniteDimensionalEuclideanJordanAlgebraOperator sage: from mjo.eja.eja_algebra import ( ....: JordanSpinEJA, - ....: RealCartesianProductEJA, + ....: HadamardEJA, ....: RealSymmetricEJA) EXAMPLES:: sage: J1 = JordanSpinEJA(3) - sage: J2 = RealCartesianProductEJA(2) + sage: J2 = HadamardEJA(2) sage: J3 = RealSymmetricEJA(1) - sage: mat1 = matrix(QQ, [[1,2,3], + sage: mat1 = matrix(AA, [[1,2,3], ....: [4,5,6]]) - sage: mat2 = matrix(QQ, [[7,8]]) + sage: mat2 = matrix(AA, [[7,8]]) sage: g = FiniteDimensionalEuclideanJordanAlgebraOperator(J1, ....: J2, ....: mat1) @@ -139,9 +139,9 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map): algebras represented by the matrix: [39 54 69] Domain: Euclidean Jordan algebra of dimension 3 over - Rational Field + Algebraic Real Field Codomain: Euclidean Jordan algebra of dimension 1 over - Rational Field + Algebraic Real Field """ return FiniteDimensionalEuclideanJordanAlgebraOperator( @@ -341,9 +341,9 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map): [1 0] [0 1] Domain: Euclidean Jordan algebra of dimension 2 over - Rational Field + Algebraic Real Field Codomain: Euclidean Jordan algebra of dimension 2 over - Rational Field + Algebraic Real Field """ msg = ("Linear operator between finite-dimensional Euclidean Jordan " @@ -420,14 +420,13 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map): sage: idJ.inverse() == idJ True - The zero operator is never invertible:: + The inverse of the inverse is the operator we started with:: sage: set_random_seed() - sage: J = random_eja() - sage: J.zero().operator().inverse() - Traceback (most recent call last): - ... - ZeroDivisionError: input matrix must be nonsingular + sage: x = random_eja().random_element() + sage: L = x.operator() + sage: not L.is_invertible() or (L.inverse().inverse() == L) + True """ return ~self @@ -439,7 +438,9 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map): SETUP:: - sage: from mjo.eja.eja_algebra import RealSymmetricEJA, random_eja + sage: from mjo.eja.eja_algebra import (RealSymmetricEJA, + ....: TrivialEJA, + ....: random_eja) EXAMPLES:: @@ -454,6 +455,12 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map): sage: x.operator().is_invertible() True + The zero operator is invertible in a trivial algebra:: + + sage: J = TrivialEJA() + sage: J.zero().operator().is_invertible() + True + TESTS: The identity operator is always invertible:: @@ -463,11 +470,11 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map): sage: J.one().operator().is_invertible() True - The zero operator is never invertible:: + The zero operator is never invertible in a nontrivial algebra:: sage: set_random_seed() sage: J = random_eja() - sage: J.zero().operator().is_invertible() + sage: not J.is_trivial() and J.zero().operator().is_invertible() False """ @@ -535,7 +542,7 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map): EXAMPLES:: - sage: J = RealSymmetricEJA(4,AA) + sage: J = RealSymmetricEJA(4) sage: x = sum(J.gens()) sage: A = x.subalgebra_generated_by(orthonormalize_basis=True) sage: L0x = A(x).operator() @@ -575,4 +582,4 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map): self.codomain(), mat) projectors.append(Pi) - return zip(eigenvalues, projectors) + return list(zip(eigenvalues, projectors))