Consider a Markov transition matrix $ M $ for a population distribution between two cities. Let the initial state of the system be given by:
$$ u_0 = \begin{bmatrix} a - b \\ b \end{bmatrix} $$
where $ a $ is the total population and $ b $ is the initial imbalance between the populations of the two cities. This can also be expressed as:
$$ u_0 = \begin{bmatrix} x_1 & x_2 \end{bmatrix} \begin{bmatrix} c_1 \\ c_2 \end{bmatrix} $$
Here, $ x_1 $ and $ x_2 $ represent the eigenvectors of the Markov matrix $ M $, and $ c_1 $ and $ c_2 $ are the components of the initial state in the eigenvector basis.
One of its eigenvalues is always $ \lambda_1 = 1 $, which corresponds to the steady-state distribution. The second eigenvalue, denoted by $ \lambda_2 $, satisfies:
$$ \det(M - \lambda I) = 0 $$
By solving for the eigenvectors of $ M $, we observe that the eigenvector associated with $ \lambda_2 $ always takes the form:
$$ x_2 = \begin{bmatrix} 1 \\ -1 \end{bmatrix} $$
This result suggests that any initial imbalance $ b $ affects only the component $ c_2 $ in the direction of this eigenvector. As a consequence, the initial imbalance does not affect the steady-state distribution, which is determined solely by the first eigenvector and $ c_1 $.
Thus, the initial state vector can be written as:
$$ u_0 = c_1 x_1 + c_2 \begin{bmatrix} 1 \\ -1 \end{bmatrix} $$
And k-th step after: $$ u_k = c_1 \lambda_1^k x_1 + c_2 \lambda_2^k \begin{bmatrix} 1 \\ -1 \end{bmatrix} = c_1 x_1 + c_2 \lambda_2^k \begin{bmatrix} 1 \\ -1 \end{bmatrix} $$
My Question
How to formally prove why this happens. Specifically, as the title, I am trying to understand why the eigenvector associated with the eigenvalue $ \lambda_2 $ (which is not equal to 1) is always of this form.
Code to Test the Theory
To test this, I wrote the following Python code to generate a random Markov matrix and compute its eigenvalues and eigenvectors:
import numpy as np
Generate a random matrix
A = np.random.rand(2, 2)
markov_matrix = A / A.sum(axis=0)
Compute eigenvalues and eigenvectors
eigenvalues, eigenvectors = np.linalg.eig(markov_matrix)
Print results
print("Markov Matrix:\n", markov_matrix)
print("\nEigenvalues:\n", eigenvalues)
print("\nEigenvectors:\n", eigenvectors)
```