相关疑难解决方法(0)

如何找出对应于矩阵特定特征值的特征向量?

如何找出与特定特征值对应的特征向量?

我有一个随机矩阵(P),其中一个特征值是1.我需要找到对应于特征值1的特征向量.

scipy函数scipy.linalg.eig返回特征值和特征向量的数组.

D, V = scipy.linalg.eig(P)
Run Code Online (Sandbox Code Playgroud)

这里D(值的数组)和V(矢量的数组)都是矢量.

一种方法是在D中进行搜索并在V中提取相应的特征向量.有更简单的方法吗?

python numpy scipy eigenvalue eigenvector

5
推荐指数
2
解决办法
1万
查看次数

左特征向量在scipy中没有给出正确的(马尔可夫)平稳概率

鉴于以下马尔可夫矩阵:

import numpy, scipy.linalg
A = numpy.array([[0.9, 0.1],[0.15, 0.85]])
Run Code Online (Sandbox Code Playgroud)

静止概率存在且等于[.6, .4].通过采用矩阵的大功率,这很容易验证:

B = A.copy()
for _ in xrange(10): B = numpy.dot(B,B)
Run Code Online (Sandbox Code Playgroud)

在这里B[0] = [0.6, 0.4].到现在为止还挺好.根据维基百科:

静态概率向量被定义为在应用转移矩阵时不改变的向量; 也就是说,它被定义为与特征值1相关的概率矩阵的左特征向量:

所以我应该能够计算特征值为1 的特征向量A,这也应该给出我的平稳概率.Scipy的实现eig有一个左关键字:

scipy.linalg.eig(A,left=True,right=False)
Run Code Online (Sandbox Code Playgroud)

得到:

(array([ 1.00+0.j,  0.75+0.j]), array([[ 0.83205029, -0.70710678],
   [ 0.5547002 ,  0.70710678]]))
Run Code Online (Sandbox Code Playgroud)

其中主要的左特征向量是:[0.83205029, 0.5547002].我读错了吗?如何[0.6, 0.4]使用特征值分解?

python markov-chains scipy

4
推荐指数
1
解决办法
2588
查看次数

标签 统计

python ×2

scipy ×2

eigenvalue ×1

eigenvector ×1

markov-chains ×1

numpy ×1