$M = \begin{bmatrix}0.5 & 0.2 & 0.3\\0.2 & 0.7 & 0.1\\0.75 & 0.15 & 0.1\end{bmatrix}$
$s M = s$
حالت بعدی برابر با ضرب حالت اولی با ماتریس احتمالهای جابجایی است
\begin{equation*} s' = s M \\ s^2 = (s M) M \\ \text{ } \\ \text{ } \\ \text{or: } \\ s^n = s M^2 \\ \dots \\ \text{______________} \\ s^n = s M^n \\ \end{equation*}
\begin{equation*} M = V \Lambda V^{-1} \end{equation*}
i/j/..., fourier, wavelet, SVD, ...
\begin{equation*} lim_{n\to\infty}M^n = (V \Lambda V^{-1}) * (V \Lambda V^{-1}) \\ \dots \\ \dots \\ = V \Lambda^n V^{-1} \end{equation*}
import numpy as np
M = np.mat([[0.1, 0.2, 0.7], [0.4, 0.3, 0.3], [0.5, 0.1, 0.4]])
M.
matrix([[ 0.1, 0.2, 0.7], [ 0.4, 0.3, 0.3], [ 0.5, 0.1, 0.4]])
خاصیت: جمع هر سطر یک است
V: Eigen vectors
D: Eigen values چیده شده در ماتریس قطری
که در ماتریس تصادفی حتماً یکی از آیگنها ۱ خواهد بود
D, V = np.linalg.eig(M)
D = np.diag(D)
D, V
(array([[ 1. , 0. , 0. ], [ 0. , -0.38284271, 0. ], [ 0. , 0. , 0.18284271]]), matrix([[-0.57735027, -0.82720305, 0.06909714], [-0.57735027, 0.26745662, -0.95703598], [-0.57735027, 0.49416806, 0.28161627]]))
V * D * (V ** -1) # or V * D / V
matrix([[ 0.1, 0.2, 0.7], [ 0.4, 0.3, 0.3], [ 0.5, 0.1, 0.4]])
نکته جالب پردازشی برای ماتریس تصادفی: فقط یکی باقی خواهد ماند بقیه به صفر متمایل میشوند
D ** 100
array([[ 1.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 2.00464954e-42, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 1.61348727e-74]])
V * (D ** 100) * (V ** -1)
matrix([[ 0.34513274, 0.16814159, 0.48672566], [ 0.34513274, 0.16814159, 0.48672566], [ 0.34513274, 0.16814159, 0.48672566]])
M ** 100
matrix([[ 0.34513274, 0.16814159, 0.48672566], [ 0.34513274, 0.16814159, 0.48672566], [ 0.34513274, 0.16814159, 0.48672566]])
[0.1, 0.7, 0.2] * (M ** 100)
matrix([[ 0.34513274, 0.16814159, 0.48672566]])