# Revision history [back]

The following is a way to get the limit, dialog with the sage interpreter:

sage: M = matrix( QQ, 3, 3, [[0,5,10],[1/10,0,0],[0,1/2,0]] )
sage: M.charpoly().factor()
(x - 1) * (x^2 + x + 1/2)
sage: F.<a> = QuadraticField( -1 )
sage: M = M.change_ring( F )
sage: M.charpoly().factor()
(x - 1) * (x - 1/2*a + 1/2) * (x + 1/2*a + 1/2)
sage: J, S = M.jordan_form( transformation=True )
sage: J
[           1|           0|           0]
[------------+------------+------------]
[           0| 1/2*a - 1/2|           0]
[------------+------------+------------]
[           0|           0|-1/2*a - 1/2]
sage: S
[             1              1              1]
[          1/10 -1/10*a - 1/10  1/10*a - 1/10]
[          1/20         1/10*a        -1/10*a]
sage: S * J * S.inverse() == M
True


Now it is clear that $J^n$ converges to the diagonal matrix with entries $1,0,0$. We have $SJ^nS^{-1}=M^n$. So the limit is:

sage: S * diagonal_matrix( F, [1,0,0] ) * S.inverse()
[ 2/5    4    4]
[1/25  2/5  2/5]
[1/50  1/5  1/5]


We can test numerically:

sage: (M^100).n()
[ 0.399999999999999   4.00000000000000   4.00000000000000]
[0.0400000000000000  0.399999999999999  0.400000000000000]
[0.0200000000000000  0.200000000000000  0.199999999999999]


Note: Of course, there is no need to work over the gaussian field, where the characteristic polynomial of $M$ splits, but the prints are better.