Matlab实现均匀随机变量期望时结果不符的问题排查
你的代码其实没有错误!
嗨,Michael!先别着急——你看到的收敛值0.46其实完全符合理论结果,咱们来一步步理清楚:
首先,先计算一下理论期望的具体数值:1 - cos(1) 这个表达式的结果大约是 0.4597,和你观察到的0.46几乎一致,只是四舍五入的差异而已。
为什么序列会收敛到1 - cos1?
这是大数定律的直接应用:
- 你生成的每个
X_k都是独立同分布的均匀随机变量,服从U[0,1]; - 对于每个
X_k,它的期望E[sin(X_k)]可以通过积分计算:
$$E[\sin X] = \int_0^1 \sin x , dx = -\cos x \bigg|_0^1 = 1 - \cos1$$ - 根据大数定律,当样本量N趋向于无穷大时,样本均值$\frac{1}{N}\sum_{k=1}^N \sin(X_k)$会依概率收敛到这个理论期望。
补充建议:
你可以在代码里加入理论值的计算和对比,让结果更直观:
n = [2^5,2^6,2^7,2^8,2^9,2^10,2^11,2^12,2^13]; theoretical = 1 - cos(1); % 计算理论期望 disp(['理论期望:', num2str(theoretical)]); for i=1:9 X = rand(n(i),1); E(i) = sum(sin(X))/n(i); disp(['样本量', num2str(n(i)), '对应的样本均值:', num2str(E(i))]); end
运行这段代码后,你会看到每个样本均值都在理论值附近波动,且随着样本量增大越来越接近0.4597。
内容的提问来源于stack exchange,提问作者ms_stud
相关产品推荐
相关产品推荐

