欢迎光临散文网 会员登陆 & 注册

马克洛夫链

2023-03-18 16:56 作者:温和派的美年达  | 我要投稿

一、引言:马尔科夫链是一种非常常见且相对简单的统计随机过程。它描绘了一种状态序列,每一个状态值取决于前面的有限个状态。

二、举例


假设每个状态进入下一个状态的概率相等。0点进入2,3概率都为1/2。1点进入2概率为1。2点进入0,1,3概率都为1/3。3点进入0,4概率都为1/2.4点进入0,1概率都为1/2。

三、解方程:

设x1,x2,x3,x4,x0为用户在1,2,3,4,0点的概率。

我们对此列出方程:

x1=0*x1+1/3*x2+0*x3+1/2*x4+0*x0

x2=1*x1+0*x2+0*x3+0*x4+1/2*x0

x3=0*x1+1/3*x2+0*x3+0*x4+1/2*x0

x4=0*x1+0*x2+1/2*x3+0*x4+0*x0

x0=0*x1+1/3*x2+1/2*x3+1/2*x4+0*x0

得到行列式:

|  -1     1/3     0    1/2    0  |          |   0   |

|  1      -1      0      0   1/2  |          |   0   |

|  0     1/3     -1     0   1/2  |    =    |   0   |

|  0      0      1/2    -1    0   |          |   0   |

|  0     1/3    1/2   1/4   -1  |          |   0   |

另外补充条件x1+x2+x3+x4+x0=1

容易解出:

x1=8/55,x2=3/11,x3=12/55,x4=6/55,x0=14/55


四、数学建模

用程序来实现用户状态的模拟

def fun(n):

    x1=0.2

    x2=0.2

    x3=0.2

    x4=0.2

    x0=0.2

    y1=0.2

    y2=0.2

    y3=0.2

    y4=0.2

    y0=0.2

    while n>=0:

        y1=1/3*x2+1/2*x4

        y2=1*x1+1/2*x0

        y3=1/3*x2+1/2*x0

        y4=1/2*x3

        y0=1/3*x2+1/2*x3+1/2*x4

        x1=y1

        x2=y2

        x3=y3

        x4=y4

        x0=y0

        n=n-1

    print(x1)

    print(x2)

    print(x3)

    print(x4)

    print(x0)

n=int(input())

fun(n)

五、结论:

不难发现随着运行次数增加,马克洛夫链的状态趋于稳定,并与我们解出来的结果一致。

数学建模里称之为动力系统模型。


六、小结:

马克洛夫链在教育学,经济学,金融学,互联网,农业等领域有许多重大的应用。

我们对于马克洛夫链的操作步骤是先根据每个状态进入下一状态的概率列出方程,在根据方程列出行列式求解。最后编写代码建立模型求解。

马克洛夫链的评论 (共 条)

分享到微博请遵守国家法律