Найти интегральное значение, используя метод MC - PullRequest
0 голосов
/ 09 мая 2018

У меня есть домашнее задание по теме «Методы Монте-Карло», и я застрял с одной задачей.

Задача следующая: Используя метод MC, найдите приблизительное значение интеграла (см. Рис. Ниже), где D - это область [от 0 до бесконечности) x [от 0 до бесконечности) x [от 0 до бесконечности). Также найдите значение ошибки для вероятности 0,99.

Интегральная картинка

То, что я сделал до сих пор, приведено в коде ниже.

Главный вопрос, который у меня возникает, это ... Какое распределение выбрать для сгенерированных значений? И какая основная логика стоит за этим?
В настоящее время я использовал обычное нормальное распределение с параметрами (0,1), чтобы получить некоторые начальные результаты, но, как показывают результаты, значение ошибки действительно велико, и поэтому оно не может быть лучшим решением.

Заранее спасибо!

n <- 100000
alfa <- 0.01 # 1-0.99
# võtame generaatori preagu normaaljaotusest, sest integraalfunktsiooni kuju on üsnagi sarnane 
# normaaljaotuse tihedusfunktsioonile

# gen <- function(n){
#   return(matrix(runif(3*n, 0, Inf),ncol=3))
# }
gen <- function(n){
  return(matrix(rnorm(3*n, 0, 1),ncol=3))
}

g <- function(x){
  #tihedus <- dunif(x[,1],0,Inf)*dunif(x[,2],0,Inf)*dunif(x[,3],0,Inf)
  tihedus <- rnorm(x[,1],0,1)*rnorm(x[,2],0,1)*rnorm(x[,3],0,1)
  return( (x[,1]+x[,2])*exp(-(x[,1]+x[,2]+2*x[,3]))/(x[,1]^2+x[,2]+x[,3]+1) / tihedus*((x[,1]>=0) + (x[,2]>=0) + (x[,3]>=0)) )
}
MC(gen, g, n, alfa)
...