程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在 Python 中使用 Jacobi Iteration 计算马尔可夫链的均衡概率大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决在 Python 中使用 Jacobi Iteration 计算马尔可夫链的均衡概率?

开发过程中遇到在 Python 中使用 Jacobi Iteration 计算马尔可夫链的均衡概率的问题如何解决?下面主要结合日常开发的经验,给出你关于在 Python 中使用 Jacobi Iteration 计算马尔可夫链的均衡概率的解决方法建议,希望对你解决在 Python 中使用 Jacobi Iteration 计算马尔可夫链的均衡概率有所启发或帮助;

我正在尝试计算一个计算马尔可夫链均衡概率的函数。 对于这个问题,已经得到了我的转移矩阵。

现在我正在尝试定义一个名为 Jacobi 的函数,但对最有效的方法感到困惑。有关如何执行此操作的任何建议?

到目前为止,我已尝试将其设置为方程组并求解 x=a^(-1)*b,但由于转换矩阵是奇异的,因此无法正确实现。

我知道我需要将转换矩阵乘以一个变量矩阵才能得到 7 个单独的方程。然后我需要添加方程 x0 + x1 + x2 + x3 + x4 + x5 + x6 = 1。在我得到所有 8 个方程后,我可以求解 x0 到 x6 以获得我的均衡概率。你知道我如何在 python 代码中实现这个过程吗?

解决方法

我不确定雅可比方法是否适用于马尔可夫转换矩阵。不过,还有其他更简单的技术可以找到平稳分布。首先像你描述的那样求解方程组:

import numpy as np


>>> M = np.array([[0.084,0.1008,0.168,0.224,0.1494,0.0498],[0.084,[0.5768,0.0498,0.0,0.0],[0.3528,[0.1848,0.0498]])
>>>
>>> I = np.eye(len(M)) # identity matrix
>>>
>>> A = m.T - I  # rearrange each "equation" in the system
>>>
>>> A = np.vstack([A,np.ones((1,len(A)))]) # add row of ones
>>>
>>> b = np.zeros(len(A)) # prepare solution vector
>>> b[-1] = 1.0 # add a one to the last entry
>>>
>>> np.linalg.solve(A.T @ A,A.T @ b) # solve the normal equation
array([0.22288974,0.14776044,0.1781388,0.181211,0.1504296,0.09080838,0.02876204])

你也可以重复将 @H_373_16@m 与自身相乘直到它收敛:

>>> np.linalg.matrix_power(M,25)[0]
array([0.22288974,0.02876204])

大佬总结

以上是大佬教程为你收集整理的在 Python 中使用 Jacobi Iteration 计算马尔可夫链的均衡概率全部内容,希望文章能够帮你解决在 Python 中使用 Jacobi Iteration 计算马尔可夫链的均衡概率所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。