Przybliżanie całek za pomocą symulacji Monte Carlo w R.

12

Jak aproksymować następującą całkę za pomocą symulacji MC?

-11-11|x-y|rexrey

Dzięki!

Edycja (jakiś kontekst): Próbuję nauczyć się korzystać z symulacji w celu przybliżenia całek i ćwiczę, gdy napotkałem pewne trudności.

Edytuj 2 + 3 : Jakoś się pomyliłem i pomyślałem, że muszę podzielić całkę na osobne części. Więc właściwie to rozgryzłem:

n <- 15000
x <- runif(n, min=-1, max=1)
y <- runif(n, min=-1, max=1)
mean(4*abs(x-y))
Moje imię
źródło
2
Jesteś na dobrej drodze! Twoja odpowiedź jest bardzo bliska poprawności. Brakuje ci jednej drobnej części. ( Wskazówka : co to jest pdf zmiennej losowej )? U(-1,1)
kardynał
2
To 0,5. Więc muszę pomnożyć przez dwa 2, aby dać: „mean (4 * abs (xy))”. Czy w końcu to dostałem?
Moje imię
3
(+1) Tak ! :) Być może będziesz musiał poczekać kilka (8?) Godzin, ale powinieneś rozważyć powrót i umieszczenie swojej edycji w odpowiedzi, aby inni użytkownicy (jak ja) mogli ją głosować. Witamy na stronie! Mam nadzieję, że nadal tu będziesz uczestniczyć. Twoje zdrowie. :)
kardynał
1
Należy dodać jeden punkt: uważam, że maksima są niezwykle przydatne w matematyce symbolicznej. Gdybym musiał sam wykonać obliczenia analityczne, miałbym ten sam problem co @EpiGrad. Ale w maksymach możesz zrobić integrate(integrate(abs(x-y), y, -1, 1), x, -1, 1);i uzyskać odpowiedź 8/3.
Karl
2
Dla zainteresowanych R, choć nie tak eleganckich przy kodzie maksima podanym przez Karla, można to zrobić integrate(Vectorize(function(y) integrate(function(x) abs(x-y), -1, 1)$value), -1, 1)i uzyskać przybliżenie liczbowe. Korzystanie z kubaturze pakiet adaptIntegrate(function(x) abs(x[1] - x[2]), c(-1, -1), c(1, 1))może być używany. Ma to na celu podanie kilku pomysłów na liczbową ocenę całek, które mogą się przydać, na przykład podczas testowania, czy symulacja działa poprawnie.
NRH

Odpowiedzi:

1

Dla porównania, całka o małych wymiarach jest zwykle bardziej efektywnie wykonywana za pomocą deterministycznej kwadratury zamiast Monte Carlo. Monte Carlo ma swoje wymiary od około 4 do 6 wymiarów. Oczywiście najpierw muszę się tego nauczyć w małych wymiarach ...

użytkownik873
źródło
2
Myślę, że dlatego to pytanie jest oznaczone pracą domową :-).
whuber
0

Możesz to zrobić w programie Excel za pomocą Tukhi .

Wchodzić

=tukhi.average(abs(2*rand()-1 - (2*rand()-1))) 

i naciśnij przycisk Uruchom.

Keith A. Lewis
źródło