将numpy lhs单位特征向量乘以numpy矩阵



我有一个矩阵T:

[ 0.2  0.4  0.4]
[ 0.8  0.2  0. ]
[ 0.8  0.   0.2]

我想把它乘以一个lhs行向量(s1,s2,s3),并将乘积表达式设置为对应的rhs列向量的元素,这样它就会是

vl * T = s( ..., ..., ...)

这相当于求解三个线性方程,从中可以求解高达比例因子的特征向量元素。将元素之和设置为1,就得到了单位特征向量。

例如,首先,将lhs行向量乘以矩阵的第一列,并将乘积设置为s1,即可得到方程0.2 x s1+0.8 x s2+0.8 x s3=s1。

另外两个方程是通过将lhs行向量乘以矩阵的第二列和第三列,并将乘积分别设置为s2和s3而获得的。求解这三个方程会得到s1、s2和s3之间的相对值。将这些元素的总和设置为1,将得到单位特征向量元素。

我想用python做这件事,下面是我的尝试:

>>> import numpy as np
>>> from scipy.linalg import eig
>>> np.set_printoptions(precision=4)
>>> T = np.mat("0.2 0.4 0.4;0.8 0.2 0.0;0.8 0.0 0.2")
>>> np.set_printoptions(precision=4)
>>> w, vl, vr = eig(T, left=True)
>>> vlUnit = vl[:,1]/sum(vl[:,1])
>>> s = vlUnit 
>>> s
array([  7.3543e+15,  -3.6772e+15,  -3.6772e+15])

所以我知道vlVlUnit都是类型numpy.arrayT是矩阵

我也看不懂s的结果。

我转换了,它的7354300000000000, -3677200000000000, 3677200000000000在我看来不对劲。我做错了什么??

谢谢,

Chris

这应该为您提供v1单位向量:

v1Unit = np.linalg.norm(v1[:, 1])

相关内容

  • 没有找到相关文章

最新更新