kpwie.doc

(569 KB) Pobierz

Obliczanie całek metodą Monte-Carlo

 

Metoda Monte Carlo – całka pojedyncza

 

Mamy obliczyć przybliżoną wartość In całki oznaczonej

 

                            (129)

 

przy założenie, że f(x) jest funkcją ciągłą w przedziale domkniętym [a;b]

Następnie n-krotnie generujemy realizację x zmiennej losowej X o rozkładzie równomiernym w przedziale [a,b], otrzymujemy w rezultacie ciąg liczb x1, x2, ..., xn,

 

Przybliżoną wartość całki określa wzór

 

                            (130)

 

Zbieżność przybliżonej wartości całki In do jej dokładnej wartości jest gwarantowana w sensie probalistycznym, tzn., że dla każdego ε>0 zachodzi relacja:

 

                            (131)

 

gdzie P jest prawdopodobieństwem, przy czym błąd metody monte Carlo można określić wzorem

                            (132)

 

Maszyny typowe zazwyczaj dysponują generatorem liczb losowych o rozkładzie równomiernym w przedziale [0,1], zachodzi zatem konieczność przeliczania wylosowanej realizacji Y z przedziału [0,1], na realizację zmiennej losowej X o rozkładzie równomiernym w przedziale [a, b]. Wzory poniżej, to ilustrują:

Przeliczanie zmiennych losowych Y na X

 

X=(b-a)Y+a                            (133)

 

Przeliczanie realizacji zmiennych losowych Y na X

 

x=(b-a)y+a                            (134)

 

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 

 

Równania różniczkowe zwyczajne z warunkami początkowymi

 

Równania różniczkowe są wykorzystywane do odwzorowania wielu problemów z zakresu różnych nauk, które dotyczą zmian jednej zmiennej względem innej zmiennej. Wiele problemów świata rzeczywistego opisywanych przez równania różniczkowe jest za bardzo złożonych, aby uzyskać rozwiązanie dokładne (analityczne), należy znaleźć rozwiązanie przybliżone. Są dwa sposoby aby uzyskać rozwiązanie przybliżone. Po pierwsze można dokonać uproszczenia zadanego równania różniczkowego do takiej postaci, dla której znamy rozwiązanie dokładne, wówczas uproszczone równanie będzie przybliżało rozwiązanie równania zadanego. Drugim sposobem jest zastosowanie jednej z metod numerycznych w celu przybliżenia rozwiązania zadanego równania.

 

Metody różnicowe jednokrokowe:

-          metody Eulera;

-          metody Rundego-Kutty

-          metody Rundego-Kutty-Fehenberga

Metoda Eulera

Rozpatrzmy zadanie znalezienia funkcji y=y(t), które dla spełnia równanie różniczkowe zwyczajne pierwszego rzędu:

                       (7)

oraz warunek początkowy

y(a)=y0                                  (8),

 

gdzie f jest daną funkcją dwu zmiennych. Warunek wystarczający istnienia i jednoznaczności rozwiązania zadania (7) oraz (8) jest warunek ciągłości funkcji f(t,y)

 

Metoda ta rzadko jest używana w praktyce, natomiast ze względu na jej prostotę, zostanie przedstawiona w celu zobrazowania i zrozumienia technik stosowanych w bardziej zaawansowanych metodach, pomijając przy tym złożone działania matematyczne. Przedmiotem rozważań będzie poniższe równanie.

 

, gdzie oraz y(a)=a               (10)

 

Na rozwiązanie powyższego zagadnienia będziemy obliczać przybliżone wartości funkcji yi=y(ti), gdzie ti=a+ih, h=(b-a)/N, dla którego i=(0,1, ..., N), gdzie ti nazywane są punktami węzłowymi, natomiast h odległością między nimi.

Rozwiniemy y(t) w szereg Taylora w celu wyprowadzenia metody Eulera. Zakładając, że y(t) jest jedynym rozwiązaniem (10) oraz posiada drugą pochodną, która jest ciągła w przedziale [a, b] wówczas dla każdego i=1, 2, ..., N.

Wykorzystując powyższe założenia możemy zapisać:

 

(11), gdzie

 

Oznaczamy h=ti+1-ti, wówczas otrzymujemy:

 

(12)

 

Użyjemy podstawienia y’(t)=f(t, y), wówczas otrzymujemy:

(13)

Zapisując ωi≈y(ti) oraz pomijając błąd przybliżenia otrzymujemy ωi+1i+hf(ti, ωi) (14)

Powyższy wzór nazywamy metodą Eulera – wzór ten nazywany jest inaczej równaniem różniczkowym, gdyż można zapisać:

(15)

Aby wyznaczyć wartość szukanej funkcji y(x) w następnym kroku h, wykorzystujemy poprzednią wartość funkcji oraz wielkości zmian funkcji – dzięki pochodnej. Natomiast uwzględniając błąd przybliżenia wzór (13) przyjmuje postać:

 

