As far as I know, it is well known that the top right eigenvector of a row-stochastic matrix is the all-ones vector, and that the top left eigenvector of this same matrix is the stationary distribution. However, I don't get this result when I use the numpy.linalg.svd function from Python (in fact, no software I tried gives me this). I would like to know why. Am I wrong in expecting to get the all-ones vector as the right eigenvector of a row-stochastic matrix?
To be specific, consider this Markov Chain, with corresponding transition probability matrix:
$$ M=\left[\begin{array}{rr} 0.3&0.7\\ 0.6&0.4 \end{array}\right]\ $$
So, the right eigenvector of this matrix should be the all-ones vector, right? Or more generally, a constant vector. However, the simple code below doesn't give me this answer.
import numpy as np
M = np.matrix('0.3 0.7; 0.6 0.4')
u, s, vH = np.linalg.svd(M)
In fact, the matrices it returns me are (I rounded the results to ease presentation):
$$ U=\left[\begin{array}{rr} -0.7298 &-0.6837\\ -0.6837 &0.7298 \end{array}\right],\quad S=\left[\begin{array}{r r} 1.0055 &0.2984 \end{array}\right], \quad \mbox{and} \quad V^*=\left[\begin{array}{rr} -0.6257 &-0.7800\\ 0.7800 & -0.6257 \end{array}\right] $$
Just to be clear, the right eigenvectors are the rows of $V^*$. As I mentioned, other softwares return me the same result (e.g., WolframAlpha). These softwares are not all wrong, thus, why isn't the top right eigenvector constant?