gpt4 book ai didi

algorithm - 蒙特卡罗圆周率法

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:05:09 26 4
gpt4 key购买 nike

我尝试在 R 中计算 Monte Carlo pi 函数。我在代码中遇到了一些问题。现在我写这段代码:

ploscinaKvadrata  <- 0
ploscinaKroga <- 0
n = 1000
for (i in i:n) {
x <- runif(1000, min= -1, max= 1)
y <- runif(1000, min= -1, max= 1)
if ((x^2 + y^2) <= 1) {
ploscinaKroga <- ploscinaKroga + 1
} else {
ploscinaKvadrata <- ploscinaKvadrata + 1
}
izracunPi = 4* ploscinaKroga/ploscinaKvadrata
}

izracunPi

这不起作用,但我不知道如何修复它。

我还想写一个代码来绘制这个(正方形内有圆圈和点)。

最佳答案

这是一个矢量化版本(你的数学也有问题)

N <- 1000000
R <- 1
x <- runif(N, min= -R, max= R)
y <- runif(N, min= -R, max= R)
is.inside <- (x^2 + y^2) <= R^2
pi.estimate <- 4 * sum(is.inside) / N
pi.estimate
# [1] 3.141472

就绘制点而言,您可以这样做:

plot.new()
plot.window(xlim = 1.1 * R * c(-1, 1), ylim = 1.1 * R * c(-1, 1))
points(x[ is.inside], y[ is.inside], pch = '.', col = "blue")
points(x[!is.inside], y[!is.inside], pch = '.', col = "red")

但我建议您使用较小的 N 值,例如 10000。

关于algorithm - 蒙特卡罗圆周率法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15186163/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com