, gdzie (16)

 

Lokalny błąd dyskretyzacji τi+1(h)

 

(17)

 

dodatkowo możemy określić krok h, dla którego błąd lokalny jest mniejszy od zadanej dokładności δ

 

, gdzie

 

Globalny błąd dyskretyzacji g(x)

g(t)= ω(t)-y(t) (19)

Dla wybranego punktu ti możemy zapisać:

gii-y(ti) (20), wówczas

 

, gdzie L- liczba Lipschnitz`a

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 

 

Metoda Eulera – wstecz

Powyższe rozważania dotyczyły metody Eulera w przód, ponieważ krok spełniał warunek h>0. W analogiczny sposób można wyprowadzić metodą Eulera wstecz przyjmując h<0, wówczas otrzymujemy:

 

wi+1 = wi + hf (ti+1, wi+1)               (22)

 

 

wi+1(k) = wi + hf (ti+1, wi+1(k-1)              (23)

 

Metoda wstecz różni się w stosunku do metody w przód argumentami funkcji f.

 

Metoda w przód wykorzystuje do obliczenia przybliżenia wartości z poprzedniego kroku, natomiast metoda wstecz jest równaniem uwikłanym, ponieważ aby obliczyć kolejne przybliżenie wi+1 wykorzystujemy wartości z poprzedniego kroku oraz poszukiwaną wartość wi+1. Takiego równania nie można rozwiązać w sposób bezpośredni. Aby rozwiązać takie równanie (23) należy zastosować proces iteracyjny, czyli poszukujemy kilkakrotnie wi+1(k), stojącej po prawej stronie równania podstawiając jako wi+1(k-1) - lewa strona równania, wynik przybliżenia z poprzedniej iteracji (k-1). Proces trwa do momentu, kiedy spełniony zostanie warunek:

 

|wi+1(k) - wi+1(k-1)| ≤ ε                  (24)

gdzie  ε - tolerancja obliczeń

 

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 

Metody Rungego-Kutty

Powszechnie na całym świecie stosuje się metody Rungego–Kutty czwartego rzędu. Polegają one na rozwiązaniu zagadnienia:

  gdzie tÎ [a,b] oraz y(a)=a      (25)

 

i przedstawieniu różnicy funkcji y(t) w punktach ti+1 oraz ti w postaci:

                   

wi+1 - wi = lub inaczej  wi+1 – wi = h0 (ti,wi,h)       (26)

gdzie m oznacza rząd metody, cj są stałymi, a

 

gdzie αj, βj, γj, δlj – stałe

h - krok całkowania

 

Określenie stałych cj, αj, βj otrzymujemy poprzez rozwinięcie funkcji f(t,y) w szereg Taylora w otoczeniu punktu ti

 

Metody R-K – metoda 2 rzędu

 

Metoda wyprowadzona przez rozwinięcie f(t,y) w szereg Taylora 2 rzędu pozwala określić stałe c1, a1,b1, c2, a2, b2 :

 

 

Metoda punktu środkowego:

 

C1 = 0                            C2 = 1                            α1 = 0                            α2 = h/2              b1 = 0                            b2 = ½                      (28)

 

wówczas możemy zapisać:

k1=hf (ti,wi)              k2=hf (ti + ½ h, wi + ½ k1)

 

ostatecznie:

wi+1=wi+k2

lub

wi+1=wi + hf(ti + h/2, wi + h/2 * f(ti, wi))

 

Interpretacja graficzna:

f1=f(ti,wi)            f2=f(ti + h/2, wi + h/2 * f1)

 

 

 

Stosując metody Rungego–Kutty 2 rzędu , rozwiązać następujące równanie różniczkowe:

 

y’=y-t2 + 1        0£ t £2        y(0)=0,5

 

dla N = 10  wtedy  h = 0,2;  ti = i×h ; w0 = 0,5    oraz

metoda punktu środkowego  wi+1 = 1,22 wi – 0,0088 i2 + 0,218

 

 

Metoda zmodyfikowana Eulera

wi+1 = 1,22 wi - 0,0088 i2 + 0,216

 

Metoda Heana dla i = 0, 1, ..., 9

wi+1 = 1,22 wi - 0,0088 i2 + 0,2173

 

Rozwiązanie dokładne ma postać:

y(t) = (t2+1) - 0,5 et

 

Metody R-K rzędu 4

 

Metoda wyprowadzona przez rozwinięcie f(t,y) w szereg Taylora 4 rzędu, pozwala określić stałe we wzorze (wzór ogólny R-K). Poniżej przedstawiono najczęściej stosowaną metodę 4 rzędu

 

k1 = hf (ti, wi)

k2 = hf (ti + ½ *h, wi + ½ *k1)

k3 = hf (ti + ½ *h, w...

Zgłoś jeśli naruszono regulamin