用python程序验证马尔科夫链形成过程

用python程序验证马尔科夫链形成过程

最后更新:2020年7月9日,代码优化,添加注释;

1.效果

在这里插入图片描述

2.代码及解释

代码阐述:
核心一个绘图函数draw()两层循环,外层遍历30步,作用是绘制x轴0-29这三十个点,里层遍历次数是np数组p的长度,产生前面每个x轴对应的y轴坐标,这样, pl.scatter()函数绘制图的时候,每一次画一个x轴上对应的三个y轴的点;
在这里插入图片描述
下一次,x为1时候,p0等于前一次的p0乘以p,结果会发生变化,对应的三个y轴也会变化;

'''
@Author: randolph
@Date: 2020-07-08 11:31:06
@LastEditors: randolph
@LastEditTime: 2020-07-09 12:46:11
@version: 1.0
@Contact: cyg0504@outlook.com
@Descripttion: 用python程序验证马尔科夫链形成过程
参考: https://blog.csdn.net/sinat_35821976/article/details/77094935
注意: 数据和函数是自己自定义的,注意根据自己情况作修改
'''
import numpy as np
import pylab as pl

p01 = np.array([0.5, 0.2, 0.3])
p02 = np.array([0.1, 0.4, 0.5])
p = np.array([[0.9, 0.075, 0.025], [0.13, 0.8, 0.07], [0.25, 0.25, 0.5]])
n = 30

c = ['r', 'g', 'b']                 # 颜色数组:红 绿 蓝


def draw(p0):
    for i in range(n):              # 遍历30次
        p0 = np.dot(p0, p)          # 点积
        for j in range(len(p)):     # 根据p长度决定画几条线(y轴)
            pl.scatter(i, p0[j], c=c[j], s=.5)          # 作图


pl.subplot(121)
draw(p01)           # 调用作图函数画p01
pl.subplot(122)
draw(p02)           # 调用作图函数画p02
pl.show()           # 显示绘图
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值