gpt4 book ai didi

python - 左特征向量在 scipy 中没有给出正确的(马尔可夫)固定概率

转载 作者:太空狗 更新时间:2023-10-30 02:13:11 30 4
gpt4 key购买 nike

给定以下马尔可夫矩阵:

import numpy, scipy.linalg
A = numpy.array([[0.9, 0.1],[0.15, 0.85]])

平稳概率存在且等于[.6, .4]。这很容易通过矩阵的大幂来验证:

B = A.copy()
for _ in xrange(10): B = numpy.dot(B,B)

此处 B[0] = [0.6, 0.4]。到目前为止,一切都很好。根据wikipedia :

A stationary probability vector is defined as a vector that does not change under application of the transition matrix; that is, it is defined as a left eigenvector of the probability matrix, associated with eigenvalue 1:

所以我应该能够计算 Aleft 特征向量,特征值为 1,这也应该给出平稳概率。 Scipy's implementation of eig有一个左关键字:

scipy.linalg.eig(A,left=True,right=False)

给予:

(array([ 1.00+0.j,  0.75+0.j]), array([[ 0.83205029, -0.70710678],
[ 0.5547002 , 0.70710678]]))

也就是说,主要的左特征向量是:[0.83205029, 0.5547002]。我读错了吗?如何使用特征值分解得到 [0.6, 0.4]

最佳答案

[0.83205029, 0.5547002] 只是 [0.6, 0.4] 乘以~1.39。

尽管从“物理”的角度来看,您需要其分量之和等于 1 的特征向量,scaling eigenvector by some factor does not change it's "eigenness" :

如果\vec{v} A = \lambda \vec{v} , 那么显然 (\alpha \vec{v}) A = \lambda (\alpha \vec{v})

因此,要获得 [0.6, 0.4],您应该这样做:

>>> v = scipy.linalg.eig(A,left=True,right=False)[1][:,0]
>>> v
array([ 0.83205029, 0.5547002 ])
>>> v / sum(v)
array([ 0.6, 0.4])

关于python - 左特征向量在 scipy 中没有给出正确的(马尔可夫)固定概率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10504158/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com