Scipy / Numpy Linalg.eigval 结果解释



在使用python库进行数值任务时,我是一个新手。我正在阅读一篇关于 LexRank 的论文,想知道如何计算转移矩阵的特征向量。我使用了eigval函数,得到了一个我很难解释的结果:

a = numpy.zeros(shape=(4,4))
a[0,0]=0.333
a[0,1]=0.333
a[0,2]=0
a[0,3]=0.333
a[1,0]=0.25
a[1,1]=0.25
a[1,2]=0.25
a[1,3]=0.25
a[2,0]=0.5
a[2,1]=0.0
a[2,2]=0.0
a[2,3]=0.5
a[3,0]=0.0
a[3,1]=0.333
a[3,2]=0.333
a[3,3]=0.333
print LA.eigval(a)

特征值为:

[ 0.99943032+0.j         
-0.13278637+0.24189178j  
-0.13278637-0.24189178j  
  0.18214242+0.j        ]

谁能解释一下j在这里做什么?特征值不应该是一个标量吗?我该如何广义地解释这个结果?

j是虚数,是负一的平方根。在数学中,它通常用i表示,在工程中,在Python中,它用j表示。

单个特征值是标量,但 (m, m) 矩阵将具有 m 个特征值(和 m 个特征向量)。关于特征值和特征向量的 Wiki 页面有一些示例,可以帮助您了解这些概念。

正如@unutbu提到的,j表示Python中的虚数。通常,矩阵可能具有复杂的特征值(即具有实部和虚部),即使它只包含实值(例如,请参阅此处)。对称实值矩阵是一个例外,因为它们保证只有实特征值。

最新更新