I was trying to figure out an algorithm way to compute the Jordan form of a matrix in Python and was told by my course teaching assistant that this is futile because even the state of art methods are computationally "unstable".
Does anyone know exactly why this is the case?
Consider the matrices $$A(t) = \pmatrix{1 & 1\cr 0 & t\cr}$$ For $t \ne 1$ the Jordan form is $$ \pmatrix{1 & 0\cr 0 & t\cr}$$ but for $t = 1$ it is $$ \pmatrix{1 & 1\cr 0 & 1\cr}$$ Thus the $(1,2)$ entry of the Jordan form is a discontinuous function of the matrix.
Maybe even worse, for $t \ne 1$ the matrix $S(t)$ such that the Jordan form is $S(t)^{-1} A(t) S(t)$ is $$S(t) = \pmatrix{\frac{1}{1-t} & \frac{1}{t-1}\cr 0 & 1\cr}$$ which has entries that blow up as $t \to 1$.