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))

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 ...


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.