Я не знаю, почему следующий код не дает мне полный круг и дает только его части. Также я не знаю, как я могу показать свои точки на круге или вне его в квадрате с центром в (0,0) с r = 1 и a = 2.
library("plotrix")
n<-1000
plot.new()
frame()
x<-runif(n,-1,1)
y<-runif(n,-1,1)
for (i in 1:n) { plot(x[i],y[i])}
draw.circle(0,0,1,nv=1000,border=NULL,col=NA,lty=1,lwd=1)
Здесь вывод
Итак, я исправил его до следующего, и когда у меня есть 100 точек, график выглядит следующим образом. Почему полный круг не отображается?
plot(x,y)
draw.circle(0,0,1,nv=1000,border=NULL,col=NA,lty=1,lwd=1)
Итак, благодаря Fernando я зафиксировал сюжет, и теперь он выглядит так, но я хочу, чтобы он имел диапазон от (-1 до 1) для x, как и для y. xlim не работает. Вы знаете, что неправильно?
magnitude = function(x, y) {
stopifnot(isTRUE(all.equal(length(x),length(y))))
return (sqrt(x^2 + y^2))
}
library("plotrix")
monte.carlo.pi<-function(n,draw=FALSE)
{
circle.points<-0
square.points<-0
x<-runif(n,-1,1)
y<-runif(n,-1,1)
for (i in 1:n)
{
#if ((x[i])^2 + (y[i])^2 <=1)
if (magnitude(x[i],y[i])<=1)
{
circle.points<-circle.points+1
square.points<-square.points+1
} else
{
square.points<-square.points+1
}
}
if (draw==TRUE)
{
plot.new()
frame()
plot(x,y,asp=1,xlim=c(-1,1),ylim=c(-1,1))
draw.circle(0,0,1,nv=1000,border=NULL,col=NA,lty=1,lwd=1)
rect(-1,-1,1,1)
return(4*circle.points / square.points)
}
}
и вызовите функцию следующим образом:
monte.carlo.pi(100,T)
Текущий график выглядит следующим образом: