我有一些变量要查找,例如 x= [1x16 (x1,x2,x3,....x16 变量)],条件是 x1+x2+x3+....x16=1。我也有 16x16 矩阵 Q= [16x16 (real values)]。
我需要解方程 'x*Q=x' ,如此处所示。如何在 Matlab 或任何其他语言中轻松解决它?
我有一些变量要查找,例如 x= [1x16 (x1,x2,x3,....x16 变量)],条件是 x1+x2+x3+....x16=1。我也有 16x16 矩阵 Q= [16x16 (real values)]。
我需要解方程 'x*Q=x' ,如此处所示。如何在 Matlab 或任何其他语言中轻松解决它?
通过转置,您的方程等效于 Q'y=1y 其中 y:=x' (列向量),其中 Q' 是 Q 的转置(matlab 表示法...),这意味着 y 是与特征值 1 相关联的特征向量对于矩阵 Q'。对于马尔可夫矩阵,这样的特征向量总是存在的。让 s 是列向量 y 的条目的总和。可能发生两种情况:
要么 s 不是 0 ;那么将 y 的所有坐标除以 s 就足够了:我们得到一个仍然是特征向量的向量,其坐标和等于 1。
或 s=0 并且您的问题没有解决方案。
这是一个用于 3 x 3 矩阵的 Matlab 程序:
M=[.2 .3 .5
.1 .8 .1
.4 .4 .2]
[P,D]=eig(M')
Y=P(:,3)
M'*Y - Y,% should be 0
Z=Y/sum(Y),%the sum of Z's coordinates is 1
M'*Z-Z,% should be 0