使用R制作特定的Graph

时间:2015-03-06 11:35:53

标签: r graph

借助蒙特卡罗方法,我需要确定Pi的值。 到目前为止,我有一个代码,通过一个介于0.1和1之间的圆半径的随机值给我Pi。接下来我需要做的是将变量半径绘制为Pi的数字,就像我试图在下面描述

     |
   Pi|~~~~~~~~~~~~    <- values
     |
     |______________  
     0.1     R      1
library("plotrix")
n = 400
z = runif(1, 0.1, 1)
R= z
x = runif(n, -R, R)
y = runif(n, -R, R)
plot(x, y, asp = 1, xlim = c(-1, 1))
#draw a square
rect( -R, -R, R, R)
#draw a circle 
draw.circle(0, 0, R, nv = 1000, border = NULL, col = NA, lty = 1, lwd = 1)
#
#test if points are in the circle (Pin=points in circle)
pin = sum(ifelse(sqrt(x^2 + y^2 <= R^2), 1, 0))
#pi is given by (4*n in circle/n total)
  4 * pin/n
plot(z, 4 * pin/n)

使用这段代码,我可以在整个图表中得到1分。我想要的是在图表上有100个点。所以很容易&#39;说,让代码通过不同的R确定100个pi值,并将它们绘制在一个图中。 这可能吗?我已经找了两天的答案,但到目前为止我没有取得任何进展..谢谢!

1 个答案:

答案 0 :(得分:0)

如何计算函数并运行一百次?获得值后,您可以将它们全部绘制在一起。使用for循环可以完成同样的事情。

这是一个例子。让我们先创建一个函数ppi:

ppi<-function(N=1000) {
    n = N
    z = runif(1, 0.1, 1)
    R= z
    x = runif(n, -R, R)
    y = runif(n, -R, R)
    pin = sum(ifelse(sqrt(x^2 + y^2 <= R^2), 1, 0))
    return(c(z, n, pin))
}

然后你可以运行100次(参见replicate()),然后使用一些绘图功能绘制结果。