首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Montecarlo方法计算r-椭圆面积

用Montecarlo方法计算r-椭圆面积
EN

Stack Overflow用户
提问于 2013-12-15 16:56:11
回答 2查看 2.6K关注 0票数 3

我需要使用Montecarlo方法计算eclipse的面积(a=6 b=3)。此外,我还必须绘制一个图(图)的结果,里面的点红色和外面的黑色。最后,我要比较一下"Montecarlo结果“和”规则结果“。

方程是(x^2)/36+(y^2)/9=1

该方法必须有100000个答复。

我就是这么做的。很明显这不管用。

代码语言:javascript
复制
set.seed(157619)

n <- 100000

xmin <- (-6)
xmax <- (+6)

ymin <- (-3)
ymax <- (+3)

rx <- (xmax-xmin)/2
ry <- (ymax-ymin)/2


outa <- runif(n,min=xmin,max=xmax)
outb <- runif(n,min=ymin,max=ymax)

dx <- outa*2
dy <- outb*2

ly <- dy<=(ry^2); my <- dy>(ry^2)
lx <- dx<=(ry^2); mx <- dx>(rx^2)

这是一个适用于圆圈的示例代码:

代码语言:javascript
复制
n <- 200
xmin <- -1; xmax <- 1
r <- (xmax-xmin)/2
out <- runif(n,min=xmin,max=xmax)
x <- matrix(out,ncol=2)
d <- x[,1]^2 + x[,2]^2
l <- d<=(r^2); m <- d>(r^2)
win.graph(7,7.8) # così è quadrato
plot(c(xmin,xmax),c(xmin,xmax),type="n")
plot(x[l,1],x[l,2])
points(x[m,1],x[m,2],col="red",pch=19)
(p <- sum(l)/length(l))
p*4
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-15 17:12:42

我怀疑这是家庭作业,但我们现在开始:

代码语言:javascript
复制
set.seed(42)
n <- 1e5
xmax <- 6
ymax <- 3

x <- runif(n, 0, xmax)
y <- runif(n, 0, ymax)

inside <- (x^2)/36+(y^2)/9 <= 1

plot(x, y, pch=16, cex=0.5, col=inside+1)

代码语言:javascript
复制
mean(inside) * (xmax*ymax) *4
#[1] 56.54376
pi*6*3
#[1] 56.54867
票数 3
EN

Stack Overflow用户

发布于 2013-12-15 17:21:25

代码语言:javascript
复制
set.seed(1)
n = 1000
a = 6
b = 3
x.samp = runif(n, -a, a)
y.samp = runif(n, -b, b)

p.in = (x.samp/a)^2 + (y.samp/b)^2 <= 1

S = 4*a*b*sum(p.in)/n
print(S)

plot(x.samp, y.samp, col = p.in + 1)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20597155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档