立方体上的随机游动

昨天的随机过程课程有一道有趣的习题:

问题: 一个粒子在正立方体的顶点上做随机游动,每次有 1 4 \dfrac14 41 的概率停留不动,有 1 4 \dfrac14 41 的概率移动至相邻的顶点. 试求从某顶点 v v v 出发首次回到 v v v 的平均时间.
立方体有8个顶点
假设这立方体的8个顶点分别标记为 0 , 1 , ⋯   , 7 0,1,\cdots,7 0,1,,7 . 为方便起见,我们来讨论从 0 0 0出发的粒子首次回到 0 0 0 的平均时间. 设随机变量 X n X_n Xn 代表 n n n 步游动后粒子的位置,则 X n X_n Xn将取值于 0 , 1 , ⋯   , 7 0,1,\cdots,7 0,1,,7. 按照标准的记号,定义
τ 0 = inf ⁡ { n ⩾ 0 : X n = 0 } \tau_0=\inf\{n\geqslant0:X_n=0\} τ0=inf{n0:Xn=0}是粒子首次回到 0 0 0 的时刻.


线性方程组法

解决这类平均时间的问题的一般方法是为返回时间建立合适的线性方程组. 定义
x i = E i τ 0 ,    i = 0 , 1 , ⋯   , 7 x_i=E_i\tau_0,~~i=0,1,\cdots,7 xi=Eiτ0,  i=0,1,,7 x i x_i xi 就是粒子从 i i i 出发时首次返回 0 0 0 的平均时间. 由于立方体的对称性,从 1 , 3 , 7 1,3,7 1,3,7 出发返回 0 0 0 的平均时间应该相等,从 1 , 3 , 7 1,3,7 1,3,7 出发返回 0 0 0 的平均时间应该相等,即
x 0 = x ,    x 1 = x 3 = x 4 = y ,    x 2 = x 7 = x 5 = z ,    x 6 = w x_0=x,~~x_1=x_3=x_4=y,~~x_2=x_7=x_5=z,~~x_6=w x0=x,  x1=x3=x4=y,  x2=x7=x5=z,  x6=w因此我们只需为 x , y , z , w x,y,z,w x,y,z,w 建立线性方程组.

