How can I compute higher powers of a large matrix quickly?

380 Views Asked by At

Is there a block matrix technique, assuming that the matrix has a lot of zeroes in it? I want to compute its nilpotence degree.

Thanks,

(Even with a lot of zeroes in the matrix, there's still a lot of room for error in doing the computations by hand and not by Wolfram, etc., if I computed dot products for every entry of the matrix.)

EDIT: I think that, given a strictly upper triangular matrix, then its nilpotence degree is easy to find -- every power I raise the matrix to wipes out a non-zero column (from left to right). But what I am after is the powers of a matrix, since I want to compute the chain of nullspaces, at power =1,2,3, ...,n in order to find cyclic generalized eigenvectors, with the goal of describing the matrix's Jordan form.

1

There are 1 best solutions below

8
On BEST ANSWER

If $A$ is a sparse matrix then to compute $Av$ is not expensive. So we may just take a random vector $v_1$ and compute $A^k v_1$ till we get zero. That gives a lower bound on the nilpotence degree of $A$. Then, we may restrict $A$ to the complement of $\text{Span}(v_1,Av_1,\ldots,A^{k_1} v_1)$ and keep running the same procedure till the complement of $\text{Span}(v_1,\ldots,A^{k_1}v_1,\ldots,v_m,\ldots,A^{k_m}v_m)$ has dimension less than $\max(k_1,\ldots,k_m)$. That maximum is the nilpotence degree.

For short, me may use a Krylov-subspace attack that is very effective against sparse matrices.