Metoda Eulera-Maruyamy – metoda numerycznego rozwiązywania stochastycznych równań różniczkowych. Nazwa metody pochodzi od nazwiska japońskiego matematyka Gisiro Maruyamy (1916-1986), który rozszerzył metodę Eulera z 1768, stosowaną do numerycznego rozwiązywania równań różniczkowych zwyczajnych. Metoda ta jest jedną z niewielu metod numerycznych, które pozwalają metody numeryczne stosowane do równań deterministycznych rozszerzyć do równań stochastycznych.
Opis metody Równanie stochastyczne Niech dane będzie stochastyczne równanie różniczkowe postaci
oraz – zadany warunek początkowy (położenie cząstki w chwili początkowej ),
gdzie: – proces Wienera, – zadane funkcje procesu losowego
Poszukiwane jest rozwiązanie tego równania na przedziale
Analiza równania stochastycznego
O stochastycznym charakterze powyższego równania decyduje różniczka procesu losowego Wienera: gdyby była równa zeru, to proces byłby deterministyczny. Funkcja stojąca przed tą różniczka, pełni zaś rolę wzmacniania lub osłabiania efektu fluktuacji losowych.
Z drugiej strony, funkcja stojąca przed różniczką decyduje, na ile proces deterministyczny dominuje nad procesem losowym – gdyby funkcja ta była zerowa, to proces byłby czysto losowy.
Powyższe własności łatwo sprawdzić, rozwiązując podane dalej przykładowe równanie stochastyczne, zmieniając odpowiednio jego parametry.
Przybliżenie Eulera-Maruyamy Przybliżeniem Eulera-Maruyamy dokładnego rozwiązania powyższego równania jest łańcuch Markowa taki że:
zdarzenia losowe łańcucha zachodzą w dyskretnych chwilach czasu odległych od siebie o wartość skokową
– zadane zdarzenie początkowe, – zdarzenia obliczane wzorem rekurencyjnym:
przy czym:
– zadane funkcje
Cechą procesu Wienera jest, że różnica zmiennych losowych dla dowolnych chwil czasu takich że , ma rozkład normalny o średniej równej zeru i wariancji równej odległości czasowej rozważanych chwil . Wynika stąd, że zmienna losowa ma rozkład normalny o średniej równej zeru i wariancji
Przykład: Równanie Ornsteina-Uhlenbecka thumb|401x401px|Cztery losowe trajektorie procesu Ornsteina-Uhlenbecka dla θ = 1, σ = niebieska: położenie początkowe a = 10, μ = 0 pomarańczowa: położenie początkowe a = 0, μ = 0 zielona: położenie początkowe a = −10, μ = 0 czerwona: położenie początkowe a = 0, μ = −10 E(X) określa trajektorię, po której poruszałby się układ, gdyby czynniki losowe były zerowe (σ = 0).
Równanie stochastyczne Niech dane będzie stochastyczne równanie różniczkowe jednej zmiennej
o warunku początkowym
gdzie – stałe parametry; różniczka odpowiada za proces losowy Wienera.
Powyższe równanie opisuje tzw. proces Ornsteina-Uhlenbecka.
Zamiana na postać dyskretna Zgodnie z metodą Eulera-Maruyamy zamienia się to równanie na postać dyskretną
Ponieważ to otrzymuje się równania rekurencyjne
gdzie – zmienne losowe o rozkładzie normalnym i wariancji
Warunek początkowy przyjmie postać:
Analiza zależności ruchu układu od parametrów równania Zmieniając parametry równania stochastycznego, można otrzymać ruch układu w zależności od różnych warunków otoczenia, z jakim układ oddziałuje. Np. przyjmując wartość parametru otrzyma się ruch czysto deterministyczny, przyjmując wartość parametru otrzyma się ruch czysto losowy, parametr określa położenie, do którego zmierza układ po dłuższym czasie, jeżeli czynniki losowe nie są zbyt duże, tj. gdy ma odpowiednio małą wartość.
Na rysunku pokazano cztery trajektorie układu w takich warunkach. Mimo różnych wartości położeń początkowych układu (na rys. oznaczonych literą a), układ zmierza w kierunku położenia i oscyluje wokół niego.
Przykład. Przykładem takiego układu stochastycznego jest wahadło, w które uderzałają z losowych kierunków czastki otoczenia, powodując tłumienie jego drgań; niezależnie od amplitudy początkowej (nawet bliskiej 180 stopni) wahadło będzie oscylacyjne zmierzać w stronę najniższego położenia, a po odpowiednio długim czasie będzie oscylować wokół niego.
Kod programu Poniżej podano przykład kodu w języku Python służącego do całkowania równania Ornsteina-Uhlenbecka.
Na ilustracji pokazano wynik symulacji komputerowej dla przyjętych w programie wartości parametrów.thumb|Pięć przykładowych rozwiązań stochastycznego równania różniczkowego opisującego proces Ornsteina-Uhlenbecka, znalezionych numerycznie za pomocą metody Eulera-Maruyamy dla θ = 0.7, σ = 0.06, μ = 1.4 i identycznych położeń początkowych X= 0; na osi pionowej jest położenie układu, na osi poziomej czas. Każde rozwiązanie przedstawia możliwą, losowo przebiegającą trajektorią układu. Dla dłuższych czasów ruchu trajektorię ukladu oscylują wokół punktu X=μ =1.4|400x400px
import numpy as np import matplotlib.pyplot as plt
#Dane: liczba_symulacji = 5 t_0 =0 # chwila początkowa t_1 =7 # chwila końcowa N =200 # liczba punktów podziału przedziału
theta = 0.7 mu = 1.4 sigma = 0.06
# Definicja funkcji generującej liczbę losową z rozkładu normalnego o wariancji Dt def DW(Dt): return np.random.normal(loc=0.0,scale=np.sqrt(Dt))
# Część główna programu Dt = (t_1 - t_0) / N
# Tablica dyskretnych chwil czasu t = np.arange(t_0, t_1, Dt)
# Inicjalizacja tablicy do zapisu kolejnych położeń cząstki Y = np.zeros(N)
for _ in range(liczba_symulacji): Y = 0 for i in range(0, N-1): Y[i+1]=Y[i] + theta*(mu -Y[i])*Dt +sigma * DW(Dt)
plt.plot(t, Y) # Tworzy wykres kolejnej symulacji
plt.grid(True) # Dodaje siatkę do wykresu plt.show()
Zobacz też równanie Langevina
Przypisy
Bibliografia
P. Jackel, Monte Carlo Methods in Finance, Wiley, 2002, .
Kategoria:Metody numeryczne Kategoria:Procesy stochastyczne Kategoria:Leonhard Euler