Computation of a Drazin inverse

I need to compute the Drazin inverse $A^D$ of a singular M-matrix $A$, i.e., a matrix in the form $A=\lambda I -P$, where $P$ has nonnegative entries and $\lambda$ is the spectral radius (Perron value) of $P$. I already know the right and left eigenvectors $v$ and $u^T$ of $P$ with eigenvalue $\lambda$ (that is, the vectors in the left and right kernel of $A$).

1) Is there a Matlab subroutine around for computing Drazin inverses? I can't seem to find any, so I had to create my own (which is probably very inefficient)

2) Is there a way to exploit the knowledge of the two nullspaces (and the fact that they are 1-dimensional) to speed up this computation?

-
Have you seen dx.doi.org/10.1137/S0895479891228279 already? – J. M. Oct 2 '10 at 1:32
@J. M. I don't have access to the full-text from my institution, but from the abstract it does not seem related to what I'm doing. I already know the Perron right and left eigenvectors, I need to compute the group/Drazin inverse – Federico Poloni Oct 2 '10 at 12:34
By the way, an answer to question (ii) for the Moore-Penrose pseudo-inverse instead of the Drazin inverse would be most welcome as well. – Federico Poloni Oct 2 '10 at 12:35
Hey, I don't know if you've already found an answer to this, but it looks to me that the results of dx.doi.org/10.1007/BFb0120751 and dx.doi.org/10.1137/0131057 might be applicable to your problem. – J. M. Dec 14 '11 at 13:28
The first link is a "DOI not found". I'll check the second, though, thanks! – Federico Poloni Dec 14 '11 at 20:11

If you have access to Matlab, and the matrix is not gigantic you can use the following to calculate the Drazin inverse:

1) Determine the index of A - when does rank(A^k) = rank(A^(k+1))

2) Solve the linear system A^(k+1) * X = A^k

3) Use the fact that Ad, the Drazin inverse, is given by

Thanks! Could you please expand on how to solve that singular linear system? If I am not missing some crucial detail, it could even be $0X=0$, for instance in the case when A=[0 1; 0 0]. – Federico Poloni Aug 26 '15 at 22:06