From e9845713afb8ed88273d2b8dfe170ca8f11a5290 Mon Sep 17 00:00:00 2001 From: Michael Orlitzky Date: Sat, 12 Oct 2019 20:15:09 -0400 Subject: [PATCH] eja: add a test for the inverse via charpoly. --- mjo/eja/eja_element.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) 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") -- 2.44.2