我有以下问题,并且无法理解方程式的一部分:
估算积分的蒙特卡罗方法基本上是采用大量随机样本并确定加权平均值。例如,f(x)的积分可以从N个独立随机样本x r 估算
alt text http://www.goftam.com/images/area.gif
对于xr在[x1,x2]范围内的均匀概率分布。因为每个 函数评估f(xr)是独立的,很容易分发这项工作 在一系列过程中。
我不明白f(x r )应该做什么?它会反馈到相同的等式中吗?那不是一个无限循环吗?
答案 0 :(得分:11)
答案 1 :(得分:7)
您的目标是计算从f
到x1
的{{1}}的积分。例如,您可能希望计算从x2
到sin(x)
的{{1}}的积分。
使用蒙特卡洛积分,您可以通过对区间0
中的随机点进行采样并在这些点评估pi
来对此进行近似。也许您想称之为[x1,x2]
。
所以不,f
不会“反馈”到自身。它调用函数MonteCarloIntegrate( f, x1, x2 )
,这是您尝试数字集成的函数,例如MonteCarloIntegrate
。
答案 2 :(得分:1)
将f(x_r)
替换为f(x_r_i)
(读取:f在x
sub r
sub i
处评估。从r_i
区间随机统一选择[x_1, x_2]
。
重点是:f
上[x_1, x_2]
下的区域等于(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
其中A = (x_2 - x_1) * avg(f) ~ (x_2 - x_1) * (1 / N) * sum_{i=1}^{N} f(x_r_i).
是从[x_1,x_2]随机选择的点。
然后
f
以下是考虑此等式的另一种方法:区间[x_1, x_2]
下(x_2 - x_1)
下的区域与长度为f
且高度等于的f
区域相同平均身高(1 / N) * sum_{i=1}^{N} f(x_r_i)
。 {{1}}的平均高度约为
{{1}}
这是我们之前制作的价值。
答案 3 :(得分:0)
它是x i 还是x r 是无关紧要的 - 它是我们输入函数f()的随机数。
我更有可能编写函数(除了格式化),如下所示:
(x 2 -x 1 )* sum(f(x i ))/ N
这样,我们可以看到我们采用f(x)的N个样本的平均值来得到函数的平均高度,然后乘以宽度(x2-x1)。
因为毕竟积分只是计算曲线下的面积。 (http://hyperphysics.phy-astr.gsu.edu/Hbase/integ.html#c4的好照片。
答案 4 :(得分:0)
x_r是积分范围内的随机值。
将Random(x_1,x_2)替换为x_r将得到等效方程。