首页 > 其他分享 >利用中心极限定理求解圣彼得堡悖论问题的近似曲线

利用中心极限定理求解圣彼得堡悖论问题的近似曲线

时间:2023-09-01 09:12:02浏览次数:38  
标签:infty le 10 sum 求解 plt 悖论 圣彼得堡 math

此文为《概率论》课程小项目。

关于圣彼得堡悖论的一些思考

记 \(N\) 为 游戏的轮数,则 \(N \sim Ge(\frac{1}{2}),P(N=k)=2^{-k},k=1,2,3,...\)

奖金 \(X=2^N\),\(E(X)=E(2^N)=\sum_{k=1}^{+\infty} 2^k\times 2^{-k}=\sum_{k=1}^{+\infty} 1 = +\infty\)

理论上如果能玩无限轮游戏,便可获得无限的奖金。

下面作模拟:

import random
import matplotlib.pyplot as plt

MaxN = 10000000

def getAward():
    award = 1
    while(1):
        award *= 2
        if (random.random() <= 0.5):
            break
    return award

sumAward = 0

x_v = []
y_v = []
for i in range(0, MaxN):
    sumAward += getAward()
    x_v.append(i + 1)
    y_v.append(sumAward / (i + 1))

plt.xlabel("Count of rounds")
plt.ylabel("Average award")
plt.plot(x_v, y_v)


[<matplotlib.lines.Line2D at 0x1f843cec1c0>]

该算法的期望复杂度为\(O(\sum_{k=1}^{N}\sum_{j=1}^{+\infty})(\frac{1}{2})^j=O(N)\)

通过模拟发现现实中,在有限的游戏轮数的情况下,奖金并不是无限。

随着轮数的增加,平均奖金在逐渐升高。

下面通过引入置信度的方法来大致计算出上面这条曲线的函数。

考虑求条件期望 \(E(X|X\le M)\),其中 \(M\) 是使 \(P\{ X \le M\} \ge 1-p\) 的最大值。

\(1-p\) 即为置信度。

若令 \(p=10^{-3}\),则 \(M=2^{10}=1024\),则 \(E(X|X \le 1024)=10/(1-p) \approx 10\)

考虑 \(n\) 轮的情况。

记 \(X_i\) 表示第 \(i\) 轮的奖金。

则 \(X=X_1+X_2+...+X_n=\mu_n\)。

我们想要知道 \(X/n\) 的相关性质(由于 \(E(X_i)=+\infty\) ,所以不能用辛钦大数定律)

还是考虑计算条件期望 \(E(X/n|X \le M)\),其中 \(M\) 是使 \(P\{ X \le M\} \ge 1-p\) 的最大值,设 \(p=2^{-m}\)。

考虑如何求 \(M\)。

记 \(Y_i\) 为 \(X_i\) 去掉 \(>M\) 之后部分的新的随机变量。

此时 \(\mu_n = \sum_{i=1}^n Y_i\)
则 \(P\{Y_i=k\}=2^{-k}/(1-2^{-m})\)

\(E(Y_i)=m/(1-2^{-m})\)

\(D(Y_i)=(2^{m+1}-2)/(1-2^{-m})\)

\(n\rightarrow \infty\) 时,对 \(\mu_n\) 成立中心极限定理:

\(P\{\mu_n \le M\}=P\{\frac{\mu_n-nE(Y_i)}{\sqrt{n\times D(Y_i)}} \le \frac{M-nE(Y_i)}{\sqrt{n\times D(Y_i)}} \} = \Phi(\frac{M-nE(Y_i)}{\sqrt{n\times D(Y_i)}})\)

不放令 \(m=30,n=10^7\),解 \(M\) 如下:

from scipy.stats import norm

n = 10000000
m = 30
p = pow(0.5, m)
Ey = m/(1-p)
Dy = (pow(2, m + 1) - 2) / (1 - p)

x = norm.ppf(1 - p)

M = x * pow(n * Dy, 0.5) + n * Ey

