一、背景知识
1、连续随机变量的概率密度函数
对于连续型随机变量的概率密度函数(PDF),其在整个定义域上的积分必须等于1。这是概率密度函数的一个基本属性,它确保了随机变量取任何值的概率之和等于1,符合概率论的公理。
也即:如果x是一个连续型随机变量,其概率密度函数表示为f(x),则必须满足以下条件:
∫ l u f ( x ) d x = 1 ,其中 l 、 u 表示积分的上下界限 \int_{l}^{u} f(x) \, dx = 1,其中l、u表示积分的上下界限 ∫luf(x)dx=1,其中l、u表示积分的上下界限
这个积分表示了随机变量x取值在l到u之间所有可能值的概率之和必须等于1。
2、连续随机变量的均匀分布
均匀分布,又称矩形分布,是一种连续概率分布,其概率密度函数(Probability Density Function, PDF)在某个区间内是恒定的,而在该区间外是零。均匀分布的特点是随机变量在定义域内任何子区间上取值的概率是相同的。
对于连续型均匀分布,其数学表达式如下:
f
(
x
)
=
{
1
b
−
a
for
a
≤
x
≤
b
,
0
otherwise
.
f(x) = \begin{cases} \frac{1}{b-a} & \text{for } a \le x \le b, \\ 0 & \text{otherwise}. \end{cases}
f(x)={b−a10for a≤x≤b,otherwise.
其中,a 是分布的下限,b 是分布的上限,b > a。
对于连续型均匀分布,期望值(均值)E[X]是区间中点: E [ X ] = a + b 2 E[X] = \frac{a + b}{2} E[X]=2a+b
二、蒙特卡罗积分法
蒙特卡罗积分法是一种基于随机数的数值积分方法,核心思想是利用随机变量的期望值来近似计算积分的值,它通过随机抽样生成大量的样本点的方式来近似计算定积分的值,这是因为积分值服从大数定律。
具体来说,对于被积函数h(x),如果h(x)=f(x)p(x),其中p(x)为一个在积分区间的概率密度函数,即满足在积分区间的积分值为1,即:
∫ a b h ( x ) d x = ∫ a b f ( x ) p ( x ) d x ,其中 ∫ a b p ( x ) d x = 1 \int_{a}^{b} h(x) \, dx=\int_{a}^{b} f(x) p(x)\, dx,其中\int_{a}^{b} p(x)\, dx=1 ∫abh(x)dx=∫abf(x)p(x)dx,其中∫abp(x)dx=1
则:
∫
a
b
h
(
x
)
d
x
≈
1
n
∑
i
=
1
n
f
(
x
i
)
,其中
n
为抽样的样本点数量,
f
(
x
)
=
h
(
x
)
/
p
(
x
)
\int_{a}^{b} h(x) \, dx≈\frac{1}{n} \sum_{i=1}^{n}f(x_i),其中n为抽样的样本点数量 ,f(x)=h(x)/p(x)
∫abh(x)dx≈n1i=1∑nf(xi),其中n为抽样的样本点数量,f(x)=h(x)/p(x)
蒙特卡罗方法的误差主要取决于样本点的数量。一般来说,随着样本点数量的增加,误差会减小。
在实际应用中,蒙特卡洛积分法的一个关键步骤是生成随机数。这些随机数通常是均匀分布的,但也可以是其他类型的分布,如正态分布、泊松分布等,主要看被积函数h(x)怎么分解成f(x)p(x),使得p(x)在被积区间的积分值为1,如果p(x)是均匀分布则p(x)=1/(b-a),f(x)=(b-a)h(x)。
三、用蒙特卡罗求定积分求 ∫ 1 10 x d x \int_{1}^{10}xdx ∫110xdx案例
采用p(x)为均匀分布,则p(x)=1/10,f(x)=10x,取n=11,
x
i
x_i
xi=1,2,…,10,针对11个采样点,计算10x的值并求和:
则:
∫
1
10
x
d
x
≈
1
11
∑
i
=
1
11
10
x
i
=
550
/
11
=
50
\int_{1}^{10} x\, dx≈\frac{1}{11} \sum_{i=1}^{11}10x_i=550/11=50
∫110xdx≈111i=1∑1110xi=550/11=50
如果用正规的积分计算方式,x的积分为x²/2,则 ∫ 1 10 x d x = ( x 2 / 2 ) ∣ 0 10 = 50 \int_{1}^{10}xdx=(x²/2)|^{10}_0=50 ∫110xdx=(x2/2)∣010=50,可以看到这2种方式计算的积分完全相同。
四、小结
本文介绍了蒙特卡罗积分法近似求解定积分的方法,并举例说明了具体使用方法,案例是一个简单积分,实际上蒙特卡罗积分法更适合用于计算不好求积分函数的积分计算,背后的原理是一样的。
更多统计学习基础知识请参考专栏《统计学习基础知识》。
更多人工智能基础知识请参考专栏《人工智能基础知识》。
写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!
关于老猿的付费专栏
- 付费专栏《https://blog.csdn.net/laoyuanpython/category_9607725.html 使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,对应文章目录为《 https://blog.csdn.net/LaoYuanPython/article/details/107580932 使用PyQt开发图形界面Python应用专栏目录》;
- 付费专栏《https://blog.csdn.net/laoyuanpython/category_10232926.html moviepy音视频开发专栏 )详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/107574583 moviepy音视频开发专栏文章目录》;
- 付费专栏《https://blog.csdn.net/laoyuanpython/category_10581071.html OpenCV-Python初学者疑难问题集》为《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的伴生专栏,是笔者对OpenCV-Python图形图像处理学习中遇到的一些问题个人感悟的整合,相关资料基本上都是老猿反复研究的成果,有助于OpenCV-Python初学者比较深入地理解OpenCV,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/109713407 OpenCV-Python初学者疑难问题集专栏目录 》
- 付费专栏《https://blog.csdn.net/laoyuanpython/category_10762553.html Python爬虫入门 》站在一个互联网前端开发小白的角度介绍爬虫开发应知应会内容,包括爬虫入门的基础知识,以及爬取CSDN文章信息、博主信息、给文章点赞、评论等实战内容。
前两个专栏都适合有一定Python基础但无相关知识的小白读者学习,第三个专栏请大家结合《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的学习使用。
对于缺乏Python基础的同仁,可以通过老猿的免费专栏《https://blog.csdn.net/laoyuanpython/category_9831699.html 专栏:Python基础教程目录)从零开始学习Python。
如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。