gre*_*0rn -1 r integral montecarlo calculus
尝试使用蒙特卡洛方法求 x^2 cosx 的积分(o 到 pi/2)。这是我第一次,所以需要一些指导。要生成随机数,我应该将积分的极限变换为 (0,1) 还是可以生成具有给定极限(0 到 pi/2)的随机数?
像这样的东西?
将积分从 (o 到 pi/2) 转换为 (0to 1),从而将函数转换为 1/x^2 sinx 生成随机数 rnorm(10000,0,1)
或者有没有办法生成像这样的随机数 rnorm(10000,0,1)*pi/2 而不必转换积分的极限
您可以在任何您想要的区间内均匀地生成随机数,例如runif(1000,0,pi/2)将生成大小为 1000 的样本,均匀分布在 [0,π/2] 上。你肯定不想rnorm在这里使用——rnorm生成正态分布的数据,而不是均匀分布的数据。
你可以像这样进行蒙特卡罗模拟:
> f<-function(x) x^2 * cos(x)
> mean(f(runif(100000,0,pi/2)))*(pi/2)
[1] 0.4672985
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用 R 进行集成integrate:
> integrate(f,0,pi/2)
0.4674011 with absolute error < 5.2e-15
Run Code Online (Sandbox Code Playgroud)