显然 x = 0 x=0 x=0(从 0 0 0 出发的粒子已经位于 0 0 0). 关于 y y y 我们进行如下的推导: 从1出发的粒子,有 1 4 \frac14 41 的概率仍位于 1 1 1, 所需时间仍为 x x x; 有 1 4 \frac14 41 的概率返回 0 0 0, 所需时间为 0 0 0; 有 2 4 \frac24 42 的概率抵达 2 , 7 2,7 2,7, 所需时间为 y y y, 因而
y = 1 4 x + 1 4 y + 2 4 z + 1 y=\frac14 x+\frac14 y+\frac 24 z+1 y=41x+41y+42z+1关于 z , w z,w z,w可建立类似的方程,并得到
{ x = 0 y = 1 4 x + 1 4 y + 2 4 z + 1 z = 2 4 y + 1 4 z + 1 4 w + 1 w = 3 4 z + 1 4 w + 1 \left\{ \begin{aligned} x&=0\\ y&=\frac14 x+\frac14 y+\frac 24 z+1\\ z&=\frac24y+\frac14z+\frac14w+1\\ w&=\frac34z+\frac14w+1 \end{aligned} \right. xyzw=0=41x+41y+42z+1=42y+41z+41w+1=43z+41w+1求解这个方程组我们得到 x = 0 , y = 28 3 , z = 12 , w = 40 3 x=0,y=\frac{28}3,z=12,w=\frac{40}3 x=0,y=328,z=12,w=340. 下面我们就可以来计算从 0 0 0 出发的粒子回到 0 0 0 的平均时间 T T T 了. 从 0 0 0 出发的粒子有 1 4 \frac14 41 的概率停留不动, 剩余所需时间为0; 有 3 4 \frac34 43 的概率抵达相邻的顶点, 剩余所需时间为 y y y, 故
T = 1 4 ⋅ 0 + 3 4 ⋅ y + 1 = 8 T=\frac14\cdot0+\frac34\cdot y+1=8 T=410+43y+1=8即返回 0 0 0 的平均时间为 8 8 8.


不变分布法

现在我们采取下面的证明思路: 当粒子在立方体上运动 N N N 次后,取到 0 0 0 的次数约为 N 8 \frac N8 8N,因为取到 0 0 0 的频率为 1 8 \dfrac18 81;取到 0 0 0 的次数也约为 N T \dfrac N{T} TN,因为 T T T 是返回 0 0 0 的平均时间. 两者相等意味着
N 8 ≈ N T \dfrac N8\approx \dfrac NT 8NTN
因此 T = 8 T=8 T=8, 从而得到了与第一种方法相同的结果.


显然上面的表述是非常不严谨的, 严格描述这种方法需要用到马氏链的不变分布和遍历定理. 由于状态空间 S = { 0 , 1 , ⋯   , 7 } S=\{0,1,\cdots,7\} S={0,1,,7} 是有限且不可约,因此存在唯一的不变分布 π \pi π, 并且 π 0 = ⋯ π 7 = 1 8 \pi_0=\cdots\pi_7=\frac18 π0=π7=81. 这意味着, 当粒子在立方体的顶点上运动充分长的时间后,取到各个顶点的频率都近似为 1 8 \frac18 81. 如果记
σ 0 = inf ⁡ { n ⩾ 1 : x n = 0 } \sigma_0=\inf\{n\geqslant1:x_n=0\} σ0=inf{n1:xn=0}则所求平均返回时间 T T T 即为 T = E 0 σ 0 T=E_0\sigma_0 T=E0σ0. 遍历定理告诉我们,
π 0 = 1 E 0 σ 0 \pi_0=\frac1{E_0\sigma_0} π0=E0σ01即粒子在运动中取到 0 0 0 的频率趋向于平均返回时间的倒数. 因此 T = 1 π 0 = 8 T=\dfrac1{\pi_0}=8 T=π01=8.


参考资料

[1] 钱敏平,龚光鲁,陈大岳,章复熹《应用随机过程》高等教育出版社.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Matlab中,可以随机生成若干个球体并放置在一个立方体内。具体的步骤如下: 首先,可以使用rand函数生成三维坐标,来确定每个球体的位置。使用如下代码来生成一个介于0和1之间的三维坐标: x = rand(N,1); % 生成N个x坐标 y = rand(N,1); % 生成N个y坐标 z = rand(N,1); % 生成N个z坐标 接下来,可以使用scatter3函数将生成的点绘制到三维坐标系中。例如: figure; scatter3(x,y,z,'filled'); 然后使用一个循环,通过改变球体的半径和颜色来模拟球体的形状。这里的颜色可以使用rand函数来随机生成。具体的代码如下: for i = 1:N radius = rand(1)*0.1; % 随机生成半径 color = rand(1,3); % 随机生成颜色 [xs,ys,zs] = sphere(20); % 生成球体 xs = xs*radius + x(i); % 平移x坐标 ys = ys*radius + y(i); % 平移y坐标 zs = zs*radius + z(i); % 平移z坐标 surf(xs,ys,zs,'FaceColor',color,'EdgeColor','none'); % 绘制球体 end 最后,将生成的球体放入立方体之中,可以使用2D数组来表示立方体的坐标系,并取坐标系中的随机点作为球体的位置。具体的代码如下: cube = zeros(10,10,10); % 生成10*10*10的立方体 for i = 1:N x = randi([1 10]); % 生成x坐标 y = randi([1 10]); % 生成y坐标 z = randi([1 10]); % 生成z坐标 cube(x,y,z) = 1; % 将该位置设为球体所在位置 end 最终,将生成的球体放置在立方体中,即可完成随机生成若干个球体的程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值