Revision history [back]

Why does jordan_form not work over inexact rings?

Hi,

Given a matrix M with entries (variables) in SR, I needed to compute the transformation matrix to a jordan form of M.

I ended up copying copying the code in "jordan_form" from "matrix2.pyx", deleting the "if (base_ring is None and not self.base_ring().is_exact()) ..." and replacing "evals = A.charpoly().roots()" by

eigenvects=A.eigenvectors_right()
evals=[(eigenvect,eigenvect) for eigenvect in eigenvects]

So far it seems to work. Can this go wrong? Or could one just change the original code in matrix2.pyx, and allow inexact rings?

Thanks for your help!

Why does jordan_form not work over inexact rings?

Hi,

Given a matrix M with entries (variables) in SR, I needed to compute the transformation matrix to a jordan form of M.

I ended up copying copying the code in "jordan_form" from "matrix2.pyx", deleting the "if (base_ring is None and not self.base_ring().is_exact()) ..." and replacing "evals = A.charpoly().roots()" by

eigenvects=A.eigenvectors_right()
evals=[(eigenvect,eigenvect) for eigenvect in eigenvects]

So far it seems to work. Can this go wrong? Or could one just change the original code in matrix2.pyx, and allow inexact rings?

Thanks for your help!

Why does jordan_form not work over inexact rings?

Hi,

Given a matrix M with entries (variables) in SR, I needed to compute the transformation matrix to a jordan form of M.

I ended up copying the code in "jordan_form" and "_jordan_form_vector_in_difference" from "matrix2.pyx", deleting the "if (base_ring is None and not self.base_ring().is_exact()) ..." and replacing "evals = A.charpoly().roots()" by

eigenvects=A.eigenvectors_right()
evals=[(eigenvect,eigenvect) for eigenvect in eigenvects]

So far it seems to work. Can this go wrong? Or could one just change the original code in matrix2.pyx, and allow inexact rings?

Thanks for your help!