Numeryczna metoda rozwiązywania stochastycznych równań różniczkowych
W matematyce metoda Milsteina jest techniką przybliżonego numerycznego rozwiązania stochastycznego równania różniczkowego . Jej nazwa pochodzi od Grigorija N. Milsteina, który po raz pierwszy opublikował ją w 1974 roku.
Opis
Rozważ autonomiczne stochastyczne równanie różniczkowe Itō :
re
X
t
= za (
X
t
)
re
t + b (
X
t
)
re
W
t
{\ Displaystyle \ operatorname {d} X_ {t} = a (X_ {t}) \, \ operatorname {d} t + b (X_{t})\,\mathrm {d} W_{t}}
z
warunkiem początkowym
,
0
że
przedziale
0
proces
gdzie
pewnym
i załóżmy
oznacza Wienera
, chcemy rozwiązać to SDE w czas
0
[ , T ]
{\ Displaystyle [0, T]}
. Wtedy
przybliżenie Milsteina do prawdziwego rozwiązania to
łańcuch
\ displaystyle X}
Markowa zdefiniowany w następujący sposób:
X
{
podzielić przedział na równe podprzedziały szerokości
Δ t > {\
0
\ Delta t> 0}
Displaystyle
0
Displaystyle
: N
{
\
N
}
0
=
τ
0
<
τ
1
< ⋯ <
τ
N
= T
z
τ
n
: = n Δ t
i
Δ t =
T N
{\ Displaystyle 0 = \ tau _ {0}<\ tau _ {1}<\ kropki <\ tau _{N}=T{\text{ z }}\tau _{n}:=n\Delta t{\text{ i }}\Delta t={\frac {T}{N}}}
ustaw
Y
0
=
x
0
;
{\ Displaystyle Y_ {0} = x_ {0};}
rekurencyjnie zdefiniuj
Y
n
{\ Displaystyle Y_ {n}}
dla
1 ≤ n ≤ N
{\ Displaystyle 1 \ równoważnik n \ równoważnik N}
przez:
Y
n + 1
=
Y
n
+ za (
Y
n
) Δ t + b (
Y
n
) Δ
W
n
+
1 2
b (
Y
n
)
b ′
(
Y
n
)
(
( Δ
W
n
)
2
- Δ t
)
{\ Displaystyle Y_ {n + 1} = Y_ {n} + a (Y_ {n}) \ Delta t + b (Y_ {n}) \ Delta W_ {n} + {\ Frac {1} {2}} b(Y_{n})b'(Y_{n})\left((\Delta W_{n})^{2}-\Delta t\right)}
gdzie
b ′
{\ Displaystyle b'}
oznacza pochodną b
i
( x )
{\ Displaystyle b (x)}
w odniesieniu do
x
{\ Displaystyle x}
:
Δ
W
n
=
W
τ
n + 1
-
W
τ
n
{\ Displaystyle \ Delta W_ {n} = W _ {\ tau _ {n + 1}} -W_ {\ tau _ {n}}}
są niezależnymi i identycznie rozłożonymi normalnymi zmiennymi losowymi o wartości oczekiwanej zero i wariancji
Δ t
{\ displaystyle \ Delta t}
. Wtedy
Y
n
{\ Displaystyle Y_ {n}}
będzie w przybliżeniu
{
dla
\ Displaystyle 0 \
równoważnik
≤
0
n ≤ N
i
n \ równoważnik
N }
. \displaystyle N}
zwiększa się da lepsze przybliżenie.
Należy zauważyć, że gdy
b ′
(
Y
n
) =
0
{\ Displaystyle b' (Y_ {n}) = 0}
, czyli termin dyfuzji nie zależy od , ta metoda jest równoważna z
X
t
{\ Displaystyle X_ {t}}
Metoda Eulera-Maruyamy .
, która z kolei ma ten sam
słaby
słaby
, jak i silny rząd zbieżności , który jest lepszy od metody Eulera – Maruyamy rząd zbieżności,
Δ t
{\ displaystyle \ Delta t} t}
, ale gorszy silny rząd zbieżności,
Δ t
{\ displaystyle {\ sqrt {\ Delta t}}}
.
Intuicyjne wyprowadzenie
W tym wyprowadzeniu przyjrzymy się tylko geometrycznemu ruchowi Browna (GBM), którego stochastyczne równanie różniczkowe jest określone wzorem:
re
X
t
= μ X
re
t + σ X re
W
t
{\ Displaystyle \ operatorname {d} X_ {t} = \ mu X \ operatorname {d} t + \ sigma XdW_ {t}}
ze stałymi rzeczywistymi i
σ
displaystyle
{ \
\ sigma}
. Korzystając
z lematu Itō otrzymujemy:
re
ln
X
t
=
(
μ -
1 2
σ
2
)
re
t + σ
re
W
T
{\ Displaystyle \ operatorname {d} \ ln X_ {t} = \ lewo (\ mu - {\ Frac {1} {2} }}\sigma ^{2}\right)\mathrm {d} t+\sigma \mathrm {d} W_{t}}
Zatem rozwiązaniem GBM SDE jest:
X
t + Δ t
=
X
t
exp
{
∫
t
t + Δ t
(
μ -
1 2
σ
2
)
re
t +
∫
t
t + Δ t
σ
re
W
u
}
≈
X
t
(
1 + μ Δ t -
1 2
σ
2
Δ t + σ Δ
W
t
+
1 2
σ
2
( Δ
W
t
)
2
)
=
X
t
+ za (
X
t
) Δ t + b (
X
t
) Δ
W
t
+
1 2
b (
X
t
)
b ′
(
X
t
)
( ( Δ
W
t
)
2
- Δ t )
{\ Displaystyle {\ rozpocząć {wyrównane} X _ {t + \ Delta t} i = X_ {t} \ exp \ lewo \ {\ int _ {t} ^ {t + \ Delta t}\left(\mu -{\frac {1}{2}}\sigma ^{2}\right)\mathrm {d} t+\int _{t}^{t+\Delta t}\sigma \mathrm {d} W_{u}\right\}\\&\około X_{t}\left(1+\mu \Delta t-{\frac {1}{2}}\sigma ^{2}\Delta t+ \sigma \Delta W_{t}+{\frac {1}{2}}\sigma ^{2}(\Delta W_{t})^{2}\right)\\&=X_{t}+a (X_{t})\Delta t+b(X_{t})\Delta W_{t}+{\frac {1}{2}}b(X_{t})b'(X_{t})( (\Delta W_{t})^{2}-\Delta t)\end{wyrównane}}}
Gdzie
za ( x ) = μ x , b ( x ) = σ x
{\ Displaystyle a (x) = \ mu x, ~ b (x) = \ sigma x}
Patrz rozwiązanie numeryczne przedstawiono powyżej dla trzech różnych trajektorii.
Numeryczne rozwiązanie dla przedstawionego właśnie stochastycznego równania różniczkowego, dryf jest dwukrotnie większy od współczynnika dyfuzji.
Implementacja komputerowa
Poniższy kod Pythona implementuje metodę Milsteina i używa jej do rozwiązania SDE opisującego geometryczny ruch Browna zdefiniowany przez
{
re
Y
t
= μ Y
re
t + σ Y
re
W
t
Y
0
=
Y
init
{\ Displaystyle {\ rozpocząć {przypadki} dY_ {t} = \ mu Y \, {\ operatorname {d}} t + \ sigma Y \ ,{\mathrm {d}}W_{t}\\Y_{0}=Y_{\text{init}}\end{przypadki}}}
0
# -*- kodowanie: utf-8 -*- # Metoda Milsteina import numpy as np import matplotlib.pyplot as plt num_sims = 1 # Jeden przykład # Jedna sekunda i tysiąc punktów siatki t_init , t_end = , 1 N = 1000 # Oblicz 1000 punkty siatki dt = float ( t_end - t_init ) / N ## Warunki początkowe y_init =
1 μ , σ = 3 , 1 # dw Proces losowy def dW ( Δt ): """Rozkład normalny próby losowej""" return np . przypadkowy . normal ( loc = 0.0 , scale = np . sqrt ( Δt )) # wektory do wypełnienia ts = np . aranżacja ( t_init
0
, t_koniec + dt , dt ) ys = np . zera ( N + 1 ) ys [ ] = y_init # Pętla for _ in range ( num_sims ) for i in range ( 1 , ts . size ): t = ( i - 1 ) *
dt y = ys [ i - 1 ] # Metoda Milsteina dw_ = dW ( dt ) ys [ i ] = y + μ * dt * y + σ * y * dw_ + 0,5 * σ ** 2 * y * ( dw_ ** 2 - dt ) cz
0
. plot ( ts , ys ) # Działka plt . xlabel ( "czas(y)" ) plt . siatka () h = pl . yetykieta ( "y" ) h . set_rotation ( ) plt . pokaż ()
Zobacz też
Dalsza lektura
Kloeden, PE i Platen, E. (1999). Numeryczne rozwiązanie stochastycznych równań różniczkowych . Springera w Berlinie. ISBN 3-540-54062-8 . {{ cite book }}
: CS1 maint: wiele nazwisk: lista autorów ( link )