From: Michael Orlitzky Date: Sun, 13 Oct 2019 00:15:09 +0000 (-0400) Subject: eja: add a test for the inverse via charpoly. X-Git-Url: http://gitweb.michael.orlitzky.com/?a=commitdiff_plain;h=e9845713afb8ed88273d2b8dfe170ca8f11a5290;p=sage.d.git eja: add a test for the inverse via charpoly. --- diff --git a/mjo/eja/eja_element.py b/mjo/eja/eja_element.py index eee8f69..e7dff75 100644 --- a/mjo/eja/eja_element.py +++ b/mjo/eja/eja_element.py @@ -407,7 +407,8 @@ class FiniteDimensionalEuclideanJordanAlgebraElement(IndexedFreeModuleElement): SETUP:: - sage: from mjo.eja.eja_algebra import (JordanSpinEJA, + sage: from mjo.eja.eja_algebra import (ComplexHermitianEJA, + ....: JordanSpinEJA, ....: random_eja) EXAMPLES: @@ -473,6 +474,22 @@ class FiniteDimensionalEuclideanJordanAlgebraElement(IndexedFreeModuleElement): ....: x.operator().inverse()(J.one()) == x.inverse() ) True + Proposition II.2.4 in Faraut and Korányi gives a formula for + the inverse based on the characteristic polynomial and the + Cayley-Hamilton theorem for Euclidean Jordan algebras:: + + sage: set_random_seed() + sage: J = ComplexHermitianEJA(3) + sage: x = J.random_element() + sage: while not x.is_invertible(): + ....: x = J.random_element() + sage: r = J.rank() + sage: a = x.characteristic_polynomial().coefficients(sparse=False) + sage: expected = (-1)^(r+1)/x.det() + sage: expected *= sum( a[i+1]*x^i for i in range(r) ) + sage: x.inverse() == expected + True + """ if not self.is_invertible(): raise ValueError("element is not invertible")