求解统计领域中的二次递推关系并验证蒙特卡洛模拟一致性
嗨,我来帮你拆解这个问题,分两部分来聊:
一、关于递推关系的闭式解问题
你遇到的递推式是:Xₙ = (1 + Xₙ₋₁²)/2,初始值 X₀ = 0.5,且已知序列会收敛到1。
首先很明确地说:这类二次非线性递推关系,不存在初等闭式解——也就是说,你没法用多项式、指数函数、对数函数、三角函数这些我们常用的初等函数组合出一个直接计算Xₙ的表达式。
为什么这么说呢?这类非线性递推的特性决定了,没有初等函数能满足f(n) = (1 + f(n-1)²)/2这样的迭代关系。如果要严谨证明的话,可以从函数方程的角度分析:假设存在这样的初等函数f(n),那么对其求递推的差分或者做变换,都会发现无法匹配任何初等函数的性质。不过也不用太沮丧,虽然没有初等闭式解,但迭代计算本身就很容易实现(比如你写的MATLAB代码就能快速算出任意n对应的Xₙ),对于统计问题来说,这种近似计算已经足够实用了。
二、蒙特卡洛模拟与递推结果不匹配的原因
你发现自己的蒙特卡洛模拟(max(H(i-1), rand(0,1))的均值)和递推序列G不匹配,这其实是因为这两个模型对应的是完全不同的随机过程,它们的期望自然不一样:
1. 先看你的蒙特卡洛过程
你的H序列是这样生成的:H₁是(0,1)上的均匀随机数,Hᵢ = max(Hᵢ₋₁, Uᵢ)(Uᵢ是独立的(0,1)均匀变量)。这个过程的期望是可以精确计算的:
- Hᵢ的累积分布函数是
P(Hᵢ ≤ x) = P(U₁ ≤x, U₂ ≤x, ..., Uᵢ ≤x) = xⁱ(因为每一步的随机数都要≤x才能让max≤x) - 对应的概率密度函数是
i xⁱ⁻¹ - 所以期望
E[Hᵢ] = ∫₀¹ x * i xⁱ⁻¹ dx = i/(i+1)
比如i=2时,期望是2/3≈0.6667,i=3时是3/4=0.75,和你递推得到的G(2)=0.625、G(3)≈0.6953显然差异很大,这就解释了为什么模拟结果和递推序列不匹配。
2. 你的递推序列对应的是什么?
你提到这个递推是从统计期望问题中推导出来的,那可能你在推导过程中把模型对应错了?这个确定的递推序列Xₙ本身是一个收敛到1的确定性序列,它对应的应该是某个特定随机过程的期望,但肯定不是这个max均匀变量的过程。你可以再梳理一下最初的统计问题,看看是不是在推导期望递推时出现了偏差,这样才能设计出对应的蒙特卡洛模拟来验证。
备注:内容来源于stack exchange,提问作者David