print("M = ", M)
M =  1180628405.2149527

解出 \(M\) 后,\(E(X/n|X \le M)\) 就好算了。

可以近似认为就是 \(log M\)

import math

print(math.log(M)/math.log(2))

30.136907811683777

考虑对比两条曲线:

y_v_2 = []

for i in range(0, MaxN):
    n = i + 1
    M = x * pow(n * Dy, 0.5) + n * Ey
    y_v_2.append(math.log(M)/math.log(2))

plt.plot(x_v, y_v, label = "real")
plt.plot(x_v, y_v_2, label = "estimate", color = 'red')
plt.legend()
plt.show()
    

不难发现还挺准的。

标签:infty,le,10,sum,求解,plt,悖论,圣彼得堡,math
From: https://www.cnblogs.com/coldchair/p/17670884.html

相关文章

  • 并行求解器基础知识学习
      1.数字化工具的新特征    。。。。物理机-->虚拟化-->容器化   2.分布式并行编程基础(1)传相关并行编程框架:MPI(消息传递接口)——一种典型的并行编程框架OpenCL   CUDA(2)HDFS分布式文件系统下的MapReduce并行模式shuffle调度  ......
  • 如何用随机方法求解组合优化问题(七)
    模拟退火算法应用举例这是一篇笔记,是对于B站up主马少平的视频(第四篇如何用随机方法求解组合优化问题(七))的学习与记录。旅行商问题一个商人要访问\(n\)个城市,每个城市访问一次,并且只能访问一次,最后再回到出发城市。问如何规划才能使得行走的路径长度最短。旅行商问题的解......
  • 如何用随机方法求解组合优化问题(六)
    模拟退火算法的参数选择这是一篇笔记,是对于B站up主马少平的视频(第四篇如何用随机方法求解组合优化问题(六))的学习与记录。算法实现需要确定的参数:初始温度\(t_0\);温度\(t\)的衰减函数,即温度的下降方法;算法的终止准则,终止温度\(t_f\)或者终止条件;每个温度\(t\)下的......
  • 如何用随机方法求解组合优化问题(五)
    模拟退火算法这是一篇笔记,是对于B站up主马少平的视频(第四篇如何用随机方法求解组合优化问题(五))的学习与记录。前置知识回顾【回顾】:局部最优问题在局部搜索问题中,可能会陷入局部最优解(如上图中的B、C),解决思路是:以概率接受差解。【回顾】:退火过程中从状态\(i\)转换为状......
  • 如何用随机方法求解组合优化问题(四)
    模拟退火算法中的退火过程是什么这是一篇笔记,是对于B站up主马少平的视频(第四篇如何用随机方法求解组合优化问题(四))的学习与记录。这篇笔记还没有介绍到模拟退火算法,而是记录退火这一物理过程以及相关的公式。最主要的内容是如何将退火过程的特点迁移到后续的算法设计中。退......
  • 数值分析MATLAB 实践 常微分方程求解
    数值分析算法MATLAB实践常微分方程求解Euler法及改进算法function[x,y]=euler(fun,a,b,h,y0)%一阶常微分方程的一般表达式的右端函数:fun%显示欧拉格式%f是带求函数的一阶导形式%a,b分别是自变量取值上下限%y0是初始条件y(0)%h是步长 s=(b-a)/h;%求步数......
  • 减法平均优化算法(SABO)求解单目标优化问题附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • 减法平均优化算法(SABO)求解单目标优化问题附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • 基于斑马优化算法Zebra Optimization Algorithm求解单目标优化问题附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • 如何用随机方法求解组合优化问题(三)
    局部搜索应用:百万皇后问题皇后问题皇后问题:在一个\(n\timesn\)的棋盘上,每行每列有且只有一个皇后棋子,每对角线至多一个皇后棋子。如果使用回溯法,计算10皇后、20皇后问题还是可行的。但是当皇后数增加到一百万个时,又该如何求解呢?局部搜索算法用于求解组合优化问题,而皇后......