X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=mjo%2Feja%2Feja_operator.py;h=4b72e5783210b51cd6d8d658f0f5d4e8c40a7f57;hb=d4abf92e1e275554019be8987c6e837dfdc40150;hp=b225b295c9e0f4e87befb02e28870eb7a0d1b9dd;hpb=9c86e23e2ef79fb9d7003f68952750dda0ca0e0b;p=sage.d.git diff --git a/mjo/eja/eja_operator.py b/mjo/eja/eja_operator.py index b225b29..4b72e57 100644 --- a/mjo/eja/eja_operator.py +++ b/mjo/eja/eja_operator.py @@ -1,4 +1,4 @@ -from sage.all import matrix +from sage.matrix.constructor import matrix from sage.categories.all import FreeModules from sage.categories.map import Map @@ -46,14 +46,14 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map): EXAMPLES:: sage: J = JordanSpinEJA(3) - sage: x = J.linear_combination(zip(range(len(J.gens())), J.gens())) + sage: x = J.linear_combination(zip(J.gens(),range(len(J.gens())))) sage: id = identity_matrix(J.base_ring(), J.dimension()) sage: f = FiniteDimensionalEuclideanJordanAlgebraOperator(J,J,id) sage: f(x) == x True """ - return self.codomain()(self.matrix()*x.vector()) + return self.codomain().from_vector(self.matrix()*x.to_vector()) def _add_(self, other): @@ -81,8 +81,8 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map): [2 0 0] [0 2 0] [0 0 2] - Domain: Euclidean Jordan algebra of degree 3 over Rational Field - Codomain: Euclidean Jordan algebra of degree 3 over Rational Field + Domain: Euclidean Jordan algebra of dimension 3 over... + Codomain: Euclidean Jordan algebra of dimension 3 over... If you try to add two identical vector space operators but on different EJAs, that should blow up:: @@ -135,8 +135,10 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map): Linear operator between finite-dimensional Euclidean Jordan algebras represented by the matrix: [39 54 69] - Domain: Euclidean Jordan algebra of degree 3 over Rational Field - Codomain: Euclidean Jordan algebra of degree 1 over Rational Field + Domain: Euclidean Jordan algebra of dimension 3 over + Rational Field + Codomain: Euclidean Jordan algebra of dimension 1 over + Rational Field """ return FiniteDimensionalEuclideanJordanAlgebraOperator( @@ -175,8 +177,8 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map): [1 0 0] [0 1 0] [0 0 1] - Domain: Euclidean Jordan algebra of degree 3 over Rational Field - Codomain: Euclidean Jordan algebra of degree 3 over Rational Field + Domain: Euclidean Jordan algebra of dimension 3 over... + Codomain: Euclidean Jordan algebra of dimension 3 over... """ return FiniteDimensionalEuclideanJordanAlgebraOperator( @@ -209,26 +211,31 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map): sage: x.operator() Linear operator between finite-dimensional Euclidean Jordan algebras represented by the matrix: - [ 2 4 0] + [ 2 2 0] [ 2 9 2] - [ 0 4 16] - Domain: Euclidean Jordan algebra of degree 3 over Rational Field - Codomain: Euclidean Jordan algebra of degree 3 over Rational Field + [ 0 2 16] + Domain: Euclidean Jordan algebra of dimension 3 over... + Codomain: Euclidean Jordan algebra of dimension 3 over... sage: x.operator()*(1/2) Linear operator between finite-dimensional Euclidean Jordan algebras represented by the matrix: - [ 1 2 0] + [ 1 1 0] [ 1 9/2 1] - [ 0 2 8] - Domain: Euclidean Jordan algebra of degree 3 over Rational Field - Codomain: Euclidean Jordan algebra of degree 3 over Rational Field + [ 0 1 8] + Domain: Euclidean Jordan algebra of dimension 3 over... + Codomain: Euclidean Jordan algebra of dimension 3 over... """ - if other in self.codomain().base_ring(): - return FiniteDimensionalEuclideanJordanAlgebraOperator( - self.domain(), - self.codomain(), - self.matrix()*other) + try: + if other in self.codomain().base_ring(): + return FiniteDimensionalEuclideanJordanAlgebraOperator( + self.domain(), + self.codomain(), + self.matrix()*other) + except NotImplementedError: + # This can happen with certain arguments if the base_ring() + # is weird and doesn't know how to test membership. + pass # This should eventually delegate to _composition_ after performing # some sanity checks for us. @@ -256,8 +263,8 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map): [-1 0 0] [ 0 -1 0] [ 0 0 -1] - Domain: Euclidean Jordan algebra of degree 3 over Rational Field - Codomain: Euclidean Jordan algebra of degree 3 over Rational Field + Domain: Euclidean Jordan algebra of dimension 3 over... + Codomain: Euclidean Jordan algebra of dimension 3 over... """ return FiniteDimensionalEuclideanJordanAlgebraOperator( @@ -289,8 +296,8 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map): [3 0 0] [0 3 0] [0 0 3] - Domain: Euclidean Jordan algebra of degree 3 over Rational Field - Codomain: Euclidean Jordan algebra of degree 3 over Rational Field + Domain: Euclidean Jordan algebra of dimension 3 over... + Codomain: Euclidean Jordan algebra of dimension 3 over... """ if (n == 1): @@ -330,8 +337,10 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map): algebras represented by the matrix: [1 0] [0 1] - Domain: Euclidean Jordan algebra of degree 2 over Rational Field - Codomain: Euclidean Jordan algebra of degree 2 over Rational Field + Domain: Euclidean Jordan algebra of dimension 2 over + Rational Field + Codomain: Euclidean Jordan algebra of dimension 2 over + Rational Field """ msg = ("Linear operator between finite-dimensional Euclidean Jordan " @@ -364,8 +373,8 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map): [-1 0 0] [ 0 -1 0] [ 0 0 -1] - Domain: Euclidean Jordan algebra of degree 3 over Rational Field - Codomain: Euclidean Jordan algebra of degree 3 over Rational Field + Domain: Euclidean Jordan algebra of dimension 3 over... + Codomain: Euclidean Jordan algebra of dimension 3 over... """ return (self + (-other))