我有以下问题,并且无法理解等式的一部分:
估计积分的蒙特卡罗方法基本上是,取大量随机样本并确定加权平均值。例如,f(x) 的积分可以从 N 个独立的随机样本 x r估计为
替代文字 http://www.govtam.com/images/area.gif
对于 xr 在 [x1, x2] 范围内的均匀概率分布。由于每个函数评估 f(xr) 都是独立的,因此很容易将这项工作分配给一组进程。
我不明白 f(x r ) 应该做什么?它是否反馈到相同的方程中?那不是无限循环吗?
我有以下问题,并且无法理解等式的一部分:
估计积分的蒙特卡罗方法基本上是,取大量随机样本并确定加权平均值。例如,f(x) 的积分可以从 N 个独立的随机样本 x r估计为
替代文字 http://www.govtam.com/images/area.gif
对于 xr 在 [x1, x2] 范围内的均匀概率分布。由于每个函数评估 f(xr) 都是独立的,因此很容易将这项工作分配给一组进程。
我不明白 f(x r ) 应该做什么?它是否反馈到相同的方程中?那不是无限循环吗?
您的目标是计算f
fromx1
到的积分x2
。例如,您可能希望计算sin(x)
from0
到的积分pi
。
使用蒙特卡洛积分,您可以通过在区间内随机采样点并在这些点处[x1,x2]
进行评估来近似这一点。f
也许你想称之为MonteCarloIntegrate( f, x1, x2 )
.
所以不,MonteCarloIntegrate
不会“反馈”到自身。它调用一个函数f
,即您尝试进行数值积分的函数,例如sin
.
替换f(x_r)
为(阅读: f 在sub subf(x_r_i)
评估)。是从区间 中随机均匀选择的。x
r
i
r_i
[x_1, x_2]
关键是: on 下的面积f
等于[x_1, x_2]
区间on(x_2 - x_1)
的平均值的倍数。那是f
[x_1, x_2]
A = (x_2 - x_1) * [(1 / (x_2 - x_1)) * int_{x_1}^{x_2} f(x)\, dx]
方括号中的部分是f
我们[x_1, x_2]
将表示的平均值avg(f)
。我们如何估计 的平均值f
?通过在随机点对其进行采样并在这些随机点取评估N
的平均值。f
以机智:
avg(f) ~ (1 / N) * sum_{i=1}^{N} f(x_r_i)
其中x_r_1, x_r_2, ..., x_r_N
是从 [x_1, x_2] 中均匀随机选择的点。
然后
A = (x_2 - x_1) * avg(f) ~ (x_2 - x_1) * (1 / N) * sum_{i=1}^{N} f(x_r_i).
这是考虑这个等式的另一种方法:f
区间[x_1, x_2]
上的面积与长度(x_2 - x_1)
和高度等于 的平均高度的矩形的面积相同f
。的平均高度f
约为
(1 / N) * sum_{i=1}^{N} f(x_r_i)
这是我们之前产生的价值。
是 x i还是 x r无关紧要——这是我们输入函数 f() 的随机数。
我更有可能编写如下函数(除了格式化):
(x 2 -x 1 ) * 和(f(x i ))/N
这样,我们可以看到我们取 f(x) 的 N 个样本的平均值来获得函数的平均高度,然后乘以宽度 (x2-x1)。
因为,毕竟,积分只是计算曲线下的面积。(漂亮的图片在http://hyperphysics.phy-astr.gsu.edu/Hbase/integ.html#c4。
x_r 是来自积分范围的随机值。
用 Random(x_1, x_2) 代替 x_r 将给出一个等效方程。