I'm using power iteration to find the dominant right eigenvector of some large-ish matrices ($1000\times 1000$ to $10000\times 10000$ or so, maybe I'll need to go bigger later) with non-negative elements.
I need to know both the left and right eigenvectors corresponding to the largest eigenvalue. Obviously I can find the left eigenvector by doing power iteration on the transpose of the matrix. However, this is quite expensive, and since I already did power iteration to find the right eigenvector and the leading eigenvalue, it seems like there might be a way to use that information to compute the left eigenvector.
The matrices are real and have only non-negative elements, but beyond that they have no special properties, e.g. they are not symmetric and they are not stochastic matrices. The leading left and right eigenvectors have all positive elements, and I want to guarantee that numerical errors will not introduce negative elements. (This is why I'm using power iteration rather than any other method to find the leading eigenvector.) Thus I would like to avoid any technique that involves numerically inverting the matrix or anything similar to that, unless this guarantee can be kept.
I'm using Python/numpy but I'm not attached to it - I'd rather focus on what algorithm I should be using.