R 蒙特卡罗模拟-什么';怎么了?
我想用蒙特卡罗模拟函数来计算曲线下的面积 。我想在区间[-2,2]上计算它 我目前的工作R 蒙特卡罗模拟-什么';怎么了?,r,simulation,montecarlo,integral,R,Simulation,Montecarlo,Integral,我想用蒙特卡罗模拟函数来计算曲线下的面积 。我想在区间[-2,2]上计算它 我目前的工作 # Define function f f <- function(x) x^2 + 1 # I want to close my function in rectangle (-2, 2) - x axis and (1, 5) y -axis n <- 10^6 # Randomize from x axis of rectangle x_n <- runif(n, min = -2
# Define function f
f <- function(x) x^2 + 1
# I want to close my function in rectangle (-2, 2) - x axis and (1, 5) y -axis
n <- 10^6
# Randomize from x axis of rectangle
x_n <- runif(n, min = -2, max = 2)
# Randomize from y axis of rectangle
y_n <- runif(n, min = 1, max = 5)
# Calculate function values of randomized points
values <- f(x_n)
# Formula for are under the curve for monte carlo simulation is
# Area of rectangle * (Points below curve) / (Total number of points)
#定义函数f
这里有一个图来显示你在使用什么。我希望它能帮助你更好地理解我在评论中写的内容:
您似乎忽略了y=1下面的矩形。面积(=4)是缺少的数量。因此,该代码用于计算非偏移量表达式x^2是正确的。更改为y_n这里有一个图,显示您正在使用的内容。我希望它能帮助你更好地理解我在评论中写的内容:
您似乎忽略了y=1下面的矩形。面积(=4)是缺少的数量。因此,该代码用于计算非偏移量表达式x^2是正确的。换成y_n我们可以这样尝试蒙特卡罗模拟
> n <- 1e6
> x <- runif(n, -2, 2)
> y <- runif(n, 0, 5)
> mean(x^2 + 1 - y >= 0) * 4 * 5
[1] 9.33014
>nxy平均值(x^2+1-y>=0)*4*5
[1] 9.33014
如果面积可以计算为曲线下的平均点数x^2+1-y>=0
,我们可以这样尝试蒙特卡罗模拟
> n <- 1e6
> x <- runif(n, -2, 2)
> y <- runif(n, 0, 5)
> mean(x^2 + 1 - y >= 0) * 4 * 5
[1] 9.33014
>nxy平均值(x^2+1-y>=0)*4*5
[1] 9.33014
如果面积可以计算为曲线下方的平均点数x^2+1-y>=0
,则似乎忽略了y=1下方的矩形。面积(=4)是缺少的数量。因此,该代码对于计算非偏移表达式x^2
是正确的。更改为y\n您似乎忽略了y=1下面的矩形。面积(=4)是缺少的数量。因此,该代码对于计算非偏移表达式x^2
是正确的。更改为y\n我知道结果更接近真实结果,但我为什么要扩大它?它背后的直觉是什么?我认为在矩形[1,5]中闭合这条曲线是很好的,因为[-2,2]上x^2+1的最小值和最大值是1和5。@Lucian当我们谈论曲线下的面积时,我们通常指曲线和x轴之间的面积。您所计算的是间隔x=[-2,2]上曲线y=x^2+1和y=1之间的面积。@AkselA:查看添加的绘图是否有助于理解问题。@AkselA。我道歉。我对评论的回答不正确。应该去卢西安。我很清楚,你理解并清楚地描述了这些问题。我知道结果更接近真实的结果,但我为什么要扩大它?它背后的直觉是什么?我认为在矩形[1,5]中闭合这条曲线是很好的,因为[-2,2]上x^2+1的最小值和最大值是1和5。@Lucian当我们谈论曲线下的面积时,我们通常指曲线和x轴之间的面积。您所计算的是间隔x=[-2,2]上曲线y=x^2+1和y=1之间的面积。@AkselA:查看添加的绘图是否有助于理解问题。@AkselA。我道歉。我对评论的回答不正确。应该去卢西安。我很清楚,你理解并清楚地描述了这些问题。
> n <- 1e6
> x <- runif(n, -2, 2)
> y <- runif(n, 0, 5)
> mean(x^2 + 1 - y >= 0) * 4 * 5
[1] 9.33014