Я начал Msc, где мы изучаем пакет R, но у меня проблемы с упражнением.Упражнение таково:
"Предположим, что мы хотим оценить ∫x2 (с определенными значениями от 1 до 0), используя базовый метод Монте-Карло. По сути, мы бросаем дротики на кривую и подсчитываем количество выпадающих дротиковниже кривой Алгоритм метода состоит из:
1) Инициализация: хиты = 0
2) для (i в 1: N): генерировать два случайных числа, U1, U2между 0 и 1. Если U2 <(U1) ^ 2, то хиты = хиты + 1 конец для. </p>
3) Оценка площади = хиты / N
Предоставить R-код с использованием цикловдля реализации этого алгоритма Монте-Карло. Сколько времени занимает ваша функция? Предоставьте более эффективный код, избегая предыдущих циклов. Проиллюстрируйте выигрыш в эффективности, который можно получить путем векторизации вашего кода. "
У меня есть эти коды,но я думаю, что делаю это неправильно.
montecarlo <- function(N){
hits=0
for (i in 1:N){
U1 <- runif(1, 0, 1)
U2 <- runif(1, 0, 1)
if (U2 < (U1)^2){
hits = hits+1}}
return(hits/N)
}
montecarlo2 <- function(N){
hits=0
U1 <- runif (1:N, 0, 1)
U2 <- runif (1:N, 0, 1)
hits= hits+1 [U2<(U1)^2]
return(hits/N)
}
Для первого метода с помощью циклов я получил (например):
> montecarlo(23)
[1] 0.3478261
> montecarlo(852)
[1] 0.3591549
> montecarlo(8563255)
[1] 0.3332472
Можете ли вы мне помочь?Большое спасибо: S.