Я пытаюсь использовать метод отклонения в Монте-Карло в R, чтобы решить значение интеграции функции:
f <- function(x){
abs((cos(x))/x)*exp(log(x)-3)^3
}
Пределы интеграции [0,Inf]
I Я использую следующие коды:
set.seed(1234)
sampled_x = runif(1000,0,1)
accept = c()
for(i in 1:length(sampled_x)){
U = runif(1, 0, 1)
if(dunif(sampled_x[i], 0, 1)*3*U <= dbeta(sampled_x[i], 6, 3)) {
accept[i] = 'Yes'
}
else if(dunif(sampled_x[i],0,1)*2*U > dbeta(sampled_x[i], 6, 3)) {
accept[i] = 'No'
}
}
T = data.frame(sampled_x, accept = factor(accept, levels= c('Yes','No')))
n<-length(T)
for (i in 1:n) {
x<-runif(n)
I<-sum(f(x))
}
I
Однако я понял, что мое решение, по-видимому, неверно. Пожалуйста, помогите мне исправить это.
Основная проблема заключается в использовании метода отклонения при Монте-Карло для решения числового значения интеграла между 0
и Inf.
Я был бы признателен, если бы решение включало вычисление площади под кривой, используя точки.
С уважением