#14117: Jordan normal form not computed for nilpotent matrix over rational
function
field / polynomials cannot be factored over rational function field
-----------------------+----------------------------------------------------
Reporter: darij | Owner: AlexGhitza
Type: defect | Status: new
Priority: major | Milestone: sage-5.8
Component: algebra | Keywords: polynomials, factorization, jordan
normal form
Work issues: | Report Upstream: N/A
Reviewers: | Authors:
Merged in: | Dependencies:
Stopgaps: |
-----------------------+----------------------------------------------------
The manual for the jordan_form method on a matrix explicitly claims that
the Jordan form is computed over arbitrary fields as long as the
characteristic polynomial splits over there. This should particularly
imply that the Jordan normal form of a nilpotent matrix is always
computed. Unfortunately, this is not so:
{{{
sage: Qx = PolynomialRing(QQ, 'x11, x12, x13, x21, x22, x23, x31, x32,
x33')
sage: x11, x12, x13, x21, x22, x23, x31, x32, x33 = Qx.gens()
sage: M = matrix(Qx, [[0, 0, x31], [0, 0, x21], [0, 0, 0]])
sage: M**3
[0 0 0]
[0 0 0]
[0 0 0]
sage: N = M.base_extend(Qx.fraction_field())
sage: N
[ 0 0 x31]
[ 0 0 x21]
[ 0 0 0]
sage: N.base_ring()
Fraction Field of Multivariate Polynomial Ring in x11, x12, x13, x21, x22,
x23, x31, x32, x33 over Rational Field
sage: N.jordan_form()
---------------------------------------------------------------------------
NotImplementedError Traceback (most recent call
last)
/home/darij/sage-5.6/<ipython console> in <module>()
/home/darij/sage-5.6/local/lib/python2.7/site-
packages/sage/matrix/matrix2.so in sage.matrix.matrix2.Matrix.jordan_form
(sage/matrix/matrix2.c:43627)()
/home/darij/sage-5.6/local/lib/python2.7/site-
packages/sage/rings/polynomial/polynomial_element.so in
sage.rings.polynomial.polynomial_element.Polynomial.roots
(sage/rings/polynomial/polynomial_element.c:35063)()
NotImplementedError: root finding for this polynomial not implemented
}}}
This seems to boil down to polynomial factorization over function fields
not being implemented:
{{{
sage: N.characteristic_polynomial().factor()
---------------------------------------------------------------------------
NotImplementedError Traceback (most recent call
last)
/home/darij/sage-5.6/<ipython console> in <module>()
/home/darij/sage-5.6/local/lib/python2.7/site-
packages/sage/rings/polynomial/polynomial_element.so in
sage.rings.polynomial.polynomial_element.Polynomial.factor
(sage/rings/polynomial/polynomial_element.c:24161)()
NotImplementedError:
}}}
Unfortunately, I have no idea how to debug, let alone fix, things in C
code, so I have nothing positive to contribute on this issue. Maybe a
workaround is adding a new key "nilpotent" to the jordan_form method
which, when set to True, skips the factorization of the characteristic
polynomial and lets sage know that the matrix is nilpotent? In my personal
experience, nilpotent matrices are the ones with the most interesting
Jordan forms, and skipping the useless factorization would probably save
quite some CPU cycles for them.
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/14117>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.