algorytm.org

Całkowanie numeryczne - metoda Monte Carlo II



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Całkowanie numeryczne - metoda Monte Carlo II
Ocena użytkowników:***** / 18
SłabyŚwietny 
Wpisany przez Tomasz Lubiński, 10 maja 2008 11:00

Załóżmy, że chcemy obliczyć całkę z funkcji f(x) w przedziale <xp; xk>. Definicja całki oznaczonej Riemana, mówi nam, że wartość całki równa jest polu obszaru pod wykresem krzywej w zadanym przedziale całkowania. Przedstawiona tutaj metoda Monte Carlo polega na wylosowaniu n punktów znajdujących się w obrębie przedziału całkowania i na tej podstawie obliczeniu średniej wartości funkcji w tym przedziale.
Metoda Monte-Carlo
Zatem jeżeli losowane punkty oznaczymy jako: x1, x2, ... xn, to wartość średnią obliczymy następująco:
f_{sr} = \frac{f(x_1) + f(x_2) + ... + f(x_n)}{n}
A przybliżoną wartość całki mnożąc uzyskaną wartość średnią przez długość całkowanego przedziału:
f_{sr} * |x_k - x_p|
Wraz ze zwiększaniem się liczby punktów pomiarowych n, rozkładają się one coraz bardziej równomiernie w obrębie wyznaczonego przedziału dając coraz dokładniejszy wynik. Z drugiej zaś strony uważać należy by przy dużych ilościach punktów pomiarowych nie przekroczyć zakresu używanych zmiennych podczas dodawania przy obliczaniu wartości średniej. Zabezpieczyć się można przed takim przypadkiem obliczając wartość średnią następująco:
f_{sr} = \frac{f(x_1)}{n} + \frac{f(x_2)}{n} + ... + \frac{f(x_n)}{n}
ale z kolei mamy tutaj problem nakładania się na siebie zaokrągleń z dzielenia przez n.

Przykład:
Załóżmy, iż na wykresie powyżej zakres całkowania to: xp = 2, xk = 10
Wartości kolejnych wylosowanych punktów to: x1 = 2.4, x2 = 3.1, x3 = 6, x4 = 9, x5 = 9.5, a wartości funkcji całkowanej w tych punktach to: f(x1) = 3, f(x2) = 3.5, f(x3) = 5, f(x4) = 5.1, f(x5) = 4.4
Najpierw obliczymy wartość średnią: (3 + 3.5 + 5 + 5.1 + 4.4) / 5 = 21 / 5 = 4.2
A następnie pomnożymy tą wartość przez długość przedziału całkowania otrzymując przybliżoną wartość całki: (10 - 2) * 4.2 = 8 * 4.2 = 33.6

Przykład w JavaScript:
Funkcja f(x):
Początek przedziału całkowania:
Koniec przedziału całkowania:
Dokładność całkowania:

Implementacje
AutorJęzyk
programowania
KomentarzOtwórzPobierzOcena
Tomasz LubińskiC#MS Visual Studio .net
.cs
.cs
***** / 1
Tomasz LubińskiC/C++
.cpp
.cpp
***** / 1
Tomasz LubińskiDelphi/Pascal
.pas
.pas
***** / 1
Tomasz LubińskiJava
.java
.java
***** / 1
Tomasz LubińskiJavaScript
.js
.js
***** / 0
 
Dodaj własną implementację tego algorytmu
  • Zaloguj się na stronie
Plik:
Język
programowania:
Komentarz:
  By móc dodać implementacje zaloguj się na stronie

Poprawiony: 04 października 2012 15:50
Dodaj komentarz